TCP/IPは、イーサネット層とアプリケーション層をつなぐ層です。
イーサネット層(データリンク層)では、MACアドレスを用いた通信ですがインターネットなど大規模通信では、MACアドレスでは不便でIPアドレスが適しています。IPは、IPアドレスによる2点間の接続経路を決定します。
その経路において、正確にデータの送受信をするのがTCPです。
さらにTCPは、Webページ閲覧や電子メールなどのアプリケーション層のプロトコルを指定して、データを渡す機能をもちます。
IPはOSI基本参照モデルのネットワーク層、TCPはトランスポート層に相当しますが、TCP/IPは実装を前提としたプロトコルなので若干の違いがあります。
- IPでは、ホスト(接続機器)の番号をIPアドレスで示します。IPアドレスは電話番号のようなもので、ICANN→APNIC→JPNIC→ISPなどの事業者の順で連続番号で与えれるので、府県→市区町村のような体系的番号になります。これがMACアドレスではなくIPアドレスを使う理由です。
- ARPはMACアドレス→IPアドレスの変換プロトコルです。
DHCPは,IPアドレス設定を自動化したり一元管理するプロトコルです。
- IPアドレスは、電話の外線番号に相当するグローバルIPアドレスと内線番号に相当するプライベートIPアドレスがあります。LAN内のホストには通常プライベートIPアドレスが付けられます、
LAN内のホストからインターネットに接続するときは、一時的にグローバルIPアドレスが割り当てられます。それをNAT、NAPTといいます。
- IPアドレス(IPv4)の構造は4バイトからなり、ホストが属するネットワーク部とホスト自身のホスト部に分解できます。
その区切り(桁数)を細かく指定することをクラスレスといい、それにより分割されたネットワークをサブネットワーク、そのアルゴリズムをCIDRといいます。
IPの基本機能は、IPアドレスにより相手先までの経路を決定することで、それを経路制御といいます。
経路表
- IPでのネットワークをつなぐ機器をルータといいます。同一のネットワークに属する相手先ならば、ネットワークにブロードキャストすることにより相手が存在すれば返答があり接続できます。返答がなければネットワーク内のルータに接続します。
- ルータは、個々のネットワークのIPアドレス(この中のホストのIPアドレスの代表番号のようなもの)と、そこに到達するのに適切な直結したルータのIPアドレスとの対応表である経路表をもっています。
ルータがパケットを受け取ると、受信先IPアドレスの属するネットワークIPアドレスから該当ルータに転送します。
- すべての相手先に対応する経路表をもつのは不可能です。よく利用する相手先に絞り、それ以外はデフォルトルートとして、全体をよく知っている(ISPなど)ルータを設定しておきます。
- 転送されたルータも同じようにして転送を繰りかえしている間に、受信先IPアドレスと同じネットワークに属するルータへと到達します。
経路制御アルゴリズム
最適な経路を見つけることが求められます。
対象 制御アルゴリズム プロトコル プロトコル層
IGP 距離ベクトル型 RIP UDP
リンク状態型 OSPF IP
EGP 経路ベクトル型 BGP TCP
- 距離ベクトル型(RIP)
受信先IPアドレスに到着するまでのルータ経由回数(ホップ数)を距離として、最小の距離になる経路を探します。
- リンク状態型(OSPF)
ホップだけでなく、経路の情報を加味して点数を付ける方法です。
一定間隔で検査用パケットを送信して設定時間内に返答がなければ、故障あるいは輻輳が生じているとします。
経路中にパケット長さが短く設定されているかを経路MTU探索で探します。
- 経路ベクトル型(BGP)
ISPより向こうのインターネット(EGP)で採用される方法です。基本的にはホップ回数で評価しますが、AS内のルート情報に付加されたパスアトリビュートの内容を加えることもあります。
従来のIPアドレスはIPv4といい32ビットでしたが、インターネットの普及により足りなくなりました。それで128バイトのIPv6が設定されました。しかし、IPv4も使われており、両者が混在しています。
IPヘッダの特徴
- IPアドレスは128ビットです。2128=3.4×1038ですから,事実上無限に近い個数になります。
- 拡張ヘッダを設けて、暗号化・認証などの機能を任意個数指定できるようになりました。
- Pv6では,機器をネットワークにつなぐと自動的にグローバルIPアドレスを取得できる機能を持たせています。
IPv6未対応のシステムやアプリケーションが多いので、異なるプロトコルでの通信(相互運用性)を図る工夫が進行しています。
TCPには、二つの機能があります。
- 上位プロトコルの設定
上位層であるアプリケーション層のプロトコル(Webページ閲覧や電子メールなどで使われるプロトコルを指定します。これはUDPも同じです。
- 通信制御
IPでの経路制御では、単に2点間の経路を決定しただけです。このままでパケットを送っても送信順序と到着順序が一致している保証はありませんし、パケットが廃棄されても受信先ではわかりません。
それを解決するのが、コネクション型のTCPです。ホスト間で相互の状況を確認してからデータを送り,データの到着を確認してから次のデータを送るようにして,通信を確実に行う方法です。また、TCPは通信効率向上のフロー制御の機能もあります。
UDPはコネクションレス型のプロトコルで、通信制御機能をもっていません。
通信制御機能は時間がかかり、データの到着間隔が長くなります。映像などの送信では、データの到着間隔が長いと空白を生じます。反面、途中のパケットを失ってもデータ通信とは異なり重要な誤作動にはなりません。
ストリーミングはUDPの代表的な適用例です。