第4章IPプロトコル
IPはインターネット層のプロトコル
OSI参照モデルのL3のネットワーク層に相当。
データリンクの違いを覆い隠し、異なるデータリンク間の通信を可能にする。
ネットワーク層であるIPは直接接続されていないネットワーク間での転送を実現
データリンクが1区間(ホップ)の通信を制御するのと合わせて、IPはエンドツーエンドの通信の制御を行う。
IPの基礎知識
MACアドレスが同一データリンク内にあるコンピュータを識別するのに対して、IPはネットワークに接続されている全てのホストの中から通信を行う宛先を識別する。
ホストが接続されているデータリンクに関わらずIPアドレスの形式は同じ。
ブリッジやスイッチングハブなどの物理層やデータリンクそうでパケットを中継する機器にはIPアドレスを設定する必要はない。
ネットワークの1区間IPパケットが跳ぶことをホップ(hop)と呼び、この区間を1ホップ(ワンホップ)と言う。
IPの経路制御はホップバイルーティングと言う方式で行われる。
各区間ごとに各々のルーターがIPパケットの転送処理を行い、その繰り返しでアドホックに最終的な宛先ホストまでたどり着く。
MTUよりも大きなパケットを送信したりパケット長よりも小さなMUTのネットワークを通過するなどがある場合、IPでは分割処理(フラグメンテーション)を行い、分割したパケットが宛先のホストで1つにまとめられてIPの上位層に渡される。
IPはコネクションレス型
機能の簡略化と高速化のため
コネクション型のサービスは上位層が提供すれば良い
IPアドレスの基礎知識
32ビットの正整数値で表現される。
ネットワーク部はデータリンクのセグメントごとに値が割り当てられ、ネットワーク部は接続されている全てのセグメントのアドレスと重ならないように設定しなければならない。
ネットワーク部とホスト部はサブネットマスク(ネットワークプレフィックス)によって分けられる。 IPアドレスのクラスはA〜Dに分類され、クラスAはIPアドレスの先頭1ビットが0で始まる場合、クラスBは先頭2ビットが10で始まる場合、クラスCは先頭3ビットが110で始まり、クラスDは先頭4ビットが1110で始まる
自分が属しているリンク内のブロードキャストがローカルキャストで、異なるIPネットワークへのブロードキャストにはダイレクトブロードキャストを指定する。
IPマルチキャストは特定のグループに所属する全てのホストにパケットを送信するために利用される。
ルーターを越えて必要としているグループ飲みにパケットを送信するマルチキャスト機能が使われる。
グローバルアドレスとプライベートアドレス
10.0.00〜10.255.255.255、172.16.0.0〜172.31.255255、192.168.0.0〜192.168.255.255に含まれるIPアドレスがプライベートIPアドレスで、この範囲外のIPアドレスはグローバルIPアドレス
NAT技術によりプライベートアドレスを割り当てたネットワーク上のホストからグローバルアドレスを割り当てたインターネット上のホストと通信ができるようになった。
グローバルIPアドレスはインターネット全体でユニークに割り当てられるが、プライベートIPアドレスは同一組織内でユニークであれば良い
経路制御
スタティックルーティング(静的経路制御)
権利者が事前に設定する方法。
ダイナミックルーティング(動的経路制御)
ルーターが他のルーター情報を交換して自動的に作成する方法。
IP自体には経路制御法を作成する機能が無い。
全てのネットワークやサブネットの情報を持つと無駄が多くなるのでデフォルトルートが利用される。 同じコンピュータ内部のプログラム間で通信したい場合はループバックアドレスが127.0.0.1というIPアドレスで利用される。
IPの分割処理と再構築
分割処理にいくつか欠点がある
ルーターの処理が重くなる。
分割された断片の一つが失われただけで元のIPデータグラムが全て失われてしまう。
IPv6
IPv4アドレス枯渇問題解決のために標準化され利用が始まったインターネットプロトコル。
IPv6はIpv4の4倍の16オクテット長になる。
IPv6の特徴
IPアドレスの拡大と経路制御表の集約
階層構造にしIPアドレスを計画的に配布して経路制御表が出来るだけ大きくならないようにする。
パフォーマンスの向上
ヘッダ長を40オクテットに固定しヘッダのチェックサムを省いてルーターの負荷を減らす。
プラグ&プレイ機能を必須
認証機能や暗号化機能を採用
IPアドレス偽造防止機能や盗聴防止機能を提供する。
マルチキャスト、Mobile IPの機能をIPv6の拡張機能として定義
IPv6でのアドレス表記
IPアドレスが128ビット長となり、表せる数字は38桁となる。
128ビットのIPアドレスを16ビットごとに区切り、それをコロンで区切って16進数で表記
0が続く場合は0を省略してコロンを2つ連続で表すこともできるが、この省略記法は1つのIPアドレスで1箇所のみ
IPv6アドレスのアーキテクチャ
IPv6ではIPアドレスを1つのNICに複数同時に割り当てることができ、使い分けることができる。
グローバルユニキャストアドレス
全世界で一意に決まるアドレス
インターフェースIDには64ビット版のMACアドレスを元にした値が格納される。
MACアドレスとは無関係な一時アドレスをつけることもできる
ユニークローカルアドレス
インターネットとの通信を行わない場合に利用されるアドレス。
企業の合併や統合などを考慮し、出来るだけ一意になるようグローバルIDを乱数で決定することで、接続したネットワーク同士でユニークになるとIPv6アドレスを付け直す必要がなくなるので。
IPv6での分割処理
始点ホストのみで行われルーターは分割処理を行わない。
ただしIPv6の最小MTUは1280オクテットなので、システムリソースに制限がある機器では経路MTU探索を実装せずにIPパケットの送信時に1280オクテット単位で分割してから送信しても良いことになっている。
IPv4ヘッダ
バージョンは4ビットで構成
ヘッダ長は4ビット
サービスタイプ(送信しているIPのサービス品質を表す)は8ビット
品質制御で使われるDSCPフィールド
ネットワークの輻輳を通知するECNフィールド
最大パケットサイズは65535オクテット
識別子は16ビットで構成
パケット分割のフラグは3ビット
フラグメントオフセットは13ビット
生存時間は8ビット
プロトコルは8ビット
ヘッダチェックサムは16ビット
送信元アドレスは32ビット
宛先IPアドレスは32ビット
テストやデバッグで使用されるオプションは可変長
パディングはオプションをつけてヘッダ長が32ビットの整数倍にならない場合に0をいれて32ビットの整数倍に調整する
データ
IPv6ヘッダ
バージョン
トラフィッククラス
フローラベル
ペイロードの長さ
次のヘッダ
ホップリミット
送信元IPアドレス
宛先IPアドレス