ここではIPv4について記述します。 tremaのsimple_routerでは、ICMPリプライを送るのにIPパケットを作りました。 もう少し理解を深めると言う事で、IPパケットについてまとめてみます。
IPパケットの先頭にはIPヘッダーが付いていて、パケットの宛先や送信元のアドレス、パケットの長さなどの情報が含まれています。
IPヘッダの長さは先頭の20バイトは固定で、続いてオプション情報が可変で0~40バイト、その後ろに送りたいデータが来ます。
IPパケットの中身はこんな感じです。
0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | ||||||||||||||||||||||||
バージョン | ヘッダ長 | サービスタイプ | 全長 | ||||||||||||||||||||||||||||
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 件のコメント:
コメントを投稿