データのカプセル化
イーサネットでTCP/IPの通信、例としてHTTPを使った通信を行うと、データは次のように下位層のプロトコルのヘッダから順番に付加されていきます。ヘッダで包み込んでいくことからカプセル化とも呼ばれます。
IPヘッダ
各階層のヘッダの中からIPプロトコルによって付加されるIPヘッダについて見ていきます。 IPプロトコルのヘッダは次の図のようになっています。
IPヘッダは標準では20バイトです。これにオプションがついてくると20バイトを超えることはありますが、全体のサイズは必ず4の倍数のバイト数になります。
以下で、IPヘッダの各フィールドについて解説します。
バージョン、ヘッダ長
まず「バージョン」にはそのものずばりのIPのバージョンが入ってきます。現在のIPのバージョンは「4」です。そしてもう一部では使われていますが、IPの次のバージョンは「6」となります。あれ?「5」はどうしたの?って思いますが、すでに実験用に使われているので、「4」の次は「6」となっています。IPバージョン6についてはそのうちやろうかなと思います。
次に「ヘッダ長」ですが、ここにはIPヘッダの長さが入ってきます。ただし生の長さが入ってくるのではなく、4バイト単位の長さが入ります。つまり標準ではIPヘッダは20バイトですので、この「ヘッダ長」は「5」です。
優先順位、パケット長
「優先順位」では各データの優先順位を決めてあげることができます。PCがデータを送るというときの優先順位ではなく、ルータがルーティングを行うときの優先順位です。これはいわゆるQoS(Quality of Service)と呼ばれる方法です。QoSとは、データごとに優先順位を決めてより賢くデータの転送を行うためのものです。たとえば、音声のデータは遅れてしまったり、順番が変わってしまうと困ってしまいます。そのようなデータは優先的に転送します。ですが、ファイル転送などはとくにデータが遅れてもそれほど影響はしません。そのようなデータはゆっくり送るという制御を行うために使います。
また、この部分はToS(Type of Service)と呼ばれることもあります。
「パケット長」ではヘッダを含めたIPパケット全体の長さが入ってきます。生のデータの長さを知りたいときには、パケット長-ヘッダ長でわかります。
識別番号、フラグ、フラグメントオフセット
次の3つの情報である「識別番号」「フラグ」「フラグメントオフセット」はデータの分割と組み立てに関わってくる情報です。
データの分割、組み立てはどういうときに行われるんでしょう?
ここで、イーサネットのひとつのフレームが送ることができるデータの最大値を思い出してください。イーサネットではひとつのフレームで1500バイトのデータを送ることができます。この最大値のことをMTU(Maximum Transmit Unit)と言っていましたね?とするとこのMTUを超えてしまうデータを送るときには分割して、複数のフレームにしなくてはいけないということになります。
ではどういう風に分割されていくんでしょう?データが2000バイトあるときを考えてみます。すると2つのフレームに分割してこの2000バイトを転送することになります。ただ、ここで注意することはイーサネットから考えるとIPヘッダもデータになるんですね。ということから次の図のように分割されます。
分割されたデータのIPヘッダ内の「識別番号」にはすべて同じ値が入ります。「識別番号」が同じということはもともとひとつのデータですよ!ということを表しているわけです。そして、「フラグ」には分割されたデータが最後のデータなのか?というような情報が入ってきます。あと組み立てるときに必要なことを考えると、分割されたデータはもともとのデータのどの位置にあったものか?ということが必要です。その情報が「フラグメントオフセット」です。データが分割されて送られても、受け取ったコンピュータの方でこの3つの情報からもとのデータに復元することができる仕組みになっています。








