교육일 : 2009년 6월 11일 안드로이드 SMS 구조 분석.

Slides:



Advertisements
Similar presentations
Wireless & Mobile Communication system LAB TinyOS 의 메시지 형식 및 자바 응용 프로그램들 조선대학교 정보통신공학과 변재영 본 자료는 한백전자 교육자료를 이용하여 제작되었음을 밝힙니다.
Advertisements

1)RACK 2)UPS 3)P D U 장치 4)Server Group 5)KVM Switch 7)UPS 를 위한 HUB 6) RACK Monitor.
HTTPS Packet Capture Tutorial
2016 유성환 Hybrid MOBILE.
재료수치해석 HW # 박재혁.
16장 X.25 패킷 교환망 16.1 X.25 계층 구조 16.2 패킷 계층 프로토콜 16.3 요약.
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
Oozie Web API 기능 테스트 이승엽.
안드로이드 FrameWork 노트.
연결리스트(linked list).
제 9 장 구조체와 공용체.
Outlook 에서 POP3 설정 방법.
24 장 TCP/IP 24.1 개요 24.2 네트워크층 24.3 주소 지정 24.4 서브넷팅틍
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
Chapter 13 Wired LANs: Ethernet.
15장 X.25 패킷 교환망 15.1 X.25 계층 15.2 X.25와 관련된 기타 프로토콜 15.3 요약.
23 장 OSI 상위계층 23.1 세션(session)층 23.2 표현(presentation)층
Chapter 21 Network Layer: ARP, ICMP (IGMP).
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
Outlook Addin 설치 방법 및 매뉴얼
Error Detection and Correction
제 19 장 TFTP 19.1 메시지 19.2 연결 19.3 데이터 전송 19.4 UTP 포트 19.5 TFTP 예제
23장. 구조체와 사용자 정의 자료형 2.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
10 장 데이터 링크 제어(Data Link Control)
PSW : PROGRAM STATUS WORD
제 22 장 TCP Persist Timer.
17장 X.25 패킷 교환망 17.1 X.25 계층 17.2 X.25와 관련된 기타 프로토콜 17.3 요약.
윤 철 민 ( ) 조 원 근 ( ) 김 남 석 ( ) 김 남 기 ( )
WOL(Wake-On Lan) 컴퓨터공학과 4학년 박기웅.
Trivial File Transfer Protocol (TFTP)
Network Security WireShark를 활용한 프로토콜 분석 I.
2015학년도 PHP 기말 레포트 로그인 홈페이지 제작.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
22 장 전송층(Transport Layer)
SMART-W50의 사용 방법 ▪ 1. 서버에서의 CDMA 설정
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
24장. 파일 입출력.
ACL(Access Control List)
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
21 장 전송층(Transport Layer)
USN(Ubiquitous Sensor Network)
Nessus 4 설치 정보보호응용 조용준.
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
[그림 1-1] 안드로이드 전용 어플리케이션 설치 방법
클라우드 서버로 부터 값 읽어오기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
ARM Development Suite v1.2
10 장 데이터 링크 제어(Data Link Control)
10 장 데이터 링크 제어(Data Link Control)
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
CHAP 21. 전화, SMS, 주소록.
Chapter 26 IP over ATM.
Ping Test.
Chapter 27 Mobile IP.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
모바일(폰)메일 서비스 정흠수 최동훈.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
Chapter 10 데이터 검색1.
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
5.2.3 교환방식의 비교 학습내용 교환방식의 비교.
9 브라우저 객체 모델.
제 4 장 Record.
TrustNet 전자 협조전 사용설명서 목 차 작성,수정,삭제 결재함 처리현황 발송대장,접수대장
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
7 생성자 함수.
6 객체.
ARP.
Presentation transcript:

교육일 : 2009년 6월 11일 안드로이드 SMS 구조 분석

Mobile Switching Center 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 SMS-GMSC Transfer layer MSC TPDU를 구성 Gayeway MSC TPDU를 구성 SMS-IWMSC Mobile Switching Center 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 물리적인 메시지 전달 망구조와 관련 물리적인 메시지 전달 망구조와 관련 물리적인 메시지 전달 망구조와 관련 물리적인 메시지 전달 망구조와 관련

1 SM-AL SM-TL SMS 구조 1.2 MS  SMSC Transactions 수신 메시지 보여줌 발신메시지 작성 Application layer 수신 메시지 보여줌 발신메시지 작성 AL이 TL에게 서비스를 받음 SM-TL Transfer layer TPDU를 구성 메시지 타입 전송 방향 설명 SMS-DELIVER SMSC  MS 새로운 메시지를 받았을 경우 SMS-DELIVER-REPORT MS  SMSC 새로운 메시지를 잘 받았다고 보내는 메시지 SMS-SUBMIT 메시지 발송의 경우 SMS-SUBMIT-REPORT 내가 보낸 메시지를 SC에서 잘 받았다고 보낸 수신 메시지 SMS-STATUS-REPORT 내가 보낸 메시지를 목적 단말에서 잘 받았다고 보낸 수신 메시지 SMS-COMMAND 어떤 목적으로 보내는 명령 메시지

1 MS SMSC SM-TL SM-RL SMS 구조 1.3 Short Message Relay Layer TPDU를 구성 Transfer layer TPDU를 구성 MS SMSC Mobile Station Service Center 메시지 발송 ( MO ) TL 이 RL 에게 서비스를 받음 메시지 수신 ( MT ) SM-RL Relay layer TPDU Type 메시지 전달

SM-RP 에서 구성되는 RP-Message 종류 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 RL은 TL로부터 메모리 정보를 전달하라고 요청 받을 때 사용 SM-RL-REPORT-Req RL은 TL로부터 RP-ACK나 RP-ERROR를 외부(네트워크)로 전달하라는 요청을 보낼 때 사용 SM-RL-REPORT-Ind 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 메시지를 수신 받기 위한 메모리가 충분한지 유무

SM-RP 에서 구성되는 RP-Message 흐름도 1 SMS 구조 SM-RP 에서 구성되는 RP-Message 흐름도 SM-TL Transfer layer TPDU를 구성 SM-RL Relay layer TPDU Type 메시지 전달 SM-RL Relay layer TPDU Type 메시지 전달 SM-TL Transfer layer TPDU를 구성 CM CM SMS 발송 MO message SM-RL-DATA-Req RP-DATA SMS-SUBMIT SM-RL-DATA-Ind SMS-SUBMIT SM-RL-REPORT-Req RP-ACK SM-RL-REPORT-Ind SM-RL-DATA-Req SMS 수신 MT message RP-DATA SM-RL-DATA-Ind SMS-DELIVER SMS-DELIVER SM-RL-REPORT-Req RP-DATA SMS-DELIVER- REPORT SM-RL-REPORT-Ind SMS-DELIVER- REPORT SM-RL-MEMORY- AVAILABLE-Req SMMA message SM-RL-MEMORY- AVAILABLE-Ind RP-SMMA SM-RL-REPORT-Req RP-ACK / RP-ERROR SM-RL-REPORT-Ind

1 SMS 구조 모뎀단의 구성은 계속 작성할 예정

2 SMS-SUBMIT 1.1 메시지 발송 간략 구조 목적지 주소 : destinationAddress 서비스센터(SC) 주소 : scAddress 메시지 내용 : text (UCS타입의 string) SmsMessageSender SmsManager PDU Ril 발송

1 SMS-SUBMIT 1.2 발송 데이터 생성 (SMS-SUBMIT) MTI ● 1 octet 7 6 5 4 3 2 1 RP Mandatory 즉 꼭 들어가야 할 필드 MTI ● 1 octet 7 6 5 4 3 2 1 RP UDHI SRR ● VPF ● RD ● MTI ● 사용자 헤더가 있는 경우 발송에 대한 응답 메시지 요청 설정 시 발송메시지 기본 셋팅

1 SMS-SUBMIT MTI Message Type Indicator SMSC Message Service Center 서비스 단 MS Mobile Station 단말 단 1.2.1.1 MTI 란? ● 메시지의 타입을 말한다. 2 Bit 메시지 타입 전송 방향 설명 0 0 SMS-DELIVER SMSC  MS 새로운 메시지를 받았을 경우 SMS-DELIVER-REPORT MS  SMSC 새로운 메시지를 잘 받았다고 보내는 메시지 0 1 SMS-SUBMIT 메시지 발송의 경우 SMS-SUBMIT-REPORT 내가 보낸 메시지를 SC에서 잘 받았다고 보낸 수신 메시지 1 0 SMS-STATUS-REPORT 내가 보낸 메시지를 목적 단말에서 잘 받았다고 보낸 수신 메시지 SMS-COMMAND 어떤 목적으로 보내는 명령 메시지 1 1 예약 비트 안드로이드에서 발송 시 설정 값

1 SMS-SUBMIT 1 2 3 4 5 메시지의 수 발신 과정 발송 (MS) 서비스 (SC) 수신 (MS) 새로운 메시지 발송 2 SMS-SUBMIT- REPORT 잘 받았다 응답 3 SMS-DELIVER 새로운 메시지 수신 4 SMS-DELIVER -REPORT 잘 받았다 응답 5 SMS-STATUS -REPORT 잘 받았다 응답

1 SMS-SUBMIT A 1 A 3 5 A 6 A A 2 A 4 RD Reject Duplicates OA Originating Address MR Message Reference DA Destination Address 1.2.1.2 RD 란? ● 중복 메시지면 발송하지 않는다. 1 Bit 설명 중복 메시지라도 모두 수신 하라는 의미 1 중복 메시지라면 걸러내라는 의미  안드로이드에서 설정 값 서비스 (SC) 발송 (MS) 수신 (MS) A 1 A 3 5 A 6 A A 2 A 4 필터링 필터링 조건 : 같은 OA로부터 MR과 DA가 같은 경우 즉 발송주소와,메시지 ID, 목적지 주소가 같을 경우 !!! OA와 MR,DA는 뒤에서 설명

1 SMS-SUBMIT 2 1 3 VPF Validity Period Format 1.2.1.3 VPF 란? ● MS에서 발송한 메시지를 SC에서 목적지 발송 유효기한 사용 여부. ( 사실상 재시도는 SC의 구현에 따라 달라진다. ) 2 Bit 포 멧 0 0 지원하지 않는다. 0 1 enhanced format (향상된 방식의 기간 표시 포멧) 1 0 relative format (상대기간) 1 1 absolute format (절대기간)  안드로이드에서 설정 값 본 필드를 설정하면 뒤에 추가적으로 Validity Period 항목이 존재한다. 위에 대한 상세 설명은 VP 항목에서 설명하겠다. 발송 (MS) 서비스 (SC) 실패 수신 (MS) 2 1 3 재시도 기간

1 SMS-SUBMIT 1 2 RP Reply Path 1.2.1.4 RP 란? ● 수신된 메시지에 대한 응답을 보내야 할 경우. 일반적으로 MS에서 발송하는 메시지가 아니라 특정 서버에서 특정 목적으로 이용된다. (설문 용) 1 Bit 설명 응답을 보내는 메시지가 아니다. 1 응답을 보내는 메시지다.  안드로이드에서 설정 값 남자면 1 여자면 2 서비스 (SC) 수신 (MS) 1 2 1 설문 관련 서버

1 SMS-SUBMIT UDHI User Data Header Indicator 1.2.1.5 UDHI 란? User Data Header 관련 사항은 UD 파트에서 설정하겠다. 1 Bit 설명 UDH 가 존재하지 않는다. 1 UDH 가 존재한다.

1 SMS-SUBMIT SRR Status Report Request 1.2.1.6 SRR 이란? 내가 보내는 메시지에 대한 응답을 요청하는 플래그. 즉 SMS-STATUS-REPORT를 보내 달라는 의미 1 Bit 설명 받았다는 응답을 안 보내도 된다 1 받았다는 응답을 꼭 보내라.

1 SMS-SUBMIT 1 2 MTI ● 1 octet MR ● Integer Integer MR ● 1.2.2 MR 작성 ● Message Reference 내가 발송하는 메시지에 대한 고유 ID 만일 고유한 ID가 없을 경우 메시지에 대한 중복 여부를 알 수 없을 뿐만 아니라 아래에 에서 보낸 메시지가 에서 응답이 왔을 때 어떤 메시지에 대한 응답인지 알 수 없다. 그러므로 해당 메시지의 ID는 꼭 필요하다. 1 2 MTI ● 1 octet MR ● Integer Integer MR ● 안드로이드에서는 0으로 셋팅 한다. 왜냐하면 발신할 때마다 SIM에 MR을 저장한다. 즉 SIM에는 초기 값이 있고 그 값에 1++을 하여 MR이 생성된다. 우리 단말 기준으로 RIL에서 만든다.

1 SMS-SUBMIT MTI ● 1 octet MR ● Integer DA ● 2-12 octet 7 6 5 4 3 2 1 Destination Address TOA Type Of Number + Numbering Plan Identification 목적지에 대한 주소 Type of number MTI ● 1 octet MR ● Integer DA ● 2-12 octet 7 6 5 4 3 2 1 주소의 크기 Type of number Numbering Plan Identification 국제 번호일 경우 (+가 붙을 때) 일반적인 전화번호일 때 주소 값 … n Numbering Plan Identification 주소 표현의 구조 ( 안드로이드의 TOA 셋팅 ) 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS

모두 0이란 의미는 일반적인 용도 즉 SME  SMSC 간 메시지를 주고 받는 Protocol이란 뜻이다. 1 SMS-SUBMIT 1.2.4 PID 작성 ● PID Protocol IDentifier SME Short Message Entities SMSC Short Message Service Center 해당 Protocol의 용도에 해당한다. MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● 7 6 5 4 3 2 1 안드로이드는 발송 시 모두 0으로 셋팅한다. 모두 0이란 의미는 일반적인 용도 즉 SME  SMSC 간 메시지를 주고 받는 Protocol이란 뜻이다. Mobile Station Service Center

1 SMS-SUBMIT 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS

1 SMS-SUBMIT 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS

1 SMS-SUBMIT Service Type PID 내용 메시지에서 관리 SMS 0x00 일반 SMS O V2MN 0x48 음성/영상 메시지 Platform 0x4D Platform callback Browser 0x4E URL Callback LMS 0x4F LMS 서비스 LBS 0x51 LBS 서비스 LBS에서 관리 CBS 0x52 CBS 서비스(사용안함) 사용안함 0x53 Port address에 의한 서비스 확장용 PID ? OTA-DM 0x7D OTA-Device Management DM에서 관리 USIM 0x7F USIM UPDATE OTA 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS

1 SMS-SUBMIT MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● DCS ● 7 Data Coding Scheme 데이터 코딩 방식을 의미한다. MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● DCS ● 아래의 그룹비트에 설정된 비트마다 각각의 비트가 의미하는 내용이 달라진다. 7 6 5 4 3 2 1 그룹 비트 안드로이드는 그룹 비트를 모두 0으로 셋팅한다.

1 00xx SMS-SUBMIT 7 6 5 4 3 2 1 Coding group 5 4 3 2 1 text 압축 Class Coding Group이 00xx 일때 하위 비트의 의미 00xx 사용되는 하위 비트 7 6 5 4 3 2 1 Coding group 안드로이드에서 발송 시 셋팅되는 그룹이다. 5 4 3 2 1 text 압축 Class Flag Character Set (문자 비트 수) Message Class 5 Bit 설명 Text 압축 사용 무 1 사용 메시지 처리 방식 2 Bit 설명 0 0 Class 0 화면에 즉시 출력만 0 1 Class 1 단말에 저장해라 1 0 Class 2 USIM에 저장 해라 1 1 Class 3 터미널에 저장 해라 2 Bit 설명 0 0 기본 알파벳 (GSM7Bit) 0 1 8비트 데이터 1 0 UCS2(16Bit) 1 1 예약 공간 5 Bit 설명 Message Class 필드 설정 내용 사용 안함 1 설정 내용 사용함

Class Flag가 0이므로 Message Class는 의미가 없다. 1 SMS-SUBMIT 00xx 안드로이드 설정 값 7 6 5 4 3 2 1 Coding group text 압축 Class Flag Character Set (문자 비트 수) Message Class GSM 7Bit 00xx 만일 UD 가 UCS2(16비트)로 구성되어 있는 경우 안드로이드 설정 값 7 6 5 4 3 2 1 Coding group text 압축 Class Flag Character Set (문자 비트 수) Message Class UCS2 16Bit Class Flag가 0이므로 Message Class는 의미가 없다. 00xx 만일 발송하는 메시지가 순수 SMS가 아닌 DATA 전달이 목적인 SMS인 경우 7 6 5 4 3 2 1 Coding group text 압축 Class Flag Character Set (문자 비트 수) Message Class 8Bit

GSM7Bit 기본 Alphabet extension table 1 SMS-SUBMIT GSM7Bit 기본 Alphabet GSM7Bit 기본 Alphabet extension table 본 표의 출처 : 3G TS 23.038 V3.36.0

MS에서 발송한 메시지를 SC에서 목적지 발송 유효기한의 값을 설정 1 SMS-SUBMIT 1.2.6 VP 작성 VPF Validity Period MS에서 발송한 메시지를 SC에서 목적지 발송 유효기한의 값을 설정 VPF MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● DCS ● VP 1/7 octet VPF 필드 유효기간 정보 포멧을 알아낸 뒤 VP 필드의 유효시간 값을 참조한다. 하지만 VPF가 00으로 셋팅 되었다면 유효기간의 기능을 사용하지 않는다는 의미이므로 VP필드 자체가 존재하지 않는다. 안드로이드에서는 VPF 값이 00으로 셋팅 된다. 그러므로 VP 필드 자체가 없다. 발송 (MS) 서비스 (SC) 실패 수신 (MS) 2 1 3 재시도 기간

1 SMS-SUBMIT 7 6 5 4 3 2 1  Enhanced Format 방식의 VP 값 확장비트 배달타입 예약 비트 확장비트 배달타입 예약 비트 유효기간 값

1 SMS-SUBMIT  Relative Format 방식의 VP 값 7 6 5 4 3 2 1 1 octet 1 octet (integer) 값이 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주 동안 발송되지 안으면 지워라

1 SMS-SUBMIT 1909년 12월 23일 9시 53분 42초 GMT +4 시간  Absolute Format 방식의 VP 값 아래의 예) 1909년 12월 23일 9시 53분 42초 GMT +4 까지 발송되지 않으면 지워라. 7 6 5 4 3 2 1 Octet 1 년도 (0~9자리) 년도 (00 ~ 90자리) Octet 2 월 (0~9자리) 월 (00 ~ 90자리) Octet 3 일 (0~9자리) 일 (00 ~ 90자리) Octet 4 시 (0~9자리) 시 (00 ~ 90자리) Octet 5 분 (0~9자리) 분 (00 ~ 90자리) Octet 6 초 (0~9자리) 초 (00 ~ 90자리) Octet 7 TimeZon (0~9자리) TZ + = 0 - = 1 (00~10자리) 1909년 12월 23일 9시 53분 42초 GMT +4 시간

1 SMS-SUBMIT MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● DCS ● VP 1.2.6 UDL 작성 ● UDL User Data Length User Data 실질적인 메시지 내용의 글자수 정보이다. MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● DCS ● VP 1/7 octet UDL ● 실질적인 메시지의 최대 크기 안드로이드 크기 제한 정의 Character Set 설명 GSM 7Bit (Septets) 실질적인 메시지(UserData) 크기가 160자를 초과하면 에러 메시지 발송 안됨 UCS2 16Bit 140자를 는 초과하면 에러 MTI MR DA PID DCS VP UDL UD UD의 Octets 수를 말한다. UD에 쓸수 있는 최대 사이즈가 140 octet이다. 즉 140byte 총 1120 bit이다. GSM 7Bit 경우 : 최대 1120 / 7 = 160자까지 가능 UCS 2 16Bit 경우 : 최대 1120 / 8 = 140자에서 최소 1120 / 16 = 70자 이다. 8Bit 경우 : 최대 1120 / 8 = 140자 이다.

1 SMS-SUBMIT MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● DCS ● VP 1.2.7 UD 작성 UDL User Data 실질적인 메시지 내용이다. MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● DCS ● VP 1/7 octet UDL ● UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 MTI MR DA PID DCS VP UDL UD

1 SMS-SUBMIT MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● DCS ● VP 1.2.8 User Data Header 가 포함된 UD 작성 UDL User Data UD에 메시지 내용의 헤더를 말한다. 헤더를 통해서 여러 가지 기능을 수행 할 수 있고 메시지의 특성을 변경할 수 있다. MTI ● 1 octet MR ● Integer DA ● 2-12 octet PID ● DCS ● VP 1/7 octet UDL ● UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 UDHI 비트가 설정되어 있다면 User Header 정보가 UD에 포함되어 있다는 뜻이다. UD UDHL IEI IEIDL IED … Fill data Short Message (7Bit or 8Bit or 16Bit) 여기까지가 UDH 이다.

1 SMS-SUBMIT UD UD 1.2.8.1 User Data Header Element UDL User Data UDHL User Data Header Length IEI Information Element Identifier IEIDL Information Element Data Length IED Information Element Data SM ? UD에는 여러 개의 Element가 들어 간다. 각 Element는 특정 의미를 가지고 정보를 포함한다. UD UDHL IEI IEIDL IED … Fill data SM (7Bit or 8Bit or 16Bit) 하나의 Element ( 1 ) UDHL 이란? UDH의 전체 Octet수를 말한다. UD UDHL 1 octet IEI IEIDL IED … Fill data SM (7Bit or 8Bit or 16Bit) 전체의 octet 수

0x05 : Application port addressing scheme, 16 bit address SMS-SUBMIT ( 2 ) IEI 란? 여러 가지 용도로 사용 된다. IEI 비트가 의미하는 여러 가지 용도가 있다. IEI IEIDL IED 안드로이드에서 발송 시 사용하는 IEI 비트 7 6 5 4 3 2 1 1 octet 0x05 : Application port addressing scheme, 16 bit address 이 값에 대한 설명은 IED 부분에서 설명한다.

1 SMS-SUBMIT  IEI 의 종류 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS

1 SMS-SUBMIT 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS

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 가변 회신번호 식별자(Reply Address Element) 4 0x40 5 octet LMS 응용서비스 식별자 5 0x41 8 octet LMS 인증 정보 6 0x42 LMS 데이터 크기 7 0x43 1 octet Pull 지시자 8 0x44 읽음 확인 식별자 9 0x70 0 octet UICC Security Header ( Command Packet Identifier ) 10 0x71 UICC Security Header ( Response Packet Identifier )

회신번호 식별자(Reply Address Element) 1 SMS-SUBMIT  스팩의 IEI 0x22 에 대해서 IEI Length 내용 0x22 가변 회신번호 식별자(Reply Address Element) IEI 7 6 5 4 3 2 1 IEIDL 2-12 octets 을 사용해야 한다. IED 2 octet ~ 12 octet 회신번호

1 SMS-SUBMIT IED 2 octet ~ 12 octet 회신번호 USIM : MSISDN 참조 (회신번호)

1 IEI IEIDL IED SMS-SUBMIT 7 6 5 4 3 2 1 0으로 셋팅 2 octet ~ 12 octet 비움 회신 번호가 없는 경우 IEI 7 6 5 4 3 2 1 IEIDL 0으로 셋팅 IED 2 octet ~ 12 octet 비움

1 SMS-SUBMIT UD ( 3 ) IEDL 이란? IED의 octet의 수를 나타낸다. IED octet의 수 IEI IEIDL IED UD UDHL IEI IEI이 1 octet IED … IEIDL Fill data SM (7Bit or 8Bit or 16Bit) IED octet의 수

1 0x05 : Application port addressing scheme, 16 bit address SMS-SUBMIT ( 4 ) IED 란? IEI 타입의 필요한 데이터가 들어 간다. IEI IEIDL IED  IEI 타입이 아래와 같은 경우 IEI IEIDL IED 안드로이드에서 발송 시 사용하는 IEI 비트 7 6 5 4 3 2 1 1 octet 0x05 : Application port addressing scheme, 16 bit address 본 타입은 일반 SMS메시지가 아니라 특정 Data를 특정 서비스하는 곳에 전송하는 SMS 이다. 서비스에 접속을 위한 포트 설정이 필요.  IEIDL 이 아래와 같은 경우 IEI IEIDL IED 안드로이드에서 발송 시 사용하는 IEIDL 비트 7 6 5 4 3 2 1 1 octet 아래에서 2가지 포트 번호를 넣기 위해 IED가 총 4octet이 사용된다. 포트번호 하나가 16Bit이다.  IED 이 아래와 같은 경우 IEI IEIDL IED 안드로이드에서 발송 시 사용하는 IED 비트 7 6 5 4 3 2 1 포트 번호 1 octet 목적지 포트번호 : 서비스 포트 번호의 상위 비트 설정 (MSB) 2 octet 목적지 포트번호: 서비스 포트 번호의 하위 비트 설정 3 octet 출발지 포트번호: 출발지 포트의 상위 비트 설정 4 octet 출발지 포트번호: 출발지 포트의 하위 비트 설정 포트번호 확인 http://www.iana.org/assignments/port-numbers

octet(8Bit) 단위 크기 : 예) 만일 124Bit인 경우 SMS-SUBMIT ( 5 ) Fill data 란? UDH는 정확히 octet단위로 Align이 맞아야 한다. 하지만 IED character set이 7Bit인 경우 8Bit 단위의 octet에 정확히 맞아 떨어지지 않을 수 있다. 이런 경우 Fill Data에 빈 데이터를 더 추가하여 8bit Align을 맞춘다. UD UDHL IEI IEIDL IED … Fill data SM (7Bit or 8Bit or 16Bit) octet(8Bit) 단위 크기 : 예) 만일 124Bit인 경우 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 15 octets 2 4 bit가 남음 3 4 bit +4 bit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 4 정확히 16 octets

1 SMS-SUBMIT UD ( 6 ) SM 란? 실재 User Data가 들어 간다. UDHL IEI IEIDL IED … Fill data SM (7Bit or 8Bit or 16Bit)

Reply Address Element IEI 1 SMS-SUBMIT 1.2.9 KTF 규격 발송 PDU 7 6 5 4 3 2 1 Type KTF RP UDHI SRR VPF RD MTI M TP-MR Address Length DA : 수신 번호 Type of Address Value TP-PID 0x00 TP-DCS 0x00/0x84 TP-VP O VPF=00 이면 필드 생략 TP-UDL TP-UDHL Reply Address Element IEI Indication : 0x22 IEIDL Address-Length 회신 번호 TP-UD

2 SMS-SUBMIT-REPORT 2.1 수신 데이타 파싱 2.1.1 SMS-SUBMIT-REPORT PDU 구조

2 SMS-SUBMIT-REPORT MTI ● 1 octet FCS ● PI ● SCTS ● 7 octets PID DCS 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 MTI ● 1 octet FCS ● PI ● SCTS ● 7 octets PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 negative 시

RIL Class 3 SMS-DELIVERY 3.1 메시지 수신 간략 구조 ReceiverThread (RIL Receiver) Run() RIL Class 요청에 의한 응답 Response solicited 1 요청하지 않은 응답 Response Unsolicited sendBroadcast() 새로운 메시지가 도착 했다는 상수 해당 메시지를 Broadcast 한다. 2 RIL_UNSOL_RESPONSE_NEW_SMS 7 ACTION : Intents.SMS_RECEIVED_ACTION Extra : PDU 데이타 3 4 !!! 6번 전에서 고려해야 할 사항 !!! DELIVERY REPORT 를 발송하기 전에 현재 단말에 여유공간이 존재하는지 확인해야 한다. 만일 부족 시에는 에러를 리턴 해야 한다. 안드로이드에서는 고려하지 않고 있다. string 형 데이타 파싱 SmsMessage Data SMSDispatcher : EVENT_NEW_SMS 실행 Handler 5 acknowledgeLastIncomingSMS() 발신측에 메시지를 잘 받았다는 SMS 발송 6 SMS DELIVERY REPORT

3 SMS-DELIVERY 3.2 수신 데이터 파싱 3.2.1 SMS-DELIVERY PDU 구조

3 SMS-DELIVERY SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● 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 DCS Data Coding Scheme SCTS Service Center Time Stamp UDL User Data Length UD User Data SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

3 SMS-DELIVERY SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● 메시지를 전달해준 서비스 센터의 주소가 이다. 주소 정보에 대한 설명은 앞장 Destination Address 파트 에서 상세히 설명 하였다. (참조바람) SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

3 SMS-DELIVERY SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 7 6 5 4 3 2 1 RP● UDHI SRI 사용 안함 MMS ● MTI ●

3 SMS-DELIVERY 7 6 5 4 3 2 1 RP● UDHI SRI MMS ● MTI ● 3.2.3.1 MTI 파싱 ● Message Type Indicator SMSC Message Service Center 서비스 단 MS Mobile Station 단말 단 메시지의 타입을 말한다. 상세한 내용은 앞장 참조. 7 6 5 4 3 2 1 RP● UDHI SRI 사용 안함 MMS ● MTI ● 안드로이드에서 설정 값 2 Bit 메시지 타입 전송 방향 설명 0 0 SMS-DELIVER SMSC  MS 새로운 메시지를 받았을 경우 1 0 SMS-STATUS-REPORT 내가 보낸 메시지를 목적 단말에서 잘 받았다고 보낸 수신 메시지

3 SMS-DELIVERY 7 6 5 4 3 2 1 RP● UDHI SRI MMS ● MTI ● 3.2.3.2 RP 파싱 ● Reply Path 수신된 메시지에 대한 응답을 보내야 할 경우. 일반적으로 MS에서 발송하는 메시지가 아니라 특정 서버에서 특정 목적으로 이용된다. (설문 용) 앞장 Reply Path에서 상세히 설명 하였다. (참조 바람) 7 6 5 4 3 2 1 RP● UDHI SRI 사용 안함 MMS ● MTI ● 1 Bit 설명 응답을 보내는 메시지가 아니다. 1 응답을 보내는 메시지다.

3 SMS-DELIVERY 7 6 5 4 3 2 1 RP● UDHI SRI MMS ● MTI ● 3.2.3.3 UDHI 파싱 User Data Header Indicator User Data Header가 포함 되어 있는지 여부 앞장의 상세 설명 참조 7 6 5 4 3 2 1 RP● UDHI SRI 사용 안함 MMS ● MTI ● 1 Bit 설명 UDH 가 존재하지 않는다. 1 UDH 가 존재한다.

3 SMS-DELIVERY 7 6 5 4 3 2 1 RP● UDHI SRI MMS ● MTI ● 3.2.3.4 SRI 파싱 Status Report Indication 발신측에서 SMS에 대한 수신여부 응답을 요청했다면 이 비트가 셋팅되어 있다. 7 6 5 4 3 2 1 RP● UDHI SRI 사용 안함 MMS ● MTI ● 안드로이드에서는 전혀 파싱하지 않음 1 Bit 설명 Status Report 요청 안함 1 Status Report 요청함

3 SMS-DELIVERY 7 6 5 4 3 2 1 RP● UDHI SRI MMS ● MTI ● 3.2.3.5 MMS 파싱 More Messages to Send 망에서(서비스센터) 더 이어서 더 보낼 메시지가 있는 경우 셋팅 된다. 7 6 5 4 3 2 1 RP● UDHI SRI 사용 안함 MMS ● MTI ● 안드로이드에서는 전혀 파싱하지 않음 1 Bit 설명 망에서 더 보낼 메시지가 없다. 1 망에서 더 보낼 메시지가 있다.

3 SMS-DELIVERY SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● Originating Address 메시지를 발신한 MS의 주소가 이다. 주소 정보에 대한 설명은 앞장 Destination Address 파트에서 상세히 설명 하였다. (참조바람) SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

3 SMS-DELIVERY SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● Protocol IDentifier 해당 Protocol의 용도에 해당한다. SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

3 SMS-DELIVERY Service Type PID 내용 메시지에서 관리 SMS 0x00 일반 SMS O V2MN 음성/영상 메시지 Platform 0x4D Platform callback Browser 0x4E URL Callback LMS 0x4F LMS 서비스 LBS 0x51 LBS 서비스 LBS에서 관리 CBS 0x52 CBS 서비스(사용안함) 사용안함 0x53 Port address에 의한 서비스 확장용 PID ? OTA-DM 0x7D OTA-Device Management DM에서 관리 USIM 0x7F USIM UPDATE OTA

3 SMS-DELIVERY SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● Data Coding Scheme 데이터 코딩 방식을 의미한다. 앞장에 상세 설명을 참조 바람. SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

3 00xx SMS-DELIVERY 7 6 5 4 3 2 1 Coding group text 압축 Class Flag 안드로이드에서는 수신 받은 메시지 관련해서 5가지 그룹만을 지원한다. (1) 00XX 그룹은 앞장에서 상세 설명 하였다. 00xx 7 6 5 4 3 2 1 Coding group text 압축 Class Flag Character Set (문자 비트 수) Message Class

3 1111 SMS-DELIVERY 7 6 5 4 3 2 1 Coding group (2) 1111 그룹 사용무 (2) 1111 그룹 1111 7 6 5 4 3 2 1 Coding group 사용무 Character Set (문자 비트 수) Message Class 즉, 기본 전제 조건은 1) text 압축은 사용하지 않는다. 2) Message Class 를 무조건 참조한다. 3) 자동 삭제를 하지 않는다. class 에 상관없이 무조건 단말 저장 1 Bit 설명 기본 알파벳 (GSM7Bit) 1 8비트 데이터 2 Bit 설명 0 0 Class 0 화면에 즉시 출력만 0 1 Class 1 단말에 저장해라 1 0 Class 2 USIM에 저장 해라 1 1 Class 3 터미널에 저장 해라

3 1101 SMS-DELIVERY 7 6 5 4 3 2 1 Coding group MWI Message Waiting Indication (3) 1100 / 1101 / 1110 그룹 1101 7 6 5 4 3 2 1 Coding group Active 사용무 메시지 종류 즉, 기본 전제 조건은 1) GSM 7Bit 문자셋을 사용 2) 메시지를 저장한다. 3) 기본으로 메시지 압축 안함 1 Bit 설명 설정 표시 비활성 1 설정 표시 활성 2 Bit 설명 0 0 음성 메일 메시지를 기다리는 중 0 1 팩스 메시지를 1 0 전자 메일 메시지를 1 1 다른 메시지가 대기 안드로이드에서는 본 MWI 항목만 사용  Active, MWI와의 관계 MWI 는 Message Waiting Indication의 약자로 서버 도착한 메시지가 있다는 메시지이다. 예를 들어 MWI 종류가 00(음성메일)일 경우 서버에 도착한 음성메시지가 있다는 뜻이다. Active는 화면에 서버에 도착한 메시지를 사용자에게 알려 주어라는 것이다.

3 1100 SMS-DELIVERY 7 6 5 4 3 2 1 Coding group Active 사용무 메시지 종류 Coding group Active 사용무 메시지 종류 즉, 기본 전제 조건은 1) GSM 7Bit 문자셋을 사용 2) 메시지를 저장하지 않는다. 3) 기본으로 메시지 압축 안함 1 Bit 설명 설정 표시 비활성 1 설정 표시 활성 2 Bit 설명 0 0 음성 메일 메시지를 기다리는 중 0 1 팩스 메시지를 1 0 전자 메일 메시지를 1 1 다른 메시지가 대기 안드로이드에서는 본 MWI 항목만 사용  Active, MWI와의 관계 MWI 는 Message Waiting Indication의 약자로 서버 도착한 메시지가 있다는 메시지이다. 예를 들어 MWI 종류가 00(음성메일)일 경우 서버에 도착한 음성메시지가 있다는 뜻이다. Active는 화면에 서버에 도착한 메시지를 사용자에게 알려 주어라는 것이다.

3 1110 SMS-DELIVERY 7 6 5 4 3 2 1 Coding group Active 사용무 메시지 종류 Coding group Active 사용무 메시지 종류 즉, 기본 전제 조건은 1) UCS2 16Bit 문자셋을 사용 2) 메시지를 저장한다. 3) 기본으로 메시지 압축 안함 1 Bit 설명 설정 표시 비활성 1 설정 표시 활성 2 Bit 설명 0 0 음성 메일 메시지를 기다리는 중 0 1 팩스 메시지를 1 0 전자 메일 메시지를 1 1 다른 메시지가 대기 안드로이드에서는 본 MWI 항목만 사용  Active, MWI와의 관계 MWI 는 Message Waiting Indication의 약자로 서버 도착한 메시지가 있다는 메시지이다. 예를 들어 MWI 종류가 00(음성메일)일 경우 서버에 도착한 음성메시지가 있다는 뜻이다. Active는 화면에 서버에 도착한 메시지를 사용자에게 알려 주어라는 것이다.

3 10xx KTF/SKT에서 사용함 추가 필요 두 비트만 참조 그리고 0 1 만 사용 SMS-DELIVERY 7 6 5 4 2 1 Coding group text 압축 Class Flag Character Set (문자 비트 수) Message Class x KTF/SKT에서 사용함 추가 필요 두 비트만 참조 그리고 0 1 만 사용

3 SMS-DELIVERY SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● Service Center Time Stamp MS 에서 메시지 발신 SMS-SUBMIT시 SC에 저장된 시간을 의미한다. SC에 도착한 시간 남김 SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

3 SMS-DELIVERY SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● 3.2.8 UDL 파트 파싱 UDL User Data Length 실질적인 메시지 내용의 글자수 정보이다. 앞장에 상세 설명 참조. SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

3 SMS-DELIVERY SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● 3.2.9 UD 파트 파싱 UD User Data 실질적인 메시지 내용이다. 앞장에서 설명 하였듯이 UD 내에는 User Data Header가 존재 할 수 있다. SCA 2-12 octets MTI ● 1 octet OA ● PID ● DCS ● SCTS ● 7 octets UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

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

3 IEI IEIDL IED SMS-DELIVERY 7 6 5 4 3 2 1 3 octet을 사용해야 한다. 1 octet (1) 8-Bit Reference Number 본 항목의 목적은 SMS 메시지가 긴 것은 짤라서 보낼 수 있다라는 방법이다. IEI 7 6 5 4 3 2 1 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

3 IEI IEIDL IED SMS-DELIVERY 7 6 5 4 3 2 1 3 octet을 사용해야 한다. 1 octet (2) 16-Bit Reference Number 본 항목의 목적은 SMS 메시지가 긴 것은 짤라서 보낼 수 있다라는 방법이다. 바로 앞장 (1)과 의미는 같다. IEI 7 6 5 4 3 2 1 IEIDL 3 octet을 사용해야 한다. IED 1 octet 2 octet 3 octet 메시지 그룹의 16Bit ID 메시지 섞임 방지 16Bit기 때문에 유일한 ID의 범위가 커진다. 총 메시지 개수 현재 메시지 index 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS

3 IEI IEIDL IED SMS-DELIVERY 7 6 5 4 3 2 1 2 octet을 사용해야 한다. 1 octet (3) Application port 16bit addressing IEI 7 6 5 4 3 2 1 IEIDL 2 octet을 사용해야 한다. IED 1 octet 2 octet 상위 비트 포트번호 하위 비트 포트번호 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS

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 가변 회신번호 식별자(Reply Address Element) 4 0x40 5 octet LMS 응용서비스 식별자 5 0x41 8 octet LMS 인증 정보 6 0x42 LMS 데이터 크기 7 0x43 1 octet Pull 지시자 8 0x44 읽음 확인 식별자 9 0x70 0 octet UICC Security Header ( Command Packet Identifier ) 10 0x71 UICC Security Header ( Response Packet Identifier )

Reply Address Element IEI 3 SMS-DELIVERY 3.2.10 KTF 규격 수신 PDU 7 6 5 4 3 2 1 Type KTF RP UDHI SRI 00 MMS MTI M Address Length OA : 수신 번호 Type of Address Value TP-PID 0x00 TP-DCS 0x00/0x84 TP-SCTS Time Stamp TP-U이 TP-UDHL Reply Address Element IEI O Identifier : 0x22 IEIDL Address-Length 회신 번호 TP-UD

3 SMS-DELIVERY 3.2.11 KTF 사서함 착신 알림 메시지 PDU 7 6 5 4 3 2 1 Type KTF RP Type KTF RP UDHI SRI 00 MMS MTI M Address Length OA : 수신 번호 Type of Address Value TP-PID 0x00 / 0x48 / 0x5F TP-DCS 0x0C TP-SCTS Time Stamp TP-UDL 0x06 / 0x07+Reply Address TP-UDHL UDH 길이 : 0x04 + Reply Address IEI (Special SMS message indication) Indication : 0x01 IEI이 데이터 길이 : 0x02 IED Message Indication type and Storage VMS : 0x80 /0x00 영상메일 : 0x07 / 0x83 / 0x87 Message Count 총 메시지 수 (Binary 값) IEI ( Reply Address Element ) O Indication : 0x22 IEIDL Address-Length 회신 번호 TP-UD 신규 메시지 수(binary 값) (투폰 서비스:신규 메시지 수 앞에 0x0F의 구분자가 올수 있음)

RIL Class 4 SMS-DELIVERY-REPORT 4.1 메시지 수신에 대한 발송 리포트 구조 ReceiverThread (RIL Receiver) Run() RIL Class 요청에 의한 응답 Response solicited 1 요청하지 않은 응답 Response Unsolicited sendBroadcast() 새로운 메시지가 도착 했다는 상수 해당 메시지를 Broadcast 한다. 2 RIL_UNSOL_RESPONSE_NEW_SMS 7 ACTION : Intents.SMS_RECEIVED_ACTION Extra : PDU 데이타 3 4 !!! 6번 전에서 고려해야 할 사항 !!! DELIVERY REPORT 를 발송하기 전에 현재 단말에 여유공간이 존재하는지 확인해야 한다. 만일 부족 시에는 에러를 리턴 해야 한다. 안드로이드에서는 고려하지 않고 있다. string 형 데이타 파싱 SmsMessage Data SMSDispatcher : EVENT_NEW_SMS 실행 Handler 5 acknowledgeLastIncomingSMS() 발신측에 메시지를 잘 받았다는 SMS 발송 6 SMS DELIVERY REPORT

4 Modem RIL SMS-DELIVERY-REPORT 4.1 메시지 수신에 대한 발송 리포트 구조 6 안드로이드에서는 Modem AT CMD Local Socket AT CMD RIL 6 RIL_REQUEST_SMS_ACKNOWLEDGE SMS-DELIVERY-REPORT 발송

4 SMS-DELIVERY-REPORT Qualcomm에서는

4 SMS-DELIVERY-REPORT 4.2 발신 데이타 생성 4.2.1 SMS-DELIVERY-REPORT PDU 구조

4 SMS-DELIVERY-REPORT MTI ● 1 octet FCS ● PI ● PID DCS UDL Integer 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 MTI ● 1 octet FCS ● PI ● PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 negative 시

5 SMS-STATUS-REPORT 5.1 수신 데이타 파싱 5.1.1 SMS-STATUS PDU 구조

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 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 DT Discharge Time ST STatus PI Parameter Indicator PID Protocol Identifier DCS Data Coding Scheme UDL User Data Length UD User Data SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 메시지를 전달해준 서비스 센터의 주소가 이다. 주소 정보에 대한 설명은 앞장 Destination Address 파트 에서 상세히 설명 하였다. (참조바람) SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 7 6 5 4 3 2 1 사용 안함 UDHI SRQ ● MMS ● MTI ●

5 SMS-STATUS-REPORT 7 6 5 4 3 2 1 SRQ ● MMS ● MTI ● 5.1.3.1 MTI 항목 파싱 Message Type Indicator 메시지의 타입을 말한다. 상세한 내용은 앞장 참조. 7 6 5 4 3 2 1 사용 안함 UDHI SRQ ● MMS ● MTI ● 안드로이드에서 설정 값 2 Bit 메시지 타입 전송 방향 설명 0 0 SMS-DELIVER SMSC  MS 새로운 메시지를 받았을 경우 1 0 SMS-STATUS-REPORT 내가 보낸 메시지를 목적 단말에서 잘 받았다고 보낸 수신 메시지

5 SMS-STATUS-REPORT 7 6 5 4 3 2 1 SRQ ● MMS ● MTI ● 5.1.3.2 UDHI 파싱 User Data Header Indicator User Data Header가 포함 되어 있는지 여부 앞장의 상세 설명 참조 7 6 5 4 3 2 1 사용 안함 UDHI SRQ ● MMS ● MTI ● 1 Bit 설명 UDH 가 존재하지 않는다. 1 UDH 가 존재한다.

5 정확한 의미 분석 필요 SMS-STATUS-REPORT 7 6 5 4 3 2 1 SRQ ● MMS ● MTI ● Status Report Qualifier 내가 보낸 메시지 (SMS-SUBMIT) 에 대한 응답 체크 7 6 5 4 3 2 1 사용 안함 UDHI SRQ ● MMS ● MTI ● 안드로이드에서 설정 값 1 Bit 의미 내가 보낸 메시지를 목적지에서 잘 받았다는 의미로 0을 셋팅한다. 즉 SMS-SUBMIT을 위한 것이다. 1 예) 보낸것이 완료되지 않았다. 정확한 의미 분석 필요

5 SMS-STATUS-REPORT 7 6 5 4 3 2 1 SRQ ● MMS ● MTI ● 5.1.3.4 MMS 파싱 MMS More Messages to Send 망에서(서비스센터) 더 이어서 더 보낼 메시지가 있는 경우 셋팅 된다. 7 6 5 4 3 2 1 사용 안함 UDHI SRQ ● MMS ● MTI ● 안드로이드에서 설정 값 1 Bit 설명 망에서 더 보낼 메시지가 없다. 1 망에서 더 보낼 메시지가 있다.

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● Message Reference 내가 발송했던 SMS-SUBMIT에 대한 응답 메시지 인지 확인하는 메시지에 대한 ID 값이다. SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

5 MR:0x0001 MR:0x0001 SMS-STATUS-REPORT 1 2 2 1

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● Recipient Address 수령인 주소 정보를 말한다. 즉 처음 내가 보낸 SMS-SUBMIT에서 목적지 주소에 해당한다. SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

5 SMS-STATUS-REPORT 수신(MS)의 주소가 RA에 들어간다.

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● Service Center Time Stamp SC단에서 SMS-STATUS-REPORT 를 보내기 전 SC단에서 메시지 발송 시간을 남긴다. SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 SC에 도착한 시간 남김

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 5.1.7 DT 항목 파싱 DT Discharge Time 처음에 보낸 SMS-SUBMIT 메시지가 목적지에 도달한 시간정보 이다. SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 도착한 시간 남김

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 뭘까요? (전달 되었다. 전달되는 중이다. 기타 목적지의 상태 정보 가 아닐까?) SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 5.1.9 PI 항목 파싱 PI Parameter Indicator 본 정보는 PI 다음에 오는 PID/DCS/UDL 정보가 존재 하는지에 대한 정보를 나타낸다. SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

5 SMS-STATUS-REPORT 7 6 5 4 3 2 1 SCA 2-12 octets MTI ● 1 octet MR ● ? 예약 비트 UDL 유무 DCS 유무 PID 유무 SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 1 Bit UDL 정보 미존재 1 존재 1 Bit DCS 정보 미존재 1 존재 1 Bit PID 정보 미존재 1 존재 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 5.1.10 PID 항목 파싱 PID Protocol Identifier 해당 Protocol의 용도에 해당한다. SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140 본 표의 출처 : John Wiley & Sone Mobile Messaging Technologies and Services SMS,EMS and MMS

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 5.1.11 DCS 항목 파싱 DCS Data Coding Scheme 데이터 코딩 방식을 의미한다. 앞장에 상세 설명을 참조 바람. SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 5.1.12 UDL 항목 파싱 UDL User Data Length 실질적인 메시지 내용의 글자수 정보이다. 앞장에 상세 설명 참조. SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

5 SMS-STATUS-REPORT SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 5.1.13 UD 파트 파싱 UD User Data 실질적인 메시지 내용이다. 앞장에서 설명 하였듯이 UD 내에는 User Data Header가 존재 할 수 있다. SCA 2-12 octets MTI ● 1 octet MR ● RA ● SCTS ● 7 octets DT ● ST PI PID DCS UDL Integer UD GSM 7Bit 최대 글자수 160 UCS2 16Bit 최대 글자수 140

6 SMS-COMMAND 6.1 발신 데이타 생성 6.1.1 SMS-COMMAND PDU 구조

7 SMS 수신 확인 7.1 발신 수신 확인 MTI ● MR ● DA ● PID ● DCS ● VP UDL ● 7.1.1 PDU 정보 작성 MTI ● 1 octet MR ● Integer DA ● 2-12 octet 보안 PID ● DCS ● VP 1/7 octet UDL ● UD

7 SMS 수신 확인 7.2 수신 수신 확인 수신확인에 대한 수신 메시지는 일반 메시지로 받는다. 그러므로 특별히 고려하지 않아도 된다.

8 SMS 읽음 확인 8.1 발신 읽음 확인 MTI ● MR ● DA ● PID ● DCS ● VP UDL ● 8.1.1 PDU 정보 작성 MTI ● 1 octet MR ● Integer DA ● 2-12 octet 보안 PID ● DCS ● VP 1/7 octet UDL ● UD

8 IEI (0x44) IEIDL IED SMS 읽음 확인 8.2 수신 읽음 확인 SCA MTI ● OA ● PID ● 8.2.1 PDU 정보 파싱 SCA 2-12 octets MTI ● 1 octet OA ● PID ● 0x00 DCS ● SCTS ● 7 octets UDL Integer UD IEI 식별자 IEI (0x44) 7 6 5 4 3 2 1 IEIDL 1 octet을 사용해야 한다. IED 7 6 5 4 3 2 1 SMSC에서 관리되는 ID 값이다. 메시지 내용이 GSM7Bit인 경우 DCS를 0x00으로 셋팅 하고 KSC !!! 읽음 확인에 대한 응답 : 발신번호 앞에 “ ##431 “ 을 추가한다.