ASN.1とは携帯やパソコン間通信等の電気通信で良く使用されるデータ構造の記述方法です。
この記法を送受側合わせておくことでより少ないデータ量で情報の送受信が可能になります。
これにはどんなメリットがあるかというと大きく以下2点です。
・低コスト(少ないパケット代ですむ。運営側は帯域が多少狭くても大丈夫になる)
・高速(送りたいデータ量が少ない=データサイズが小さい=送り終わるまでの時間が速い=高速)
■ASN.1の送受信イメージ
例えば、対戦格闘ゲームで有名な手からビームがでるコマンド「↓\→+P」を通信で相手に送るとします。
この時にルールとして
↑:0x00
↓:0x01
←:0x02
→:0x03
\:0x04(左上)
\:0x05(右下)
/:0x06(左下)
/:0x07(右上)
+:0x08
P:0x09
K:0x0a
とすると「↓\→+P」を表現するのに普通は「01 05 03 08 09」の5Byteを相手に送る必要があります。
これをASN.1(PER)で表現すると
まずは以下のルールを送受信側で用意しておきます。
Key_Command ::= SEQUENCE { command SEQUENCE(SIZE(1..10)) OF Command } Command ::= ENUMERATED { ue, shita, hidari, migi, hidariue, migishita, hidarishita, migiue, plus, p, k }
そうすると「41 53 89」の3Byteだけ送るだけで済みます。
そして受信側は受け取った「41 53 89」をデコードし、
HEX |Bits|Value ----+-----------------------------------|-----+-------- | |Key_Command SEQUENCE Data | |command 41|0100|command SEQUENCE_OF DataLength| 4|4+1=5 | |command SEQUENCE_OF Data | |Command |0001|Command ENUMERATED Data | 1|Shita | |command SEQUENCE_OF Data | |Command 53|0101|Command ENUMERATED Data | 5|migishita | |command SEQUENCE_OF Data | |Command |0011|Command ENUMERATED Data | 3|migi | |command SEQUENCE_OF Data | |Command 89|1000|Command ENUMERATED Data | 8|plus | |command SEQUENCE_OF Data | |Command |1009|Command ENUMERATED Data | 9|p
こんな感じの情報を受け取ることになります。
Key_Command command shita command migishita command migi command plus command pこのように、定型文など決まった情報を使用する際にはASN.1を使用してやり取りを行うことで、低コスト・高速な通信が可能になります。
↓よろしければクリックをお願いします!
■関連ページ
【ASN.1】PER(Packed Encoding Rules)コーディングとは
0 件のコメント:
コメントを投稿