ネットワークを流れるデータの呼び方として,「パケット」と「フレーム」という二つの言葉がおなじみである。しかし,どの場面でどちらを使えばよいのか迷ったことがある人もいるのではないだろうか。これら二つの言葉には,大きな違いはないような気もするが,本当にそうなのだろうか。今回は,こんな基本的な疑問に答えよう。

 フレームもパケットも,ネットワークを流れるデータの単位をあらわす言葉である。そういう意味では,両者に違いはない。

 ネットワークを介した通信では,送るべきデータを細かく区切ったうえで,その固まりを一つひとつ送る。ただし,単純に区切って送ればいいというわけではない。データを区切ったうえで,通信のやりとりに必要となるさまざまな制御情報を加えて一つの固まりにしなければならない。

 データおよび制御情報の並べ方を「フォーマット」と呼ぶ。フォーマットは,データ通信の手順と同様,「プロトコル」として規定されている。お互いが通信するには,同じプロトコルで,同じフォーマットのデータをやりとりしなければならないのである。

 データの固まりは,正式には「PDU」(プロトコル・データ・ユニット)と呼ばれる。つまり,フレームもパケットもPDUの呼び名というわけだ。

 プロトコルごとにフォーマットは異なる。しかし,だからといってプロトコルごとにPDUの呼び方がすべて違うかというと,そうではない。実は,そのプロトコルが該当するレイヤー(階層)によって,PDUの呼び方がだいたい決まっているのである。

 フレームは,レイヤー2の通信で使われるPDUの呼び名である。レイヤー2のプロトコルには,イーサネット,PPP(point to point protocol),HDLC(ハイレベル・データリンク制御手順)などがある。これらで使うデータの単位は,すべてフレームと呼ばれている。イーサネットならMACフレーム,PPPならPPPフレーム,HDLCはHDLCフレームといった具合だ。

 一方,パケットという呼び方は,レイヤー3の通信で使われる。IPは,まさにレイヤー3のプロトコルなので,IPパケットと呼ばれるのである。

 フレームやパケットのほかに,PDUには「セグメント」という呼び方もある。これは,TCPやUDPのようなレイヤー4の通信で使われるデータの呼び方になる。例えば,TCP通信時にやりとりするデータはTCPセグメントと呼ばれる。

 レイヤーごとに呼び名が決まっているPDUだが,実際は,厳密に区別しているケースは減ってきている。どんなレイヤーでも「パケット」がPDUの一般的な総称として使われる方が多い。LANに流れるデータを収集してその内容を表示するソフトウエアを「パケット・キャプチャ・ソフト」などと呼ぶのは,その典型例といえる。

 ただし,フレームのことをパケットと呼ぶことはあまりない。そのため,少し乱暴かもしれないが,レイヤー2のPDUをフレーム,それ以上のレイヤーのPDUをパケットと言っても,あまり問題はないだろう。

半沢 智