2020-06-27T00:00+09:00
こちらの記事でTCP/IPの役割をざっくりと勉強致しました。
今回は引き続きWEBの基礎を学ぶ ということで、
TCP/IPの階層モデルのインターネット層に的を絞って勉強していきたいと思います。
早速ですがまとめるとこんな感じです😊
- ・インターネット層のプロトコルはIP
- ・通信のときは、IPパケットというデータでやり取りがされる
- ・IPパケットはIPヘッダとIPデータに分かれている
- ・IPヘッダには宛先IPアドレスや送信元IPアドレスなど様々な情報が含まれている
インターネット層とは?
インターネット層はネットワークでデータをやり取りする部分を担当しています。
OSIモデルのネットワーク層に当たります。
(OSIモデルには7つの階層が存在し、TCP/IPモデルの4階層よりも詳細に分けられている)
インターネット層の別名はIP層とも言われるように、
TCP/IPのIPがこの層に属しています。
IP(Internet Protocol)とは?
IPは、論理アドレス(IPアドレス)をスマホやPC、ゲーム機などに割り当てることで、
各機器を識別することが出来ます。
通信時には、このIPアドレスがあることによって、データを送信することが出来ます。
よく言われている例えですが、IPアドレスは住所のようなものです。
郵便物が住所をもとに配達されるように、
データはIPアドレスをもとにして別のコンピュータ機器に配達されます。
送信されるデータはIPパケットと言われます。
そしてこのIPアドレスの情報はIPパケットの、
IPヘッダという場所に含まれています。
IPアドレスはIPパケットの一部で、
IPパケットはIPアドレスとIPデータで構成されています。
ここで重要なのはIPヘッダです。
ではこのIPヘッダとはどういったものなのでしょうか?
IPヘッダとは?
IPヘッダは、IPパケットの冒頭部にある、IPバージョン・送信元アドレス・宛先アドレスなどの情報が格納された部分のこと。
Wikipediaより。
IPヘッダには様々な情報が含まれています。
これらの情報は郵便物の封筒のようなもので宛先や送り元の情報が含まれています。
そして、IPデータが手紙のようなものです。
IPヘッダの情報は以下のとおりです。
- IPバージョン/ヘッダ長/サービスタイプ/パケット長/識別子/フラグ/フラグメントオフセット/生存時間/プロトコル/ヘッダチェックサム/送信元IPアドレス/宛先IPアドレス/オプション/パディング/IPデータ
めちゃくちゃ多いですね!
これらをわかりやすく一つずつ見ていきたいと思います。
IPバージョン
文字の通りIPのバージョンを表します。
IPv4であれば「4」、IPv6であれば「6」が入ります。
IPv6というのはIPv4のIPアドレス(42億9496万7296個あります。)が枯渇してしまうという問題に対応するために誕生しました。
今後のモノが何でもインターネットに繋がっていく世界では、
42億9496万7296個のIPアドレスでは枯渇してしまう可能性があるということですね。
ヘッダ長
IPヘッダ部分のサイズを表すためのフィールドです。
ヘッダの長さは4バイト(32ビット)単位で数えられます。
つまり、値が「10」の場合は40バイトとなります。
IPヘッダの固定長は20バイトあるため、
最小の値は「5」です。
サービスタイプ
IPパケットの優先度の情報が入ります。
パケット長
IPパケットの全体の長さが入ります。
IPヘッダとIPデータを合わせた全体の長さの情報が入ります。
識別子
大きなデータを宛先に送るときには、複数のIPパケットに分けてデータは送信されます。
この複数に分けてデータを送信することを「IPフラグメンテーション」と言います。
分割されたパケットなのか、全く別のパケットなのかを識別するために利用されます。
フラグ
IPパケットの分割を制御します。
フラグには3ビットのデータがあり、
これらの情報でIPパケットの分割は制御されています。
1ビット目は未使用を意味し、必ず「0」が入ります。
2ビット目ではパケットが分割可能かを判定します。
「0」の場合は分割可能
「1」の場合は分割禁止を意味します。
3ビット目は途中のパケットか最後のパケットかを判定します。
「0」だと最後のパケット
「1」だと途中のパケットを意味します。
フラグメントオフセット
IPフラグメンテーションで分割されたパケットが、
分割される前にどこの位置にあったのかを示します。
オフセット単位で位置が示されます。
オフセットとは、位置を基準位置からの距離で表した値のことです。
1番目のパケットであれば「0」が入り、
2番目のパケットであれば「8」が入ります。
フラグメントは8バイト単位で分割されるため、
2番目のパケットは「8」となるわけです。
生存時間
データの有効期限を表します。
TTL(Time To Live/生存時間)という名前ですが、
実際はルーターなどの機器の通過回数によって制限がかけられています。
通過回数は最大で255回まで送信元ホスト側で設定することが出来ます。
ルーターなどの機器を通過するごとに回数が1回ずつ減少していきます。
減少していき、回数が0になったときにパケットは破棄され、
送信元ホストに破棄されたことが通知されます。
この回数を設定することによって、プログラムが無限ループされることを防ぐことが出来ます。
プロトコル
トランスポート層のプロトコルの情報が入ります。
トランスポート層のプロトコルにはTCPやUDPなどがあります。
TCPの場合は「6」
UDPの場合は「17」が入ります。
ヘッダチェックサム
「チェックサム」とは誤り検出方式の一つです。
このフィールドではヘッダの整合性が示されています。
送信元IPアドレス
送信元のコンピュータのIPアドレスが示されています。
この送信元IPアドレスを元にして通信先のコンピュータはパケットを送り返します。
宛先IPアドレス
宛先のIPアドレスが示されています。
オプション
通常は使用されないフィールドのようです。
テストなどに使われるほか、ルーティングの経路を強制的に指定したり出来るようです。
パディング
オプションフィールドが使用された場合、
オプションフィールドは可変長(長さが不特定)のため、
IPヘッダの長さが4バイト(32ビット)単位でなくなることがあります。
そのときに、パディングフィールドを使用して、
IPヘッダの長さが4バイト(32ビット)になるように調整します。
まとめ
この記事では、主にIPパケットのIPヘッダについて勉強してきました。
インターネット層とIPについて少しは理解できたかな,,,?
- ・インターネット層のプロトコルはIP
- ・通信のときは、IPパケットというデータでやり取りがされる
- ・IPパケットはIPヘッダとIPデータに分かれている
- ・IPヘッダには宛先IPアドレスや送信元IPアドレスなど様々な情報が含まれている
ざっくりとまとめるとこんな感じですかね!😊