• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養德,非澹薄無以明志,非寧靜無以致遠。
            隨筆 - 397, 文章 - 0, 評論 - 196, 引用 - 0
            數據加載中……

            手機短信的PDU編碼和解碼

            共有三種方式來發送和接收SMS信息:Block Mode, Text Mode和PDU Mode。其中PDU Mode被所有手機支持,可以使用任何字符集,這也是手機默認的編碼方式。

            發送短消息常用Text和PDU(Protocol Data Unit,協議數據單元)模式。使用Text模式收發短信代碼簡單,實現起來十分容易,但最大的缺點是不能收發中文短信;而PDU模式不僅支持中文短信,也能發送英文短信。PDU模式收發短信可以使用3種編碼:7-bit、8-bit和UCS2編碼。7-bit編碼用于發送普通的ASCII字符,它將一串7-bit的字符(最高位為0)編碼成8-bit的數據,每8個字符可“壓縮”成7個;8-bit編碼通常用于發送數據消息,比如圖片和鈴聲等;而UCS2編碼用于發送Unicode字符。在這三種編碼方式下,PDU串的用戶信息(TP-UD)段最大容量(可以發送的短消息的最大字符數)分別是160、140和70。這里,將一個英文字母、一個漢字和一個數據字節都視為一個字符。
            PDU串的用戶信息長度(TP-UDL),在各種編碼方式下意義有所不同。7-bit編碼時,指原始短消息的字符個數,而不是編碼后的字節數。8-bit編碼時,就是字節數。UCS2編碼時,也是字節數,等于原始短消息的字符數的兩倍。如果用戶信息(TP-UD)中存在一個頭(基本參數的TP-UDHI為1),在所有編碼方式下,用戶信息長度(TP-UDL)都等于頭長度與編碼后字節數之和。如果采用GSM 03.42所建議的壓縮算法(TP-DCS的高3位為001),則該長度也是壓縮編碼后字節數或頭長度與壓縮編碼后字節數之和。 

            PDU相當于一個數據包,它由構成消息(SMS)的信息組成。作為一種數據單元,它必須包含源/目的地址、保護(有效)時間、數據格式、協議類型和正文,正文長度可達140字節,它們都以十六進制表示。PDU結構根據短消息由移動終端發起或以移動終端為目的而不同。每條消息可以發送140個字節,由于本系統中最長的數據串沒有超過140個字節,因此數據均可以用一條消息來發送。
            一般的PDU編碼由A B C D E F G H I J K L M十三項組成。
            A:短信息中心地址長度,2位十六進制數(1字節)。
            B:短信息中心號碼類型,2位十六進制數。
            C:短信息中心號碼,B+C的長度將由A中的數據決定。
            D:文件頭字節,2位十六進制數。
            E:信息類型,2位十六進制數。
            F:被叫號碼長度,2位十六進制數。
            G:被叫號碼類型,2位十六進制數,取值同B。
            H:被叫號碼,長度由F中的數據決定。
            I:協議標識,2位十六進制數。
            J:數據編碼方案,2位十六進制數。
            K:有效期,2位十六進制數。
            L:用戶數據長度,2位十六進制數。
            M:用戶數據,其長度由L中的數據決定。J中設定采用UCS2編碼,這里是中英文的Unicode字符。
            PDU編碼協議簡單說明
            例1 發送:SMSC號碼是+8613800250500,對方號碼是13693092030,消息內容是“Hello!”。從手機發出的PDU串可以是
            08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 96 03 29 30 F0 00 00 00 06 C8 32 9B FD 0E 01
            對照規范,具體分析:
            分段 含義 說明
            08 SMSC地址信息的長度 共8個八位字節(包括91)
            91 SMSC地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
            68 31 08 20 05 05 F0 SMSC地址 8613800250500,補‘F’湊成偶數個
            11 基本參數(TP-MTI/VFP) 發送,TP-VP用相對格式
            00 消息基準值(TP-MR) 0
            0D 目標地址數字個數 共13個十進制數(不包括91和‘F’)
            91 目標地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
            68 31 96 03 29 30 F0 目標地址(TP-DA) 8613693092030,補‘F’湊成偶數個
            00 協議標識(TP-PID) 是普通GSM類型,點到點方式
            00 用戶信息編碼方式(TP-DCS) 7-bit編碼
            00 有效期(TP-VP) 5分鐘
            06 用戶信息長度(TP-UDL) 實際長度6個字節
            C8 32 9B FD 0E 01 用戶信息(TP-UD) “Hello!”
            例2 接收:SMSC號碼是+8613800250500,對方號碼是13693092030,消息內容是“你好!”。手機接收到的PDU串可以是
            08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 96 03 29 30 F0 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21
            對照規范,具體分析:
            分段 含義 說明
            08 地址信息的長度 個八位字節(包括91)
            91 SMSC地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
            68 31 08 20 05 05 F0 SMSC地址 8613800250500,補‘F’湊成偶數個
            84 基本參數(TP-MTI/MMS/RP) 接收,無更多消息,有回復地址
            0D 回復地址數字個數 共13個十進制數(不包括91和‘F’)
            91 回復地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
            68 31 96 03 29 30 F0 回復地址(TP-RA) 8613693092030,補‘F’湊成偶數個
            00 協議標識(TP-PID) 是普通GSM類型,點到點方式
            08 用戶信息編碼方式(TP-DCS) UCS2編碼
            30 30 21 80 63 54 80 時間戳(TP-SCTS) 2003-3-12 08:36:45  +8時區
            06 用戶信息長度(TP-UDL) 實際長度6個字節
            4F 60 59 7D 00 21 用戶信息(TP-UD) “你好!”

            詳細解析:
             0891683108200505F011190D91683105155694F50008FF10008FF044F60597D
               <1>短信中心地址字段:0891 
                08:Address-Lengt(地址長度),短信息中心地址長度為8個字節,是(91)+(683108200505F0)的長度,8個8位字節
             91地址類型:10010001       Bit7:1。始終為1       Bits 6,5,4:Type-of-Number(號碼類型):001,代表Internation Number。也即是號碼前加“+”。注意:對某些比較特殊的號碼,例如手機與小靈通的互通時,這里不能設置為001,而要設置成000,代表號碼前沒有“+”,否則無法接收。
            下面是GSM03.40協議號碼類型的解釋:
             0 0 0   Unknown
             0 0 1   International number
             0 1 0   National number
             0 1 1   Network specific number
             1 0 0   Subscriber number
             1 0 1   Alphanumeric(coded according to TS03.38 7-bit default alphabet)
             1 1 0   Abbreviated number
             1 1 1   Reserved for extension
             ll not interpret reserved values but will store them as received.
                   Bits 3,2,1,0:Numbering-plan-identification(號碼鑒別),0000—未知,0001—ISDN/電話號碼(E.164/E.163),1111—留作擴展;一般默認為0001,表示電話號碼類型的。下面是GSM03.40號碼鑒別的解釋:
            Bits3 2 1 0
            0 0 0 0    Unknown
            0 0 0 1    ISDN/telephone numbering plan (E.164/E.163)
            0 0 1 1    Data numbering plan (X.121)
            0 1 0 0    Telex numbering plan
            1 0 0 0    National numbering plan
            1 0 0 1    Private numbering plan
            1 0 1 0    ERMES numbering plan (ETSI DE/PS 3 01-3)
            1 1 1 1    Reserved for extension
            All other values are reserved.
            <2>短信中心號碼:683108200805F0
            一個字節內反轉,8613800280500,如果長度為奇數則需要加“F”補齊。比如號碼為:+8613505165495,去掉"+"后在末尾添加F變為:8613505165495F,再將手機號碼的奇數位和偶數位的相交換為683105155694F5
            <3>FirstOctet字段:1119
                 (1)11       包含TP-MTI(2bit),TP-RD(1bit),TP-VPF(2bit),TP-RP(1bit),TP-UDHI(1bit),TP-SRR(1bit)
            二進制表示形式:0 0 0 10 0 01
            TP-MTI:01 TP-Message-Type-Indicator(消息類型指示符)

                 Bit1,0:00—讀出(Deliver); 01—提交(Submit)
            Bit1,0:01指示為SMS-SUBMIT類型 
            下面是GSM03.40的解釋:
             bit1 bit0  Message type
             0     0    SMS-DELIVER (in the direction SC to MS)
             0     0    SMS-DELIVER REPORT (in the direction MS to SC)
             1     0    SMS-STATUS-REPORT (in the direction SC to MS)
             1     0    SMS-COMMAND (in the direction MS to SC)
             0     1    SMS-SUBMIT (in the direction MS to SC)
             0     1    SMS-SUBMIT-REPORT (in the direction SC to MS)
             1    1      ReservedTP-RD:0  TP-Reject-Duplicates(是否拒絕相同重復消息)

               Bit2:0—接受復制; 1—拒絕復制
             
             Bit2:0   指示短消息中心接收未轉發的具有相同TP-MR的消息。
             Bit 2:
             0    Instruct the SC to accept an SMS-SUBMIT for an SM still held in the  SC which has the same TP-MR and the same TP-DA as a previously submitted SM from the same OA.
             1    Instruct the SC to reject an SMS-SUBMIT for an SM still held in the   SC which has the same TP-MR and the same TP-DA as the  previously submitted SM from the same OA. In this case an  appropriate TP-FCS value will be returned in the SMS-SUBMIT-REPORT.
            TP-VPF:10   TP-Validity-Period-Format(有效期格式)

            Bit4,3::00—不提供(Not present);01—預留;  10—整型(標準),指使用相對格式;11—提供8位字節的一半(Semi-Octet Represented) 
            下面是GSM03.40的解釋:
            bit4 bit3
            0   0      TP-VP field not present
            1   0      TP-VP field present and integer represented (relative)
            0   1      Reserved
            1   1      TP-VP field present and semi-octet represented (absolute)
            TP-SRR:0    TP-Status-Report-Request
               Bit5:    1:需要報告,0:不需要報告。
            Bit 5:
            0       A status report is not requested
            1       A status report is requested
            TP-UDHI:0   TP-User-Data-Header-Indicator(用戶數據頭標示)   Bit6:   1:含頭信息  0:不含頭信息,指示這是一個SMS消息,沒有用戶數據頭,EMS(增強消息業務)消息需要設置。圖片鈴聲這些都是包含頭部信息的.文本不包含頭部信息
            Bit  6
            0     The TP-UD field contains only the short message
            1     The beginning of the TP-UD field contains a Header in addition to the  short message
            TP-RP:0     TP-Reply-Path(回復路徑)   Bit7:    1:設置回復路徑,0:沒有設置回復路徑。
            下面是GSM03.40解釋:
            Bit 7:
            0:  TP-Reply-Path parameter is not set in this SMS-SUBMIT/DELIVER
            1:  TP-Reply-Path parameter is set in this SMS-SUBMIT/DELIVER
            (2)消息參考值TP-MR (TP-Message-Reference):19如果使用"00" 值代表讓電話自己設置消息參考值.
             
              <4> 對方號碼字段:0D913105155694F5 
                0D:目標地址數字個數,共13個十進制數(不包括91和‘F’)
                91:地址類型,同短信中心號碼設置.
               3105155694F5:目標手機號碼。

            <5>上層協議標識TP-PID(TP-Protocol-Identifier):00
                 一般設置為00,表示普通GSM,點對點  <6> 數據編碼設置TP-DCS(TP-Data-Coding-Scheme):08
                指示TP-UD的編碼方式。08代表Unicode方式。參照GSM03.38協議:
            Bit 3,2
            00    Default alphabet
            01    8 bit
            10    UCS2 (16bit) [10]
            11    Reserved
              <7>有效期TP-VP(TP-Validity-Period):FF
                FF表示最大。
              <8> 用戶數據長度TP-UDL(TP-User-Data-Length):4
                  用戶數據實際長度。注意不同編碼下用戶長度定義不同。
               <9>用戶數據 :4F60597D     "你好"的Unicode編碼
            你:0x4F60;好:0x597D
              2:手機接收的PDU串
             0891683108200505F0040D91683105155694F5000850208151754500044F60597D
               <1>短信中心地址字段:0891683108200505F0,即是+8613800250500
             <2>FirstOctet :04        其二進制代碼:00000100
                TP-MTI:00
                TP-MMS(TP-More-Message-to-Send):1 短信中心沒有更多的消息發送
                TP-SRI: 0
                TP-UDHI:0
                TP-RP:  0
             <3>發送方號碼 :0D91683105155694F5   即+8613505165495
             <4>協議標識: 00    TP-DCS 點對點
             <5>編碼方式: 08    TP-DCS Unicode編碼
               <6>短信中心時間    50208151754500 
                 字節反轉05/02/18 15:57:45 最后的00代表時區,這里為0
               <7>用戶數據長度 :4
             <8>用戶數據:4F60597D     
               中文“你好”的Unicode編碼

            posted on 2009-07-04 17:20 Benjamin 閱讀(9452) 評論(0)  編輯 收藏 引用 所屬分類: 雜談

            久久99精品国产99久久| 91久久九九无码成人网站| 久久青青色综合| 国产精品美女久久久| 综合久久给合久久狠狠狠97色 | 日产精品久久久久久久性色| 亚洲成人精品久久| 久久综合视频网站| 久久97久久97精品免视看秋霞 | 色婷婷狠狠久久综合五月| 国产亚洲精品自在久久| 中文字幕乱码久久午夜| 日本精品久久久久影院日本| 日本久久久久亚洲中字幕| 久久精品国产精品亚洲人人 | 欧美日韩中文字幕久久久不卡| 熟妇人妻久久中文字幕| 国产美女亚洲精品久久久综合| 亚洲成色999久久网站| 亚洲国产精品无码久久久秋霞2| 久久久久九国产精品| 99国产欧美久久久精品蜜芽| 国产欧美久久久精品影院| 久久综合亚洲色HEZYO社区| 国产毛片久久久久久国产毛片| 99久久精品国产综合一区| 久久精品国产亚洲AV无码麻豆| 狠狠88综合久久久久综合网| 国产精品久久新婚兰兰| 久久香蕉国产线看观看猫咪?v| 国产精品久久久久乳精品爆| 国产精品久久永久免费| 久久无码av三级| 国内精品久久国产| 亚洲精品第一综合99久久| 久久99这里只有精品国产| 色偷偷88欧美精品久久久| 亚洲伊人久久成综合人影院| 亚洲中文字幕伊人久久无码 | 东京热TOKYO综合久久精品| 久久婷婷激情综合色综合俺也去 |