ネットワーク入門

ネットワーク・コーナ
ご購入はこちら
ダウンロード・データあります
パケットづくりではじめる
ネットワーク入門
第
20 回
次世代パケット・フォーマット
PcapNG フォーマットを読み込む
元の
pcapファイル
arp.pcap
PcapNG
ファイルに変換
定番ネットワーク
解析ソフトウェア
Wireshark
元のpcapファイル 逆コンバータで
と比較
変換した
pcapファイル
PcapNG
ファイル
arp.pcapng
坂井 弘亮
パケット・ライブラリ
libpkt.a
PcapNG→pcap
逆変換プログラム
(pcapng2pcap)
arp2.pcap
図 1 今回すること…次世代パケット・フォーマット PcapNG を読み込む
pcap フォーマットに戻して正しいか確認する
本連載はネットワーク上を流れるパケットを直接扱
うようなツールを自作しつつ,ネットワークの仕組み
を勉強していきます.テーマは「自作」
,
「現物ベース」
,
「動く感動」の 3 つです.ネットワークにはイーサネッ
トと IP を想定しています.
● 前回したこと…次世代パケット・フォーマット
PcapNG の出力
前回(第 19 回,2017 年 2 月号)は,ネットワーク・
パケットを保存するための次世代フォーマットである
PcapNGフォーマットと,その出力方法の具体例につい
て説明しました.従来の pcap フォーマットを PcapNG
に変換するコンバータを作成しました.
● 今回すること…PcapNG の読み込み(入力)
今回は,PcapNG からの入力について説明し,Pcap
NG から pcap フォーマットに戻す逆コンバータを作成
します(図 1)
PcapNG フォーマット読み込み時の
注意点
前回説明した PcapNG フォーマットのファイルを読
む際には幾つかの注意点があります.
● その 1…エンディアンを考慮しないといけない
PcapNG のブロック中のフィールド値は,生成した
環境のネイティブなエンディアンで格納されます.つ
まりリトル・エンディアンとビッグ・エンディアンの
142
両方があり得ます.
このため PcapNG を読み込む際は,本来ならば両エ
ンディアンに対応する必要があります.エンディアン
は, セ ク シ ョ ン 先 頭 の SHB(Section Header Block)
のマジック・ナンバを見て判断します.エンディアン
の判断を行わない場合,自身の環境で生成したPcapNG
ファイルは読み込めても,エンディアンの異なる他環
境で生成された PcapNG ファイルは正常に読み込めな
いといった問題が発生します.
なおエンディアン変換の処理は 16/32 ビットだけで
なく,64 ビットのものも必要です.これは SHB のセ
クション長が,64 ビット値で格納されているためで
す.
● その 2…不明なブロックをスキップするように
しておく
PcapNG はブロック単位で情報を保持しています.
各ブロックの定義は以下にあります.
http://pcapng.com/
上記サイトの「Pcap-NG specification」が PcapNG の
仕様です.各ブロックの定義は 3 章にあります.
現状では,7 種類のブロックが定義されていますが,
そ の う ち の 1 つ(Packet Block)は 廃 止 と な り,EPB
(Enhanced Packet Block)を使うことが推奨されてい
ます.つまり,現状で主に利用されるブロックは 6 種
類となります.しかし,今後,PcapNG フォーマット
がバージョンアップした際には,ブロック種別が追加
される可能性があります.
本連載のプログラムのソースコードは以下の筆者のホームページからダウンロードすることが
できます.ライセンスは KL-01 というもので,
組込み機器などでも自由に利用することができます.
http://kozos.jp/books/interface/ethernet2/
2017 年 3 月号