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

レイヤーごとに呼び方が違う

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

 ネットワークでデータをやりとりする場合,データを細かく区切って一つひとつ送ります。ただ,単純に区切って送ればいいというわけではありません。決められた方式に従ってデータを並べる必要があります。そうしないと,コンピュータ同士がデータを正しく処理できません。つまり,プロトコルによってデータを送る単位が決まっているわけです。このデータの単位のことは,正式にはPDU(プロトコル・データ・ユニット)と呼ばれます。フレームもパケットもPDUの呼び名というわけです。

 では,プロトコルごとにPDUの呼び方がすべて違うかというと,そうでもありません。同じレイヤーの通信で使われるデータの単位は,だいたい同じ呼び方をしています。

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

 一方,パケットという呼び方は,レイヤー3の通信で使われます。IPは,まさにレイヤー3のプロトコルです。だから,IPパケットなどと呼ばれるのです。パケットは,直訳すると「小包」という意味です。送りたい情報を小包に入れて,あて先と送信元の情報を付けて送ることに由来しています。

セグメントという呼び方もある

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

 このようにデータの単位は,レイヤーの違いによってだいたい呼び方が決まっているわけです。しかし現実には,これらが厳密に区別されて呼ばれているとは限りません。むしろ「パケット」が,送受信するデータを指す一般的な総称として使われる方が多いくらいです。

 例えば,TCPセグメントは,よく「TCPパケット」とも呼ばれます。また,LANに流れるデータを収集してその内容を表示するソフトウエアは「パケット・キャプチャ・ソフト」などと呼ばれていますが,実際は,IPパケットの内容だけでなく,MACフレームやTCPセグメントの内容も表示します。送受信データ全般のことを指して「パケット」と呼んでいるわけです。

 ただし,フレームのことをパケットと呼ぶことはあまりありません。例えば,MACフレームのことを「MACパケット」と呼ぶことはほとんどありません。そのため,少し乱暴かもしれませんが,レイヤー2のデータはフレームで,それ以上のレイヤーのデータをパケットと言ってもあまり違和感はないでしょう。このことを頭に入れておけば,フレームかパケットかで迷うことはないはずです。