白話メールプロトコル


白話メールプロトコル
私达はすべてメールが実はネットを通じて(通って)伝送することを知っていて、しかし歩いたのは核心のネットで、それでは同じように歩いたのがネットである以上、あれはこれらのデータは01010にすぎません...、あの携帯电话はどのようにこの01010...を翻訳して私达の见た文字のメールのになりますか?
実はメールプロトコルは私达のHTTPととても似ていて、TCP/IPのプロトコルに基づいて、メールプロトコルも情报の头と情报体を含んで、そのすべての部分はすべて规定の意味があります
次に、このプロトコルを白話で説明します.その前に、2つの概念を紹介します.
PDU(Protocol Data Unit):私たちのメールのデータ全体を代表して、パッケージとも呼ばれています.
UDH(User Data Header):データヘッダ
UD(User Data):データボディ
PDUにはUDHとUDが含まれています.そのPDUはこのようなものです.
次に、最も一般的な例、つまり私たちが普段最も多く見ている普通のテキストメールを例に、各部分に具体的にどのような内容が含まれているかを説明します.
UDH(User Data Header)
ここでもまず2つの概念を紹介します
IE(Information Element):UDHユニットを表す
IED(IE Data):一つのIEを含む内容
IEL(Length of IE):1つのIEDが占有するバイト長を表す
IEI(IE Identifier):IEが具体的にどのような意味を表すかを表す
UDHL(Length 0 f UDH):UDH全体で使用されるバイト長を表す
1つのIEは1つのIEIと1つのIEDデータを含んで、そのIEはこのようにします:
IEIは上で説明して、このIEが何を代表することを表して、IEIはたくさんあって、私達はここで展開して言わないで、1つのIEIは1バイトを占めて、普通のメールのIEI=0x00は最もよく使うので、1本のつなぎメール(CONCATENATED)を表して、後で私達は更に何がつなぎメールですかを説明します
では、IEDには何が入っていますか.IEI=0x00のとき、IEDにはrefNR、totalNumberOfSms、seqNRの3バイトが含まれています.ここでは具体的な値がいくらであるかは関係ありません.私たちはそれらが3バイトを占めていることに関心を持っています.
最後にIEDLの値を見てみましょう.IEDLは同じバイトを占有しています.私たちがIEDLの値を必要とするのは、異なるIE、IEDが異なるため、IEDの長さを指定してデータを正確に読み出す必要があります.IEI=0x00の場合、IEDが3バイトを占有していることを知っています.IEDL=3refNR,totalNumberOfSms,seqNRが0x01 0x01 0x01であると仮定すると,最後に得られたIEの値は0x00 0x03 0x01 0x01 0x01であった.
IEDLと同様にUDHLが必要なのはUDH全体の長さを指定するためで、UDHLは1バイトを占有するので、UDHはこのようにします:
もし私たちがIEが1つしかなかったら、私たちのUDH値は:0x05 0x00 0x03 0x01 0x01 0x01 です.
UD(User Data)
ここでもまずコンセプトを紹介します
UDL(Length of UD):PDUデータの占有バイト長を表す
完全なPDUはこのようなものです
UDは実は私たちのメールの内容で、つまり複数のバイトで、ここでは同じように内容が具体的に何であるかを気にしないでください.同じように、もし私たちがメールの内容が4バイトの0xfe 0xff 0x00 0x61だと仮定したら、私たちは上のUDHを加えて、それは全部でバイトの長さが6で、UDLは1文字の節を占めています.だから、UDL=10最終的に得られたPDU値は、0x10 0x05 0x00 0x03 0x01 0x01 0x01 0xfe 0xff 0x00 0x61である.
メールデータ全体がどのように構成されているのか、各部分が表す意味、および一般的なテキストメールを例に、各部分に含まれる内容を大まかに説明したので、UDの内容がどのようにテキストに変換されているのかを引き続き紹介します.
その前に、古いルールで、もう一つの概念を紹介します.
DCS(Data Coding Scheme):UDのデータをどのように処理すべきかを示す
DCSについては、前述したように、UDをどのように処理するかを示すデータ、つまりUDがどのようにテキストに変換されるかを含む情報が1バイト占有されており、その中の1人(bit)ごとに異なる処理方式があり、2^8ほど多くはないが、少なくない
1つのDCSは主に2つの情報、UD符号化方式(Character Set)、およびメールカテゴリ(Message Class)を含む.
符号化方式は4種類ある(GSM 7 bit,ISO 8859-1,UCS 2,reserved)
メールカテゴリは4種類(Class 0,Class 1,Class 2,Class 3)
私達の国内のキャリアを例にして、私達の普通のショートメールの使う符号化の方式はUCS 2で、ショートメールの類別はClass 1で、あのdcsの値は0x19で、もちろんこの値についてきっと符号化の方式とショートメールの類別だけで得たのではありませんて、私達は前に言って、DCSのすべての位の値はすべてUDの処理に影響して、符号化の方式とショートメールの類別はただその中の4位だけを占めて、残りの4人には別の意味があるので、ここでは展開しません
DCSがあって、すぐ符号化の方式があって、私達はUDのバイトとテキストを互いに転化することができて、実は上の例の中でUDの値は英語のアルファベットのaがUCS 2の符号化を通じて得たバイトです
CONCATENATED
次に長いテキストの問題についてお話ししますと、1本のメールの長さに制限があることはよく知られています.一般的に140バイトです.漢字は一般的にUCS 2コードを使用しています.UCS 2は1文字が2バイトを占めています.そのため、1本のメールはUCS 2コードのメールで、70文字を超えると、複数のメールに分割する必要がありますが、私たちの携帯電話には長いメールが表示されます.では、私たちの携帯電話はどのように処理されていますか?
私たちが前にUDHを紹介したときの例を覚えていますか.UDHのIEI=0x00は、1本のつなぎメール(CONCATENATED)を表しています.このIEDにはrefNR、totalNumberOfSms、seqNR、長いテキストがこのIEを通じて複数のメールが同じメールであるかどうかを識別する3つの値があります.
この3つの値の意味を説明します
refNR:同じ値の場合、同じメールとして表示されます
totalNumberOfSms:何通のメールでつなぎ合わせるか
seqNR:つづりメールの順番
したがって、上記の例では、この3つの値はいずれも1であり、このメールが1つのメールで構成されていることを示している.
この記事では、メールプロトコルの基本的な概念、メールプロトコルの構成、およびいくつかの一般的な値を白話で紹介しました.私たちの国内事業者が使用しているプロトコルも、上記で紹介したプロトコルに基づいて、それぞれ特有の内容を加えて形成されています.
SMSJ
smsjはショートカラープロトコルプロジェクトで、完全に豊富なdocがあり、smsjはショートカラープロトコルの内容を簡単に生成することができ、具体的な使用方法はプロジェクトのアドレスを見ることができる.
次の白話カラーメッセージプロトコル