Transcript 슬라이드 1
교육일 : 2009년 6월 11일 안드로이드 SMS 구조 분석 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 1 1 SMS 구조 1.1 SMS Protocol Stack MS SMSC Mobile Station Service Center SM-AL SM-AL Application layer Application layer 수신 메시지 보여줌 수신 메시지 보여줌 발신메시지 작성 발신메시지 작성 SM-TL SM-TL Transfer layer Transfer layer TPDU를 구성 SMS-GMSC Gayeway MSC SMS-IWMSC MSC Mobile Switching Center TPDU를 구성 Inter Working MSC SM-RL SM-RL SM-RL SM-RL Relay layer Relay layer Relay layer Relay layer TPDU Type TPDU Type TPDU Type TPDU Type 메시지 전달 메시지 전달 메시지 전달 메시지 전달 SM-LL SM-LL SM-LL SM-LL Link layer Link layer Link layer Link layer 물리적인 메시지 물리적인 메시지 물리적인 메시지 물리적인 메시지 전달 망구조와 관련 전달 망구조와 관련 전달 망구조와 관련 전달 망구조와 관련 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 2 1 SMS 구조 1.2 MS SMSC Transactions SM-AL Application layer 수신 메시지 보여줌 발신메시지 작성 AL이 TL에게 서비스를 받음 SM-TL Transfer layer TPDU를 구성 메시지 타입 전송 방향 설명 SMS-DELIVER SMSC MS 새로운 메시지를 받았을 경우 SMS-DELIVER-REPORT MS SMSC 새로운 메시지를 잘 받았다고 보내는 메시지 SMS-SUBMIT MS SMSC 메시지 발송의 경우 SMS-SUBMIT-REPORT SMSC MS 내가 보낸 메시지를 SC에서 잘 받았다고 보낸 수신 메시지 SMS-STATUS-REPORT SMSC MS 내가 보낸 메시지를 목적 단말에서 잘 받았다고 보낸 수신 메시지 SMS-COMMAND MS SMSC 어떤 목적으로 보내는 명령 메시지 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 3 1 SMS 구조 1.3 Short Message Relay Layer SM-TL Transfer layer TPDU를 구성 MS SMSC Mobile Station TL 이 RL 에게 서비스를 받음 Service Center 메시지 발송 ( MO ) 메시지 수신 ( MT ) SM-RL Relay layer TPDU Type 메시지 전달 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 4 1 SMS 구조 SM-RP 의 명령어 명령어 타입 전송 방향 전달 인자 SM-RL-DATA-Req SM-TL SM-RL MO TPUD RL은 상위 TL에서 받은 TPDU를 RP-DATA를 구성 하위로 전달 SM-RL-DATA-Ind SM-RL SM-TL MT TPUD RL은 하위에서 받은 RP-DATA를 파싱 TPDU로 TL에 전달 SM-RL-MA-Req SM-TL SM-RL RL은 TL로부터 메모리 정보를 전달하라고 요청 받을 때 사용 SM-RL-REPORT-Req SM-TL SM-RL RL은 TL로부터 RP-ACK나 RP-ERROR를 외부(네트워크)로 전달하라는 요청을 보낼 때 사용 SM-RL-REPORT-Ind SM-RL SM-TL RL은 하위에서 받은 RP-ACK나 RP-ERROR를 TL로 전달 SM-RP 에서 구성되는 RP-Message 종류 하위 메시지 타입 의미 RP-MO-DATA MS SMSC 로 TPDU 전달하기 위해 사용 RP-MT-DATA SMSC MS 로 TPDU 전달하기 위해 사용 RP-ACK MO,MT,SMMA에 대한 ACK RP-ERROR MO,MT,SMMA에 대한 에러 RP-ALERT-SC ??? RP-SMMA 메시지를 수신 받기 위한 메모리가 충분한지 유무 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 5 1 SMS 구조 SM-RP 에서 구성되는 RP-Message 흐름도 SM-TL SM-RL SM-RL SM-TL Transfer layer Relay layer Relay layer Transfer layer TPDU를 구성 TPDU Type TPDU Type TPDU를 구성 메시지 전달 SMS 발송 SM-RL-DATA-Req MO SM-RL-REPORT-Ind CM SMS-SUBMIT CM RP-DATA RP-ACK 메시지 전달 SM-RL-DATA-Ind SMS-SUBMIT SM-RL-REPORT-Req message SM-RL-DATA-Req SMS 수신 SM-RL-DATA-Ind RP-DATA SMS-DELIVER SMS-DELIVER SM-RL-REPORT-Req MT message SMS-DELIVERREPORT SMMA SM-RL-MEMORYAVAILABLE-Req message RP-DATA SM-RL-REPORT-Ind SMS-DELIVERREPORT RP-SMMA SM-RL-MEMORYAVAILABLE-Ind SM-RL-REPORT-Req SM-RL-REPORT-Ind 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) RP-ACK / RP-ERROR 6 1 SMS 구조 모뎀단의 구성은 계속 작성할 예정 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 7 2 SMS-SUBMIT 1.1 메시지 발송 간략 구조 목적지 주소 : destinationAddress 서비스센터(SC) 주소 : scAddress 메시지 내용 : text (UCS타입의 string) SmsMessageSender SmsManager PDU Ril 발송 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 8 1 SMS-SUBMIT 1.2 발송 데이터 생성 (SMS-SUBMIT) 1.2.1 MTI 작성 ● MTI ● Mandatory 즉 꼭 들어가야 할 필드 1 octet 7 6 5 RP UDHI SRR ● 0 1 1 사용자 헤더가 있는 경우 발송에 대한 응답 메시지 요청 설정 시 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 4 3 VPF ● 0 2 1 RD ● 0 0 0 MTI ● 0 1 발송메시지 기본 셋팅 9 1 SMS-SUBMIT 1.2.1.1 MTI 란? ● 메시지의 타입을 말한다. 2 Bit 메시지 타입 MTI Message Type Indicator SMSC Message Service Center 서비스 단 MS Mobile Station 단말 단 전송 방향 설명 00 SMS-DELIVER SMSC MS 새로운 메시지를 받았을 경우 00 SMS-DELIVER-REPORT MS SMSC 새로운 메시지를 잘 받았다고 보내는 메시지 01 SMS-SUBMIT 안드로이드에서 발송 시 설정 값 MS SMSC 메시지 발송의 경우 01 SMS-SUBMIT-REPORT SMSC MS 내가 보낸 메시지를 SC에서 잘 받았다고 보낸 수신 메시지 10 SMS-STATUS-REPORT SMSC MS 내가 보낸 메시지를 목적 단말에서 잘 받았다고 보낸 수신 메시지 10 SMS-COMMAND MS SMSC 어떤 목적으로 보내는 명령 메시지 11 예약 비트 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 10 1 SMS-SUBMIT 메시지의 수 발신 과정 1 발송 (MS) SMS-SUBMIT 새로운 메시지 발송 서비스 (SC) 수신 (MS) 2 SMS-SUBMITREPORT 잘 받았다 응답 3 SMS-DELIVER 새로운 메시지 수신 4 5 SMS-DELIVER -REPORT 잘 받았다 응답 SMS-STATUS -REPORT 잘 받았다 응답 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 11 1 SMS-SUBMIT 1.2.1.2 RD 란? ● 중복 메시지면 발송하지 않는다. 1 Bit RD Reject Duplicates OA Originating Address MR Message Reference DA Destination Address 설명 0 중복 메시지라도 모두 수신 하라는 의미 1 중복 메시지라면 걸러내라는 의미 안드로이드에서 설정 값 서비스 (SC) 수신 (MS) 발송 (MS) A 1 A 3 5 A 2 A 4 A 6 A 필터링 필터링 조건 : 같은 OA로부터 MR과 DA가 같은 경우 즉 발송주소와,메시지 ID, 목적지 주소가 같을 경우 !!! OA와 MR,DA는 뒤에서 설명 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 12 1 SMS-SUBMIT VPF 1.2.1.3 VPF 란? ● Validity Period Format MS에서 발송한 메시지를 SC에서 목적지 발송 유효기한 사용 여부. ( 사실상 재시도는 SC의 구현에 따라 달라진다. ) 2 Bit 포멧 안드로이드에서 설정 값 00 지원하지 않는다. 01 enhanced format (향상된 방식의 기간 표시 포멧) 10 relative format (상대기간) 11 absolute format (절대기간) 본 필드를 설정하면 뒤에 추가적으로 Validity Period 항목이 존재한다. 위에 대한 상세 설명은 VP 항목에서 설명하겠다. 발송 (MS) 실패 서비스 (SC) 수신 (MS) 2 1 3 재시도 기간 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 13 1 SMS-SUBMIT RP 1.2.1.4 RP 란? ● Reply Path 수신된 메시지에 대한 응답을 보내야 할 경우. 일반적으로 MS에서 발송하는 메시지가 아니라 특정 서버에서 특정 목적으로 이용된다. (설문 용) 1 Bit 설명 0 응답을 보내는 메시지가 아니다. 1 응답을 보내는 메시지다. 서비스 (SC) 남자면 1 여자면 2 안드로이드에서 설정 값 수신 (MS) 1 2 1 설문 관련 서버 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 14 1 SMS-SUBMIT UDHI 1.2.1.5 UDHI 란? User Data Header Indicator User Data Header가 포함 되어 있는지 여부 User Data Header 관련 사항은 UD 파트에서 설정하겠다. 1 Bit 설명 0 UDH 가 존재하지 않는다. 1 UDH 가 존재한다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 15 1 SMS-SUBMIT SRR 1.2.1.6 SRR 이란? Status Report Request 내가 보내는 메시지에 대한 응답을 요청하는 플래그. 즉 SMS-STATUS-REPORT를 보내 달라는 의미 1 Bit 설명 0 받았다는 응답을 안 보내도 된다 1 받았다는 응답을 꼭 보내라. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 16 1 SMS-SUBMIT 1.2.2 MR 작성 ● MR Message Reference 내가 발송하는 메시지에 대한 고유 ID 만일 고유한 ID가 없을 경우 메시지에 대한 중복 여부를 알 수 없을 뿐만 아니라 아래에 1 에서 보낸 메시지가 2 에서 응답이 왔을 때 어떤 메시지에 대한 응답인지 알 수 없다. 그러므로 해당 메시지의 ID는 꼭 필요하다. MTI ● 1 octet MR ● Integer Integer MR ● 0 안드로이드에서는 0으로 셋팅 한다. 왜냐하면 발신할 때마다 SIM에 MR을 저장한다. 즉 SIM에는 초기 값이 있고 그 값에 1++을 하여 MR이 생성된다. 우리 단말 기준으로 RIL에서 만든다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 17 1 SMS-SUBMIT 1.2.3 DA 작성 ● DA Destination Address TOA Type Of Number + Numbering Plan Identification 목적지에 대한 주소 Type of number MTI ● 1 octet MR ● Integer DA ● 2-12 octet 7 6 5 1 4 3 2 1 0 주소의 크기 Type of number Numbering Plan Identification 국제 번호일 경우 (+가 붙을 때) 2 1 0 0 1 0 0 Numbering Plan Identification 0 1 0 1 일반적인 전화번호일 때 0 0 0 0 0 3 … 주소 값 n 주소 표현의 구조 ( 안드로이드의 TOA 셋팅 ) 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 18 1 SMS-SUBMIT 1.2.4 PID 작성 ● 해당 Protocol의 용도에 해당한다. MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● 1 octet PID Protocol IDentifier SME Short Message Entities SMSC Short Message Service Center 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 안드로이드는 발송 시 모두 0으로 셋팅한다. 모두 0이란 의미는 일반적인 용도 즉 SME SMSC 간 메시지를 주고 받는 Protocol이란 뜻이다. Mobile Station 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) Service Center 19 1 SMS-SUBMIT 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 20 1 SMS-SUBMIT 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 21 1 SMS-SUBMIT Service Type PID 내용 메시지에서 관리 SMS 0x00 일반 SMS O V2MN 0x48 음성/영상 메시지 O Platform 0x4D Platform callback O Browser 0x4E URL Callback O LMS 0x4F LMS 서비스 O LBS 0x51 LBS 서비스 LBS에서 관리 CBS 0x52 CBS 서비스(사용안함) 0x53 Port address에 의한 서비스 확장용 PID OTA-DM 0x7D OTA-Device Management USIM 0x7F USIM UPDATE 사용안함 ? DM에서 관리 OTA 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 22 1 SMS-SUBMIT 1.2.5 DCS 작성 ● DCS Data Coding Scheme 데이터 코딩 방식을 의미한다. MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● 1 octet DCS ● 1 octet 아래의 그룹비트에 설정된 비트마다 각각의 비트가 의미하는 내용이 달라진다. 7 6 5 4 3 2 1 0 0 0 0 0 0 0 그룹 비트 0 0 안드로이드는 그룹 비트를 모두 0으로 셋팅한다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 23 1 SMS-SUBMIT Coding Group이 00xx 일때 하위 비트의 의미 사용되는 하위 비트 00xx 7 6 5 4 3 2 1 0 3 2 1 0 Coding group 0 0 안드로이드에서 발송 시 셋팅되는 그룹이다. 5 Bit 설명 0 Text 압축 사용 무 1 0 0 5 4 text 압축 Class Flag Text 압축 사용 0 1 설명 Message Class 필드 설정 내용 사용 안함 Message Class 필드 설정 내용 사용함 Message Class 메시지 처리 방식 2 Bit 설명 설명 00 00 기본 알파벳 (GSM7Bit) Class 0 화면에 즉시 출력만 01 01 8비트 데이터 Class 1 단말에 저장해라 10 UCS2(16Bit) 10 Class 2 USIM에 저장 해라 11 예약 공간 11 Class 3 터미널에 저장 해라 2 Bit 5 Bit Character Set (문자 비트 수) 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 24 1 SMS-SUBMIT 00xx 7 안드로이드 설정 값 6 Coding group 0 0 5 4 text 압축 Class Flag 0 0 3 2 Character Set (문자 비트 수) 0 0 1 0 Message Class 0 0 1 0 GSM 7Bit 00xx 7 만일 UD 가 UCS2(16비트)로 구성되어 있는 경우 안드로이드 설정 값 6 Coding group 0 0 5 4 text 압축 Class Flag 0 0 3 2 Character Set (문자 비트 수) 1 0 Message Class 1 1 UCS2 16Bit Class Flag가 0이므로 Message Class는 의미가 없다. 00xx 7 만일 발송하는 메시지가 순수 SMS가 아닌 DATA 전달이 목적인 SMS인 경우 6 Coding group 0 0 5 4 text 압축 Class Flag 0 0 3 2 Character Set (문자 비트 수) 0 1 1 0 Message Class 0 0 8Bit 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 25 1 SMS-SUBMIT GSM7Bit 기본 Alphabet GSM7Bit 기본 Alphabet extension table 본 표의 출처 : 3G TS 23.038 V3.36.0 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 26 1 SMS-SUBMIT 1.2.6 VP 작성 VPF Validity Period MS에서 발송한 메시지를 SC에서 목적지 발송 유효기한의 값을 설정 VPF MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● 1 octet DCS ● 1 octet VP 1/7 octet VPF 필드 유효기간 정보 포멧을 알아낸 뒤 VP 필드의 유효시간 값을 참조한다. 하지만 VPF가 00으로 셋팅 되었다면 유효기간의 기능을 사용하지 않는다는 의미이므로 VP필드 자체가 존재하지 않는다. 안드로이드에서는 VPF 값이 00으로 셋팅 된다. 그러므로 VP 필드 자체가 없다. 발송 (MS) 실패 서비스 (SC) 수신 (MS) 2 1 3 재시도 기간 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 27 1 SMS-SUBMIT Enhanced Format 방식의 VP 값 7 6 확장비트 배달타입 5 4 예약 비트 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 3 2 1 0 유효기간 값 28 1 SMS-SUBMIT Relative Format 방식의 VP 값 1 octet (integer) 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 값이 0부터 143까지의 값이 의미하는 것 예) 5일 경우 ( 5 + 1 ) * 5분 30분 후까지 발송되지 않으면 지워라 값이 144부터 167까지의 값이 의미하는 것 예) 145일 경우 12 시간 + ( ( 145 – 143 ) * 30 분 ) 13시 후까지 발송되지 않으면 지워라 값이 168부터 196까지의 값이 의미하는 것 예) 170일 경우 ( 170 – 166 ) * 1 일 4시 후까지 발송되지 않으면 지워라 값이 197부터 255까지의 값이 의미하는 것 예) 200일 경우 ( 200 – 192 ) * 1 주 8주 동안 발송되지 안으면 지워라 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 29 1 SMS-SUBMIT Absolute Format 방식의 VP 값 아래의 예) 1909년 12월 23일 9시 53분 42초 GMT +4 까지 발송되지 않으면 지워라. 7 Octet 1 Octet 2 Octet 3 Octet 4 Octet 5 Octet 6 6 5 4 3 년도 (0~9자리) 0 0 0 2 0 1 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 0 1 0 1 23일 0 9시 0 0 0 53분 0 1 0 1 42초 초 (00 ~ 90자리) 0 0 1 TZ TimeZon (0~9자리) Octet 7 12월 분 (00 ~ 90자리) 초 (0~9자리) 0 0 시 (00 ~ 90자리) 분 (0~9자리) 0 0 일 (00 ~ 90자리) 시 (0~9자리) 1 0 1909년 월 (00 ~ 90자리) 일 (0~9자리) 0 0 년도 (00 ~ 90자리) 월 (0~9자리) 0 1 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 0 0 GMT +4 시간 TimeZon (00~10자리) +=0 -=1 0 0 0 0 0 30 1 SMS-SUBMIT 1.2.6 UDL 작성 ● 실질적인 메시지 내용의 글자수 정보이다. UDL User Data Length UDL User Data 실질적인 메시지의 최대 크기 안드로이드 크기 제한 정의 MTI ● 1 octet MR ● Integer Character Set DA ● 2-12 octet PID ● 1 octet GSM 7Bit (Septets) 실질적인 메시지(UserData) 크기가 160자를 초과하면 에러 메시지 발송 안됨 DCS ● 1 octet UCS2 16Bit VP 1/7 octet UDL ● Integer 실질적인 메시지(UserData) 크기가 140자를 는 초과하면 에러 메시지 발송 안됨 MTI MR DA PID DCS VP 설명 UDL UD UD의 Octets 수를 말한다. UD에 쓸수 있는 최대 사이즈가 140 octet이다. 즉 140byte 총 1120 bit이다. GSM 7Bit 경우 UCS 2 16Bit 경우 8Bit 경우 : 최대 1120 / 7 = 160자까지 가능 : 최대 1120 / 8 = 140자에서 최소 1120 / 16 = 70자 이다. : 최대 1120 / 8 = 140자 이다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 31 1 SMS-SUBMIT 1.2.7 UD 작성 UDL User Data 실질적인 메시지 내용이다. MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● 1 octet DCS ● 1 octet VP 1/7 octet UDL ● Integer GSM 7Bit 최대 글자수 160 UD UCS2 16Bit 최대 글자수 140 UD MTI MR DA PID DCS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) VP UDL 32 1 SMS-SUBMIT 1.2.8 User Data Header 가 포함된 UD 작성 UDL User Data UD에 메시지 내용의 헤더를 말한다. 헤더를 통해서 여러 가지 기능을 수행 할 수 있고 메시지의 특성을 변경할 수 있다. 1 octet MTI ● UDHI 비트가 설정되어 있다면 MR ● Integer DA ● 2-12 octet PID ● 1 octet DCS ● 1 octet VP 1/7 octet UDL ● Integer User Header 정보가 UD에 포함되어 있다는 뜻이다. GSM 7Bit 최대 글자수 160 UD UCS2 16Bit 최대 글자수 140 UD UDHL IEI IEIDL IED … UDHL IEI IEIDL IED Fill data Short Message (7Bit or 8Bit or 16Bit) 여기까지가 UDH 이다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 33 1 SMS-SUBMIT 1.2.8.1 User Data Header Element UD에는 여러 개의 Element가 들어 간다. 각 Element는 특정 의미를 가지고 정보를 포함한다. UDL User Data UDHL User Data Header Length IEI Information Element Identifier IEIDL Information Element Data Length IED Information Element Data SM ? IEIDL IED UD UDHL IEI IEIDL … IED IEI Fill data SM (7Bit or 8Bit or 16Bit) 하나의 Element ( 1 ) UDHL 이란? UDH의 전체 Octet수를 말한다. UD UDHL 1 octet IEI IEIDL IED … IEI IEIDL IED Fill data SM (7Bit or 8Bit or 16Bit) 전체의 octet 수 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 34 1 SMS-SUBMIT ( 2 ) IEI 란? IEI IEIDL IED 여러 가지 용도로 사용 된다. IEI 비트가 의미하는 여러 가지 용도가 있다. 안드로이드에서 발송 시 사용하는 IEI 비트 1 octet 7 6 5 4 3 2 1 0 0 0 0 0 0 1 0 1 0x05 : Application port addressing scheme, 16 bit address 이 값에 대한 설명은 IED 부분에서 설명한다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 35 1 SMS-SUBMIT IEI 의 종류 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 36 1 SMS-SUBMIT 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 37 1 SMS-SUBMIT KTFT 스팩의 IEI 의 종류 NO IEI Length 내용 1 0x01(Special) 2 octet VMS Noti, Store 메시지_ID + 총 메시지 개수 2 0x05 4 octet Application port addressing scheme, 16 Bit address 3 0x22 가변 4 0x40 5 octet LMS 응용서비스 식별자 5 0x41 8 octet LMS 인증 정보 6 0x42 2 octet LMS 데이터 크기 7 0x43 1 octet Pull 지시자 8 0x44 1 octet 읽음 확인 식별자 9 0x70 0 octet UICC Security Header ( Command Packet Identifier ) 10 0x71 0 octet UICC Security Header ( Response Packet Identifier ) 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 회신번호 식별자(Reply Address Element) 38 1 SMS-SUBMIT 스팩의 IEI 0x22 에 대해서 IEI 0x22 Length 내용 가변 회신번호 식별자(Reply Address Element) IEI 7 6 5 4 3 2 1 0 0 0 1 0 0 0 1 0 IEIDL 2-12 octets 을 사용해야 한다. IED 2 octet ~ 12 octet 회신번호 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 39 1 SMS-SUBMIT IED 2 octet ~ 12 octet 회신번호 USIM : MSISDN 참조 (회신번호) 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 40 1 SMS-SUBMIT 회신 번호가 없는 경우 IEI 7 6 5 4 3 2 1 0 0 0 1 0 0 0 1 0 IEIDL 0으로 셋팅 IED 2 octet ~ 12 octet 비움 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 41 1 SMS-SUBMIT ( 3 ) IEDL 이란? IEI IEIDL IED IED의 octet의 수를 나타낸다. UD UDHL IEI IEI이 1 octet IED … IEI IEIDL IED Fill data SM (7Bit or 8Bit or 16Bit) IED octet의 수 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 42 1 SMS-SUBMIT ( 4 ) IED 란? IEI IEIDL IED IEI 타입의 필요한 데이터가 들어 간다. IEI 타입이 아래와 같은 경우 1 octet IEI IEIDL IED 안드로이드에서 발송 시 사용하는 IEI 비트 7 6 5 4 3 2 1 0 0 0 0 0 0 1 0 1 0x05 : Application port addressing scheme, 16 bit address 본 타입은 일반 SMS메시지가 아니라 특정 Data를 특정 서비스하는 곳에 전송하는 SMS 이다. 서비스에 접속을 위한 포트 설정이 필요. IEIDL 이 아래와 같은 경우 1 octet IEI IEIDL IED 안드로이드에서 발송 시 사용하는 IEIDL 비트 7 6 5 4 3 2 1 0 0 0 0 0 0 1 0 0 아래에서 2가지 포트 번호를 넣기 위해 IED가 총 4octet이 사용된다. 포트번호 하나가 16Bit이다. IED 이 아래와 같은 경우 IEI IEIDL IED 안드로이드에서 발송 시 사용하는 IED 비트 7 6 5 4 3 2 1 0 포트 번호 1 octet 0 0 0 0 0 0 0 0 목적지 포트번호 : 서비스 포트 번호의 상위 비트 설정 (MSB) 2 octet 0 0 0 0 0 0 0 0 목적지 포트번호: 서비스 포트 번호의 하위 비트 설정 3 octet 0 0 0 0 0 0 0 0 출발지 포트번호: 출발지 포트의 상위 비트 설정 4 octet 0 0 0 0 0 0 0 0 출발지 포트번호: 출발지 포트의 하위 비트 설정 포트번호 확인 http://www.iana.org/assignments/port-numbers 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 43 1 SMS-SUBMIT ( 5 ) Fill data 란? UDH는 정확히 octet단위로 Align이 맞아야 한다. 하지만 IED character set이 7Bit인 경우 8Bit 단위의 octet에 정확히 맞아 떨어지지 않을 수 있다. 이런 경우 Fill Data에 빈 데이터를 더 추가하여 8bit Align을 맞춘다. UD UDHL IEI IEIDL … IED IEI IEIDL Fill data IED SM (7Bit or 8Bit or 16Bit) octet(8Bit) 단위 크기 : 예) 만일 124Bit인 경우 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 15 octets 2 4 bit가 남음 3 4 bit +4 bit 4 1 2 3 4 5 6 7 8 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 9 10 11 12 13 14 15 16 정확히 16 octets 44 1 SMS-SUBMIT ( 6 ) SM 란? 실재 User Data가 들어 간다. UD UDHL IEI IEIDL IED 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) … IEI IEIDL IED Fill data SM (7Bit or 8Bit or 16Bit) 45 1 SMS-SUBMIT 1.2.9 KTF 규격 발송 PDU 7 6 5 4 RP UDHI SRR 3 VPF 2 RD 1 0 MTI Type KTF M TP-MR M Address Length M Type of Address M Value M TP-PID M 0x00 TP-DCS M 0x00/0x84 TP-VP O VPF=00 이면 필드 생략 TP-UDL M TP-UDHL M Reply Address Element IEI M IEIDL M Address-Length M Type of Address M Value O TP-UD O 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) DA : 수신 번호 Indication : 0x22 회신 번호 46 2 SMS-SUBMIT-REPORT 2.1 수신 데이타 파싱 2.1.1 SMS-SUBMIT-REPORT PDU 구조 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 47 2 SMS-SUBMIT-REPORT MTI ● 1 octet FCS ● 1 octet PI ● 1 octet SCTS ● 7 octets PID 1 octet DCS 1 octet UDL Integer UD negative 시 MTI Message Type Indicator UDHI User Data Header Indicator FCS Failure CauSe PI Parameter Indicator SCTS Service Center Time Stamp PID Protocol Identifier DCS Data Coding Scheme UDL User Data Length UD User Data GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 48 3 SMS-DELIVERY 3.1 메시지 수신 간략 구조 ReceiverThread (RIL Receiver) RIL Class Run() 요청에 의한 응답 Response solicited 요청하지 않은 응답 1 Response Unsolicited sendBroadcast() 새로운 메시지가 도착 했다는 상수 2 RIL_UNSOL_RESPONSE_NEW_SMS 7 해당 메시지를 Broadcast 한다. ACTION : Intents.SMS_RECEIVED_ACTION Extra : PDU 데이타 3 string 형 데이타 4 파싱 SmsMessage Data SMSDispatcher : EVENT_NEW_SMS Handler 실행 5 !!! 6번 전에서 고려해야 할 사항 !!! DELIVERY REPORT 를 발송하기 전에 현재 단말에 여유공간이 존재하는지 확인해야 한다. 만일 부족 시에는 에러를 리턴 해야 한다. 안드로이드에서는 고려하지 않고 있다. acknowledgeLastIncomingSMS() 6 발신측에 메시지를 잘 받았다는 SMS 발송 SMS DELIVERY REPORT 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 49 3 SMS-DELIVERY 3.2 수신 데이터 파싱 3.2.1 SMS-DELIVERY PDU 구조 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 50 3 SMS-DELIVERY SCA 2-12 octets MTI ● 1 octet SCA Service Center Address MTI Message Type Indicator RP Reply Path UDHI User Data Header Indicator SRI Status Report Indication MMS More Messages to Send OA Originating Address PID Protocol IDentifier OA ● 2-12 octets PID ● 1 octet DCS ● 1 octet SCTS ● 7 octets DCS Data Coding Scheme UDL Integer SCTS Service Center Time Stamp GSM 7Bit 최대 글자수 160 UDL User Data Length UD User Data UD UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 51 3 SMS-DELIVERY 3.2.2 SCA 항목 파싱 메시지를 전달해준 서비스 센터의 주소가 이다. 주소 정보에 대한 설명은 앞장 Destination Address 파트 에서 상세히 설명 하였다. (참조바람) SCA 2-12 octets MTI ● 1 octet OA ● 2-12 octets PID ● 1 octet DCS ● 1 octet SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 52 3 SMS-DELIVERY 3.2.3 MTI 항목 파싱 SCA 2-12 octets MTI ● 1 octet OA ● 2-12 octets PID ● 1 octet DCS ● 1 octet SCTS ● 7 octets UDL Integer GSM 7Bit 최대 글자수 160 UD UCS2 16Bit 최대 글자수 140 7 6 5 RP● UDHI SRI 0 1 1 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 4 3 1 MMS ● 사용 안함 0 2 0 0 0 MTI ● 0 1 53 3 SMS-DELIVERY 3.2.3.1 MTI 파싱 ● 메시지의 타입을 말한다. MTI Message Type Indicator SMSC Message Service Center 서비스 단 MS Mobile Station 단말 단 상세한 내용은 앞장 참조. 7 6 5 RP● UDHI SRI 0 0 0 4 3 1 MMS ● 사용 안함 0 2 0 0 0 MTI ● 0 0 안드로이드에서 설정 값 2 Bit 메시지 타입 전송 방향 설명 00 SMS-DELIVER SMSC MS 새로운 메시지를 받았을 경우 10 SMS-STATUS-REPORT SMSC MS 내가 보낸 메시지를 목적 단말에서 잘 받았다고 보낸 수신 메시지 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 54 3 SMS-DELIVERY 3.2.3.2 RP 파싱 ● RP Reply Path 수신된 메시지에 대한 응답을 보내야 할 경우. 일반적으로 MS에서 발송하는 메시지가 아니라 특정 서버에서 특정 목적으로 이용된다. (설문 용) 앞장 Reply Path에서 상세히 설명 하였다. (참조 바람) 7 6 5 RP● UDHI SRI 0 0 0 1 Bit 4 3 1 MMS ● 사용 안함 0 2 0 0 0 MTI ● 0 0 설명 0 응답을 보내는 메시지가 아니다. 1 응답을 보내는 메시지다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 55 3 SMS-DELIVERY 3.2.3.3 UDHI 파싱 UDHI User Data Header Indicator User Data Header가 포함 되어 있는지 여부 앞장의 상세 설명 참조 7 6 5 RP● UDHI SRI 0 0 0 1 Bit 4 3 1 MMS ● 사용 안함 0 2 0 0 0 MTI ● 0 0 설명 0 UDH 가 존재하지 않는다. 1 UDH 가 존재한다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 56 3 SMS-DELIVERY 3.2.3.4 SRI 파싱 SRI Status Report Indication 발신측에서 SMS에 대한 수신여부 응답을 요청했다면 이 비트가 셋팅되어 있다. 7 6 5 RP● UDHI SRI 0 0 0 4 3 1 MMS ● 사용 안함 0 2 0 0 0 MTI ● 0 0 안드로이드에서는 전혀 파싱하지 않음 1 Bit 설명 0 Status Report 요청 안함 1 Status Report 요청함 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 57 3 SMS-DELIVERY 3.2.3.5 MMS 파싱 MMS More Messages to Send 망에서(서비스센터) 더 이어서 더 보낼 메시지가 있는 경우 셋팅 된다. 7 6 5 RP● UDHI SRI 0 0 0 4 3 1 MMS ● 사용 안함 0 2 0 0 0 MTI ● 0 0 안드로이드에서는 전혀 파싱하지 않음 1 Bit 설명 0 망에서 더 보낼 메시지가 없다. 1 망에서 더 보낼 메시지가 있다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 58 3 SMS-DELIVERY 3.2.4 OA 파트 파싱 OA Originating Address 메시지를 발신한 MS의 주소가 이다. 주소 정보에 대한 설명은 앞장 Destination Address 파트에서 상세히 설명 하였다. (참조바람) SCA 2-12 octets MTI ● 1 octet OA ● 2-12 octets PID ● 1 octet DCS ● 1 octet SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 59 3 SMS-DELIVERY 3.2.5 PID 파트 파싱 PID Protocol IDentifier 해당 Protocol의 용도에 해당한다. SCA 2-12 octets MTI ● 1 octet OA ● 2-12 octets PID ● 1 octet DCS ● 1 octet SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 60 3 SMS-DELIVERY Service Type PID 내용 메시지에서 관리 SMS 0x00 일반 SMS O V2MN 0x48 음성/영상 메시지 O Platform 0x4D Platform callback O Browser 0x4E URL Callback O LMS 0x4F LMS 서비스 O LBS 0x51 LBS 서비스 LBS에서 관리 CBS 0x52 CBS 서비스(사용안함) 0x53 Port address에 의한 서비스 확장용 PID OTA-DM 0x7D OTA-Device Management USIM 0x7F USIM UPDATE 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 사용안함 ? DM에서 관리 OTA 61 3 SMS-DELIVERY 3.2.6 DCS 파트 파싱 DCS Data Coding Scheme 데이터 코딩 방식을 의미한다. 앞장에 상세 설명을 참조 바람. SCA 2-12 octets MTI ● 1 octet OA ● 2-12 octets PID ● 1 octet DCS ● 1 octet SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 62 3 SMS-DELIVERY 안드로이드에서는 수신 받은 메시지 관련해서 5가지 그룹만을 지원한다. (1) 00XX 그룹은 앞장에서 상세 설명 하였다. 00xx 7 6 Coding group 0 0 5 4 text 압축 Class Flag 0 0 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 3 2 Character Set (문자 비트 수) 0 0 1 0 Message Class 0 0 63 3 SMS-DELIVERY (2) 1111 그룹 1111 7 6 5 4 Coding group 1 1 1 1 3 2 사용무 Character Set (문자 비트 수) 0 0 1 0 Message Class 0 0 즉, 기본 전제 조건은 1) text 압축은 사용하지 않는다. 2) Message Class 를 무조건 참조한다. 3) 자동 삭제를 하지 않는다. class 에 상관없이 무조건 단말 저장 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 1 Bit 설명 2 Bit 설명 0 기본 알파벳 (GSM7Bit) 00 Class 0 화면에 즉시 출력만 1 8비트 데이터 01 Class 1 단말에 저장해라 10 Class 2 USIM에 저장 해라 11 Class 3 터미널에 저장 해라 64 3 SMS-DELIVERY MWI (3) 1100 / 1101 / 1110 그룹 Message Waiting Indication 1101 7 6 5 4 Coding group 0 0 0 0 3 2 Active 사용무 0 0 1 0 메시지 종류 0 0 즉, 기본 전제 조건은 1 Bit 1) GSM 7Bit 문자셋을 사용 2) 메시지를 저장한다. 3) 기본으로 메시지 압축 안함 설명 0 설정 표시 비활성 1 설정 표시 활성 2 Bit 설명 00 음성 메일 메시지를 기다리는 중 Active, MWI와의 관계 01 팩스 메시지를 기다리는 중 MWI 는 Message Waiting Indication의 약자로 서버 도착한 메시지가 있다는 메시지이다. 10 전자 메일 메시지를 기다리는 중 예를 들어 MWI 종류가 00(음성메일)일 경우 서버에 도착한 음성메시지가 있다는 뜻이다. 11 다른 메시지가 대기 안드로이드에서는 본 MWI 항목만 사용 Active는 화면에 서버에 도착한 메시지를 사용자에게 알려 주어라는 것이다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 65 3 SMS-DELIVERY 1100 7 6 5 4 Coding group 0 0 0 0 3 2 Active 사용무 0 0 1 0 메시지 종류 0 0 즉, 기본 전제 조건은 1 Bit 1) GSM 7Bit 문자셋을 사용 2) 메시지를 저장하지 않는다. 3) 기본으로 메시지 압축 안함 설명 0 설정 표시 비활성 1 설정 표시 활성 2 Bit 설명 00 음성 메일 메시지를 기다리는 중 Active, MWI와의 관계 01 팩스 메시지를 기다리는 중 MWI 는 Message Waiting Indication의 약자로 서버 도착한 메시지가 있다는 메시지이다. 10 전자 메일 메시지를 기다리는 중 예를 들어 MWI 종류가 00(음성메일)일 경우 서버에 도착한 음성메시지가 있다는 뜻이다. 11 다른 메시지가 대기 안드로이드에서는 본 MWI 항목만 사용 Active는 화면에 서버에 도착한 메시지를 사용자에게 알려 주어라는 것이다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 66 3 SMS-DELIVERY 1110 7 6 5 4 Coding group 0 0 0 0 3 2 Active 사용무 0 0 1 0 메시지 종류 0 0 즉, 기본 전제 조건은 1 Bit 1) UCS2 16Bit 문자셋을 사용 2) 메시지를 저장한다. 3) 기본으로 메시지 압축 안함 설명 0 설정 표시 비활성 1 설정 표시 활성 2 Bit 설명 00 음성 메일 메시지를 기다리는 중 Active, MWI와의 관계 01 팩스 메시지를 기다리는 중 MWI 는 Message Waiting Indication의 약자로 서버 도착한 메시지가 있다는 메시지이다. 10 전자 메일 메시지를 기다리는 중 예를 들어 MWI 종류가 00(음성메일)일 경우 서버에 도착한 음성메시지가 있다는 뜻이다. 11 다른 메시지가 대기 안드로이드에서는 본 MWI 항목만 사용 Active는 화면에 서버에 도착한 메시지를 사용자에게 알려 주어라는 것이다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 67 3 SMS-DELIVERY KTF/SKT에서만 사용하는 그룹 (이동성 때문에) (4) 10XX 그룹 10xx 7 6 Coding group 1 0 5 4 text 압축 Class Flag x x 3 2 Character Set (문자 비트 수) 0 0 1 0 Message Class 0 0 KTF/SKT에서 사용함 추가 필요 두 비트만 참조 그리고 0 1 만 사용 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 68 3 SMS-DELIVERY 3.2.7 SCTS 파트 파싱 SCTS Service Center Time Stamp MS 에서 메시지 발신 SMS-SUBMIT시 SC에 저장된 시간을 의미한다. SC에 도착한 시간 남김 SCA 2-12 octets MTI ● 1 octet OA ● 2-12 octets PID ● 1 octet DCS ● 1 octet SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 69 3 SMS-DELIVERY 3.2.8 UDL 파트 파싱 UDL User Data Length 실질적인 메시지 내용의 글자수 정보이다. 앞장에 상세 설명 참조. SCA 2-12 octets MTI ● 1 octet OA ● 2-12 octets PID ● 1 octet DCS ● 1 octet SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 70 3 SMS-DELIVERY 3.2.9 UD 파트 파싱 UD User Data 실질적인 메시지 내용이다. 앞장에서 설명 하였듯이 UD 내에는 User Data Header가 존재 할 수 있다. SCA 2-12 octets MTI ● 1 octet OA ● 2-12 octets PID ● 1 octet DCS ● 1 octet SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 71 3 SMS-DELIVERY 3.2.10 User Data Header 파싱 UDH User Data Header 앞장에 간략 설명을 참조바람. IEI 의 종류 안드로이드에서는 수신 시 3가지 용도를 지원한다. 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 72 3 SMS-DELIVERY (1) 8-Bit Reference Number 본 항목의 목적은 SMS 메시지가 긴 것은 짤라서 보낼 수 있다라는 방법이다. IEI 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 IEIDL 3 octet을 사용해야 한다. IED 1 octet 2 octet 3 octet 메시지 그룹의 8Bit ID 총 메시지 개수 현재 메시지 index 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 73 3 SMS-DELIVERY (2) 16-Bit Reference Number 본 항목의 목적은 SMS 메시지가 긴 것은 짤라서 보낼 수 있다라는 방법이다. 바로 앞장 (1)과 의미는 같다. IEI 7 6 5 4 3 2 1 0 0 0 0 0 1 0 0 0 IEIDL 3 octet을 사용해야 한다. IED 1 octet 2 octet 3 octet 총 메시지 개수 현재 메시지 index 메시지 그룹의 16Bit ID 메시지 섞임 방지 16Bit기 때문에 유일한 ID의 범위가 커진다. 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 74 3 SMS-DELIVERY (3) Application port 16bit addressing IEI 7 6 5 4 3 2 1 0 0 0 0 0 0 1 0 1 IEIDL 2 octet을 사용해야 한다. IED 1 octet 2 octet 상위 비트 포트번호 하위 비트 포트번호 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 75 3 SMS-DELIVERY NO IEI Length 내용 1 0x01(Special) 2 octet VMS Noti, Store 메시지_ID + 총 메시지 개수 2 0x05 4 octet Application port addressing scheme, 16 Bit address 3 0x22 가변 4 0x40 5 octet LMS 응용서비스 식별자 5 0x41 8 octet LMS 인증 정보 6 0x42 2 octet LMS 데이터 크기 7 0x43 1 octet Pull 지시자 8 0x44 1 octet 읽음 확인 식별자 9 0x70 0 octet UICC Security Header ( Command Packet Identifier ) 10 0x71 0 octet UICC Security Header ( Response Packet Identifier ) 회신번호 식별자(Reply Address Element) 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 76 3 SMS-DELIVERY 3.2.10 KTF 규격 수신 PDU 7 6 5 4 RP UDHI SRI 3 00 2 MMS 1 0 MTI Type KTF M OA : 수신 번호 Address Length M Type of Address M Value M TP-PID M 0x00 TP-DCS M 0x00/0x84 TP-SCTS M TP-U이 M TP-UDHL M Reply Address Element IEI O IEIDL O Address-Length O Type of Address O Value O TP-UD M 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) Time Stamp Identifier : 0x22 회신 번호 77 3 SMS-DELIVERY 3.2.11 KTF 사서함 착신 알림 메시지 PDU 7 6 5 4 RP UDHI SRI 3 00 2 MMS 1 0 MTI Type KTF M OA : 수신 번호 Address Length M Type of Address M Value M TP-PID M 0x00 / 0x48 / 0x5F TP-DCS M 0x0C TP-SCTS M Time Stamp TP-UDL M 0x06 / 0x07+Reply Address TP-UDHL M UDH 길이 : 0x04 + Reply Address IEI (Special SMS message indication) M IEI이 M Indication : 0x01 데이터 길이 : 0x02 Message Indication type and Storage M VMS : 0x80 /0x00 영상메일 : 0x07 / 0x83 / 0x87 Message Count M 총 메시지 수 (Binary 값) IEI ( Reply Address Element ) O Indication : 0x22 IEIDL O Address-Length O Type of Address O Value O TP-UD M IED 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 회신 번호 신규 메시지 수(binary 값) (투폰 서비스:신규 메시지 수 앞에 0x0F의 구분자가 올수 있음) 78 4 SMS-DELIVERY-REPORT 4.1 메시지 수신에 대한 발송 리포트 구조 ReceiverThread (RIL Receiver) RIL Class Run() 요청에 의한 응답 Response solicited 요청하지 않은 응답 1 Response Unsolicited sendBroadcast() 새로운 메시지가 도착 했다는 상수 2 RIL_UNSOL_RESPONSE_NEW_SMS 7 해당 메시지를 Broadcast 한다. ACTION : Intents.SMS_RECEIVED_ACTION Extra : PDU 데이타 3 string 형 데이타 4 파싱 SmsMessage Data SMSDispatcher : EVENT_NEW_SMS Handler 실행 5 !!! 6번 전에서 고려해야 할 사항 !!! DELIVERY REPORT 를 발송하기 전에 현재 단말에 여유공간이 존재하는지 확인해야 한다. 만일 부족 시에는 에러를 리턴 해야 한다. 안드로이드에서는 고려하지 않고 있다. acknowledgeLastIncomingSMS() 6 발신측에 메시지를 잘 받았다는 SMS 발송 SMS DELIVERY REPORT 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 79 4 SMS-DELIVERY-REPORT 발송 4.1 메시지 수신에 대한 발송 리포트 구조 안드로이드에서는 Modem AT CMD Local Socket AT CMD RIL 6 RIL_REQUEST_SMS_ACKNOWLEDGE SMS-DELIVERY-REPORT 발송 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 80 4 SMS-DELIVERY-REPORT Qualcomm에서는 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 81 4 SMS-DELIVERY-REPORT 4.2 발신 데이타 생성 4.2.1 SMS-DELIVERY-REPORT PDU 구조 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 82 4 SMS-DELIVERY-REPORT MTI ● 1 octet FCS ● 1 octet PI ● 1 octet PID 1 octet DCS 1 octet UDL Integer UD negative 시 MTI Message Type Indicator UDHI User Data Header Indicator FCS Failure CauSe PI Parameter Indicator PID Protocol Identifier DCS Data Coding Scheme UDL User Data Length UD User Data GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 83 5 SMS-STATUS-REPORT 5.1 수신 데이타 파싱 5.1.1 SMS-STATUS PDU 구조 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 84 5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet SCA Service Center Address MTI Message Type Indicator UDHI User Data Header Indicator SRQ Status Report Qualifier MMS More Messages to Send MR Message Reference RA Recipient Address SCTS Service Center Time Stamp MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets DT Discharge Time ST 1 octet ST STatus PI 1 octet PI Parameter Indicator PID 1 octet PID Protocol Identifier DCS 1 octet DCS Data Coding Scheme UDL Integer UDL User Data Length UD User Data UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 85 5 SMS-STATUS-REPORT 5.1.2 SCA 항목 파싱 메시지를 전달해준 서비스 센터의 주소가 이다. 주소 정보에 대한 설명은 앞장 Destination Address 파트 에서 상세히 설명 하였다. (참조바람) SCA 2-12 octets MTI ● 1 octet MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 86 5 SMS-STATUS-REPORT 5.1.3 MTI 항목 파싱 SCA 2-12 octets MTI ● 1 octet MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer GSM 7Bit 최대 글자수 160 UD UCS2 16Bit 최대 글자수 140 7 6 5 사용 안함 UDHI SRQ ● 0 1 1 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 4 3 1 MMS ● 사용 안함 0 2 0 0 0 MTI ● 0 1 87 5 SMS-STATUS-REPORT 5.1.3.1 MTI 항목 파싱 MTI Message Type Indicator 메시지의 타입을 말한다. 상세한 내용은 앞장 참조. 7 6 5 사용 안함 UDHI SRQ ● 0 1 1 4 3 1 MMS ● 사용 안함 0 2 0 0 0 MTI ● 1 0 안드로이드에서 설정 값 2 Bit 메시지 타입 전송 방향 설명 00 SMS-DELIVER SMSC MS 새로운 메시지를 받았을 경우 10 SMS-STATUS-REPORT SMSC MS 내가 보낸 메시지를 목적 단말에서 잘 받았다고 보낸 수신 메시지 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 88 5 SMS-STATUS-REPORT 5.1.3.2 UDHI 파싱 UDHI User Data Header Indicator User Data Header가 포함 되어 있는지 여부 앞장의 상세 설명 참조 7 6 5 사용 안함 UDHI SRQ ● 0 1 1 1 Bit 4 3 1 MMS ● 사용 안함 0 2 0 0 0 MTI ● 1 0 설명 0 UDH 가 존재하지 않는다. 1 UDH 가 존재한다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 89 5 SMS-STATUS-REPORT 5.1.3.3 SRQ 항목 파싱 SRQ Status Report Qualifier 내가 보낸 메시지 (SMS-SUBMIT) 에 대한 응답 체크 7 6 5 사용 안함 UDHI SRQ ● 0 1 0 4 3 1 MMS ● 사용 안함 0 2 0 0 0 MTI ● 1 0 안드로이드에서 설정 값 1 Bit 의미 0 내가 보낸 메시지를 목적지에서 잘 받았다는 의미로 0을 셋팅한다. 즉 SMS-SUBMIT을 위한 것이다. 1 예) 보낸것이 완료되지 않았 다. 정확한 의미 분석 필요 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 90 5 SMS-STATUS-REPORT 5.1.3.4 MMS 파싱 MMS More Messages to Send 망에서(서비스센터) 더 이어서 더 보낼 메시지가 있는 경우 셋팅 된다. 7 6 5 사용 안함 UDHI SRQ ● 0 1 0 4 3 1 MMS ● 사용 안함 0 2 0 0 0 MTI ● 1 0 안드로이드에서 설정 값 1 Bit 설명 0 망에서 더 보낼 메시지가 없다. 1 망에서 더 보낼 메시지가 있다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 91 5 SMS-STATUS-REPORT 5.1.4 MR 파싱 MR Message Reference 내가 발송했던 SMS-SUBMIT에 대한 응답 메시지 인지 확인하는 메시지에 대한 ID 값이다. SCA 2-12 octets MTI ● 1 octet MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 92 5 SMS-STATUS-REPORT 아래의 그림 확실히 2 1 에서 메시지 MR이 0x0001 이었고 는 2 에서 받은 메시지가 MR이 0x0001이라면 1 에서 보낸 메시지에 대한 SMS-STATUS-REPORT라는 것이 확실하다. MR:0x0001 MR:0x0001 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 93 5 SMS-STATUS-REPORT 5.1.5 RA 항목 파싱 RA Recipient Address 수령인 주소 정보를 말한다. 즉 처음 내가 보낸 SMS-SUBMIT에서 목적지 주소에 해당한다. SCA 2-12 octets MTI ● 1 octet MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 94 5 SMS-STATUS-REPORT 수신(MS)의 주소가 RA에 들어간다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 95 5 SMS-STATUS-REPORT 5.1.6 SCTS 항목 파싱 SCTS Service Center Time Stamp SC단에서 SMS-STATUS-REPORT 를 보내기 전 SC단에서 메시지 발송 시간을 남긴다. SCA 2-12 octets MTI ● 1 octet MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer UD SC에 도착한 시간 남김 GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 96 5 SMS-STATUS-REPORT 5.1.7 DT 항목 파싱 DT Discharge Time 처음에 보낸 SMS-SUBMIT 메시지가 목적지에 도달한 시간정보 이다. SCA 2-12 octets MTI ● 1 octet MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer UD 도착한 시간 남김 GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 97 5 SMS-STATUS-REPORT 5.1.8 ST 항목 파싱 ST STatus 뭘까요? (전달 되었다. 전달되는 중이다. 기타 목적지의 상태 정보 가 아닐까?) SCA 2-12 octets MTI ● 1 octet MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 98 5 SMS-STATUS-REPORT 5.1.9 PI 항목 파싱 PI Parameter Indicator 본 정보는 PI 다음에 오는 PID/DCS/UDL 정보가 존재 하는지에 대한 정보를 나타낸다. SCA 2-12 octets MTI ● 1 octet MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 99 5 SMS-STATUS-REPORT 7 6 5 ? 4 3 예약 비트 0 0 0 2 1 0 UDL 유무 DCS 유무 PID 유무 1 1 1 0 SCA 2-12 octets MTI ● 1 octet 1 Bit UDL 정보 1 Bit DCS 정보 1 Bit PID 정보 MR ● 1 octet 0 미존재 0 미존재 0 미존재 RA ● 2-12 octets 1 존재 1 존재 1 존재 SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 100 5 SMS-STATUS-REPORT 5.1.10 PID 항목 파싱 PID Protocol Identifier 해당 Protocol의 용도에 해당한다. SCA 2-12 octets MTI ● 1 octet MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 101 5 SMS-STATUS-REPORT 5.1.11 DCS 항목 파싱 DCS Data Coding Scheme 데이터 코딩 방식을 의미한다. 앞장에 상세 설명을 참조 바람. SCA 2-12 octets MTI ● 1 octet MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 102 5 SMS-STATUS-REPORT 5.1.12 UDL 항목 파싱 UDL User Data Length 실질적인 메시지 내용의 글자수 정보이다. 앞장에 상세 설명 참조. SCA 2-12 octets MTI ● 1 octet MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 103 5 SMS-STATUS-REPORT 5.1.13 UD 파트 파싱 UD User Data 실질적인 메시지 내용이다. 앞장에서 설명 하였듯이 UD 내에는 User Data Header가 존재 할 수 있다. SCA 2-12 octets MTI ● 1 octet MR ● 1 octet RA ● 2-12 octets SCTS ● 7 octets DT ● 7 octets ST 1 octet PI 1 octet PID 1 octet DCS 1 octet UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 104 6 SMS-COMMAND 6.1 발신 데이타 생성 6.1.1 SMS-COMMAND PDU 구조 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 105 7 SMS 수신 확인 7.1 발신 수신 확인 7.1.1 PDU 정보 작성 MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● 1 octet DCS ● 1 octet VP 1/7 octet UDL ● Integer 보안 UD 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 106 7 SMS 수신 확인 7.2 수신 수신 확인 수신확인에 대한 수신 메시지는 일반 메시지로 받는다. 그러므로 특별히 고려하지 않아도 된다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 107 8 SMS 읽음 확인 8.1 발신 읽음 확인 8.1.1 PDU 정보 작성 MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● 1 octet DCS ● 1 octet VP 1/7 octet UDL ● Integer 보안 UD 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 108 8 SMS 읽음 확인 8.2 수신 읽음 확인 8.2.1 PDU 정보 파싱 SCA 2-12 octets MTI ● 1 octet OA ● 2-12 octets PID ● 1 octet DCS ● 1 octet SCTS ● 7 octets UDL Integer UD IEI (0x44) 7 6 5 4 3 2 1 0 0 1 0 0 0 1 0 0 IEIDL 0x00 1 octet을 사용해야 한다. IED IEI 식별자 7 6 5 4 3 2 1 0 0 1 0 0 0 1 0 0 SMSC에서 관리되는 ID 값이다. 메시지 내용이 GSM7Bit인 경우 DCS를 0x00으로 셋팅 하고 KSC !!! 읽음 확인에 대한 응답 : 발신번호 앞에 “ ##431 “ 을 추가한다. 박 성 근(010-9985-2539) 무단 도용을 금합니다. (^^;) 109