5月に有楽町でネットワークパケットを読む会に行ってきた。何故、ネットワークパケットかと言うと普段、組み込みLinux関係でRTPを飛ばしていることもあって。
WireSharkはネットワークトラフィックをキャプチャしパケットのバイナリ → ASCII化やプロトコルのフィルタリングなどができるツール。
TCP/UDP/ARP/ICMPなどプロトコル別に区別されていて、選択すると詳しくパケットが見れる。
プロトコルやパケットフォーマットを知ることは、セキュリティ面に関わることでもあるのでネットワークを使うアプリ開発者にも必要かなと思う。
例えば、動画サイトで配信する FLVにJavaScriptを埋め込んでflashで再生させる。でも、そのJavaScriptは偽装されたウイルスでした。みたいなこともあるらしい。
こんなときはWiresharkでFollow TCP Streamを使って、気になる先頭文字のパターンを見てそれ以降のパケットを細かくみていくといいらしい。
仕事をアプリ開発に話を絡めると、iOSでは HTTPLiveStreaming(HLS) が推奨されているので、ニコニコなどではモバイル配信ではRTMPをHLSにするため変換サーバを使ってやってるらしい。
無理矢理RTPでつくるならUDPソケットを扱うライブラリを使って、RTPヘッダー解析部分etcは自分で作るのだけど、H.264の展開などはアプリ側でやる、つまりiOS端末のH.264ハードウェアデコーダが使えないので処理は遅くなる。
ネットワークパケットを読む会は今月も開催されるらしいのでネットワーク/セキュリティに興味あるひとは是非。