![]() |
![]()
ホーム > TCP/IP技術 > IPフラグメントについて (2)
マスタリングTCP/IP 応用編
入門編を卒業したらこちら。
応用編も入門編と同様に豊富な図を使用し、TCP/IPに関するさらに詳細な解説を記している。
特にパッケットの構造はかなり詳細に解説しており、初心者にはすこしつらいかもしれないが非常に読みやすいのでぜひ読んでみてほしい。
詳解TCP/IP〈Vol.1〉プロトコル
これも 必読中の必読書。
TCP/IPアーキテクチャを、実際にネットワークを組んで通信の動きを観察するという方法で書かれている。
本書に構成されているネットワークは単純なので、実際に同じ構成を組んで実機をいじりながら読み進めると非常に効果的に学ぶことが出来ると思います。

IPヘッダの中身について
フラグフィールド(3ビット)にはデータが分割されているのかどうかを示す情報が挿入されています。
1ビット目は未使用で必ず“0”になります。
2ビット目で、“0”の場合は分割可能、“1”の場合は分割禁止を意味します。
3ビット目が“1”の場合,あとに分割されたパケットが続く、つまり途中のパケットを意味します。
“0”の場合には、そのパケットが分割されていないか、分割されたパケットの最後のパケットであることを意味します。
まとめると以下な感じ
ビット |
意味 |
値 |
0 |
未使用 |
0 |
|
1 |
分割可能か? |
0(分割可) |
1(分割禁止) |
||
2
|
0(最後のパケット) |
|
1(途中のパケット) |
フラグオフセットフィールド(13ビット)にはこのパケットが何番目の分割されたパケットなのかが挿入されています。
ここに入る値は元のIPデータの中のどの位置にあったのかをしますデータの位置が値として入ります。
ここに入る値はオフセット単位で表示されます。
値が“1”なら8バイト、“2”なら16バイトを意味します。
つまり元のデータの何バイト目からのデータなのかを示しているわけです。
1番目のパケットであれば当然"0"が入ります。
識別子フィールドにはIPデータごとに任意の値が入ります。
つまりIPデータが分割されて複数のパケットになったとしても、その分割されたパケットの識別子は同じ値になるため、受信側では同じ識別子の分割されたパケットを集めて1つのIPデータとして構成されるんだねということが分かります。
受信したデータの再組み立ては以下のような手順で行います。
1.識別子から1つの元データを構成する分割されたパケットを認識します。
2.各分割されたパケットのIPヘッダ内のフラグメントオフセットフィールドから、そのパケットが元データのどの部分のデータなのかを認識します。
これにより、たとえ順序が逆で受信したとしてもデータを復元することが出来るわけです。
3.フラグフィールドより最後の分割されたパケットを認識できるため、あとは集めたパケットを組み合わせてデータを組み立てます。
4.もし一部のパケットが届いていないのであれば、分割したパケット全てを破棄します。
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓