IPヘッダはIPプロトコルを使用し、OSI参照モデルの3層で挿入されるヘッダのことです。
IPヘッダもTCPヘッダと同様にデータを相手に正確に送信するためのものです。
IPヘッダには様々な機能がありデータを転送するために制御をしています。
IPヘッダの構成
IPヘッダにはバージョン、ヘッダ長、サービスタイプ、全長、識別子、フラグ、フラグメントオフセット、生存時間、ヘッダチェックサム、送信元IPアドレス、宛先IPアドレス、オプション、データがあります。
それでは、それぞれの機能について説明していきます。
バージョン
バージョンは4bitで構成されています。
バージョンではIPプロトコルのバージョンの表しています。
IPプロトコルのバージョンはIPv4とIPv6の二種類があります。
IPv4であれば「0100」をIPv6であれば「0110」が挿入されています。
ヘッダ長
ヘッダ長は4bitで構成されています。
ヘッダ長ではIPヘッダの長さを表しています。
なぜ長さがいるのかというとIPアドレスは基本的に20byteですがオプションによってはそれ以上の長さになる可能性があるからです。
サービスタイプ
サービスタイプは8bitで構成されています。
サービスタイプではデータの優先度、遅延、転送量の多さ、信頼性、コストの情報が入っています。
それぞれ優先度は3bit、遅延は1bit、転送量は1bit、信頼性は1bit、コストは1bitです。
そして、残りの1bitは将来使う可能性があるため空きの状態です。
識別子
識別子は16bitで構成されています。
データを送信する際にイーサネットではデータの長さを通常1500byteまでという制約があります。
そのため、1500byte以上になると複数のパケットに分けなければなりません。
識別子では分割したパケットをもとのデータに直すために同じデータかどうか判断する必要があります。
例えば二つの異なる内容のデータが分割されて送られてきたとき分割されたパケットはどれが正しいかわかりません。
そこで識別子に同じ内容のデータであれば同じ識別子を与えます。そうすることでデータごとに分けることができます。
フラグ
フラグは4bitで構成されています。
フラグではデータが分割(フラグメント化)されているか示されています。
フラグメントオフセット
フラグメントオフセットは12bitで構成されています。
フラグメントオフセットではフラグメント化されたデータを正しい順番に再構築できるようにします。
例えばIPでのデータを6000バイトとし2層でEthernetを使うと考えます。
このとき、Ethernetの最大容量は1500バイトなのでIPからEthernetにデータを渡すときに4つにデータを分割します。
この時、最初のデータのIPヘッダのフラグメントオフセットを0に設定します。
二つ目のIPヘッダのフラグメントオフセットには185をセットします。
このデータ量からIPヘッダのデータ量(一つ当たり20バイト)を引くと5920バイトとなります。
これを4つに分けるので、5920÷4=1480。
オフセットは8バイト単位でオフセットの計算をするため1480÷8=185でこの値になります。
3つ目は370、4つ目は555をセットします。
受信側ではこの値に8倍した結果から順番に並べ替えます。
生存時間(TTL)
生存時間は8bitで構成されています。
送信したデータはルータを通して様々なところで伝送されます。
しかし、どこかのネットワークでループした場合、一生データが届かず、エラーメッセージも得ることができない状態となってしまいます。
そこで、ある一定のルータを通過した場合データを削除するために、生存時間(TTL)を使います。
現在、100以下のルータを経由すればどこのネットワーク機器にも接続することができます。
そのため、このTTLには基本的に128を入れます。
ルータを一つ経由するごとにこの128から順番に127→126という風に減っていきます。
そして、この値が0になればそのデータは削除され、ルータはICMPエラーメッセージを送信側に送信します。
プロトコル番号
プロトコル番号は8bitで構成されています。
このプロトコル番号には上位のトランスポート層(4層)でどのプロトコルが使われているか表しています。
この番号を元に上位層でデータが処理されます。
例えばTCPであれば6,UDPであれば17という風に割り当てられています。
チェックサム
チェックサムは16bitで構成されています。
チェックサムではIPヘッダのエラーを見つけるために使用されています。
送信側と受信側で同様の計算法を用いてエラーを見つけます。
送信元IPアドレス
送信元IPアドレスは32bitで構成されています。
送信元IPアドレスは送信する自分のIPアドレスを挿入します。
宛先IPアドレス
宛先IPアドレスは32bitで構成されています。
宛先IPアドレスはDNSサーバからもらったIPアドレスをここに入れます。
オプション
オプションは可変長です。
オプションにはセキュリティやルート記録など、さまざまな設定をすることができますが、多くの場合このオプションは使用されていません。
パンディング
パンディングのオプションと同様に可変長です。
パンディングではヘッダ部が32bit単位となるようにデータの末尾に設置されます。
32bit単位に揃えるのは多くのコンピュータで32bit単位で処理されているため、ヘッダ部とデータ部を分けられ処理を高速化することができます。
データ
データは46~1480bitで可変長となっています。
データにはイーサネットヘッダを含んだデータが含まれています。
これらのデータがネットワーク層(3層)で作成され、二層のデータリンク層に渡されます。
コメント