2014年1月25日土曜日

IPパケットについてまとめてみた

今回はIPパケットについてです。

ここではIPv4について記述します。 tremaのsimple_routerでは、ICMPリプライを送るのにIPパケットを作りました。 もう少し理解を深めると言う事で、IPパケットについてまとめてみます。

IPパケットの先頭にはIPヘッダーが付いていて、パケットの宛先や送信元のアドレス、パケットの長さなどの情報が含まれています。
IPヘッダの長さは先頭の20バイトは固定で、続いてオプション情報が可変で0~40バイト、その後ろに送りたいデータが来ます。
IPパケットの中身はこんな感じです。

0481216202428
バージョンヘッダ長サービスタイプ全長
IDフラグ断片位置
TTLプロトコルチェックサム
送信元IPアドレス
宛先IPアドレス
オプション情報
データ
※表見出しの緑色はの数字はビット数になります。

各フィールドの説明は以下になります。

バージョンIPプロトコルのバージョン。IPv4の場合は4
ヘッダ長IPヘッダの32ビット単位の長さを表す。この情報によりデータの開始位置がわかる。通常はIPヘッダの固定部分の長さの5が入る
サービスタイプIPパケットの優先度などを表す。現在のTCP/IPではこのフィールドでの指定はほとんど行われていない。
全長IPパケット全体の長さが入る。
ID分割したパケットを復元するのに使用する。
フラグ3桁のうち、先頭は使用しない。真中は分割の可否を表します。1が分割不可です。末尾が分割されたパケットの終わりを表します。0だと終わりです。
断片位置パケットを分割した際の元の位置を格納します。パケットの分割は8バイト単位で行われるので、8バイト単位の値が格納されます。
TTL パケットの寿命を表します。パケットが経由できるルータの数になります。
プロトコル上位のプロトコルを示す番号が入ります。例えばICMPなら1、TCPなら6、UPDなら17です。
チェックサムIPヘッダの誤り検査に使用します。
送信元IPアドレスパケットの送信元のIPアドレスが入ります。
宛先IPアドレスパケットの宛先IPアドレスが入ります。
オプション情報4バイト単位の可変長フィールドです。通常は使用されない。
データIPパケットで送りたいデータ(ペイロード)が入ります。


以上です。

0 件のコメント:

コメントを投稿