슬라이드 1

Download Report

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