[AS3][AMF]AMFのパケット仕様について

なんとなくですが、AMFのパケットの中身はどうなっているのだろうか?と思い立って調べてみました。

Googleで、「AMF パケット 仕様」で調べた結果、AdobeがAMF規格の仕様をPDFファイルで公開していたのを見つけました。

AMF0  http://opensource.adobe.com/wiki/download/attachments/1114283/JP_amf0_spec_121207.pdf
AMF3  http://opensource.adobe.com/wiki/download/attachments/1114283/JP_amf3_spec_121207.pdf

上のPDFですと私自身はいまひとつ分かりにくかったので、以下表にして簡単にまとめてみました。

AMFパケットの仕様

項目 説明
AMFパケットのバージョン  U16 AMFパケットのバージョン
AMF3=3
AMF0=0
ヘッダー数  U16 ヘッダーの数

 ヘッダー

※ヘッダー数分繰り返す

 ヘッダー名称サイズ  U16  ヘッダー名称の文字列長
 ヘッダー名称  UTF8 ヘッダー名称
文字列の長さはヘッダー名称サイズ
 ヘッダーのバイト長  U32 ヘッダーのバイト長
※わからない場合は(U32)-1
 value-type    
 AMFメッセージ数  U16  AMFメッセージ(ボディ)の数

 AMFメッセージ部

※AMFメッセージ数分繰り返す

 ターゲットURIサイズ  U16  ターゲットURIの文字列長
 ターゲットURIサイズ  UTF8  ターゲットURI名称
文字列の長さはターゲットURIサイズ
 レスポンスURIサイズ  U16  レスポンスURIの文字列長
 レスポンスURIサイズ  UTF8  レスポンスURI名称
文字列の長さはレスポンスURIサイズ
 メッセージのバイト長  U32  メッセージのバイト長
※わからない場合は(U32)-1
 value-type    

U8 = 符号なしのバイト、8 ビットのデータ、オクテット
U16 = ビッグエンディアン(network)バイトオーダで記された符号なしの16 ビット整数
U32 = ビッグエンディアン(network)バイトオーダで記された符号なしの32 ビット整数

 ドキュメントを読んでも、value-type の部分がいまいち謎です。

こういうことに今まで興味がわかなかったのは技術者としては?でしょうが、今回調べたことでAMFの中身についてある程度知ることができました。
そのうち、パケット解析ツールなどを使用して実際のデータを除いてみたいと思います。

このブログについて

このブログは吉祥寺にあるブレインチャイルド株式会社の社員で投稿しています。
業務ではまってしまったことや発見したこと。
自分達で新たに学習してみようと思って勉強し始めたことなどを綴っています。
こんな社員が働いているブレインチャイルドに興味がわいててきたなら、是非お問い合わせください。
会社案内
求人案内
先輩のコメント