IPパケット(IPデータグラム)
IPパケット(IPデータグラム)とは、ネットワーク層での通信におけるパケットのことです。
イーサネットフレーム(MACフレーム)との関係をきちんと理解しておくことが大切です。
以下、イーサネットフレーム(MACフレーム)の構造ですが、この中の青色で塗ってある「データ」部分が「IPパケット」のことを指しています。
プリアンブル 4バイト |
宛先MACアドレス 6バイト |
送信元MACアドレス 6バイト |
タイプ 2バイト |
データ | FCS 4バイト |
そして、青色部分の「IPパケット」の構造を細分化すると、以下のようになっています。
IPパケットにおけるデータ以外の部分を「IPヘッダ」と言います。
IPヘッダのそれぞれのフィールドについて、説明していきます。
【バージョン】4bit
IPのバージョンを指しています。
IPv4なら「4」が設定されます。
【ヘッダ長】4bit
ヘッダの長さを指しています。
【サービスタイプ】8bit
パケットの優先順位を指しています。
音声などのパケットは優先度が高く設定されていることが多いですが、その場合はこの値によって通信の優先順位が制御されます。
【パケット長】16bit
ヘッダ+データ長により算出される、パケットの長さを指しています。
【識別子】16bit
パケットが分割(フラグメント)された場合に、データ受信側でデータを再構築できるように、どのパケットが一つのまとまりになっているかを識別するための情報になります。
【フラグ】3bit
該当のパケットが、分割(フラグメント)されているのかどうか、分割された中の最後のパケットなのか途中のパケットなのかを識別するための情報になります。
【フラグメントオフセット】13bit
該当のパケットが、分割(フラグメント)された中の何番目のパケットなのかを識別するための情報になります。
これにより、データ受信側は、パケットが分割(フラグメント)されていても、受信したパケットを再構築してデータとして受け取ることができます。
識別子、フラグ、フラグメントオフセットの3つは、IPパケットの分割(フラグメント)に関する情報なります。
【TTL(生存時間)】8bit
IPパケットが通過できるルータの数を指しています。(ホップ数)
パケットは、ルータを1つ通過するごとにTTLを1ずつ減らしていき、0になったタイミングでパケットが破棄されます。
(ネットワークにおいて、パケットが永遠にループしてしまうことを防ぐための機能です)
【プロトコル番号】8bit
上位層(トランスポート層)で用いられるプロトコル番号を示す情報になります。
【ヘッダチェックサム】16bit
ヘッダの誤り検出を行うフィールドです。
【送信元アドレス】32bit
送信元のIPアドレスを指しています。
【宛先アドレス】32bit
宛先のIPアドレスを指しています。
【オプション+パディング】bit数は任意(32bitの整数倍)
オプションは、デバッグやテストに使われるフィールドです。
パディングは、オプションを設定した際に、IPヘッダを調整するフィールドです。
※このフィールドは、通常では使用されません。
フラグメント
MTUが異なる機器間で通信を行う場合、パケットが分割されることがあります。
これを、「フラグメント」と言います。
フラグメントをすることで、MTUが異なる機器間での通信を実現したり、パケットの破棄を防ぐことができます。
コメント