「マスタリングTCP/IP」を読んだ (第2章)
第2章を読み終わった。
TCP/IPの階層モデルと通信例
はなかなか面白かった(小並感)
以下要約
第2章 TCP/IP基礎知識
TCP … Transmission Control Protocol
IP … Internet Protocol
TCP/IP登場の背景とその歴史
- 軍事利用のための分散型ネットワークを起源とし、大学、研究所間のネットワークとして生まれたARPANETを経て発展。割愛。
TCP/IPの標準化
TCP/IPの標準化の特色
オープンである (標準化の議論に誰もが参加できる)
開発重視である (実際に通信ができることに重きが置かれる)
RFC (Request For Comments)
- プロトコル標準化のためのドキュメント
TCP/IPの標準化の流れ、RFCの入手方法
- 割愛。
インターネットの基礎知識
インターネットの構造
インターネットは階層的な構造を持っている。
- 小さなネットワークの集合が組織のネットワーク、組織のネットワークの集合が地域のネットワーク…
各ネットワークは「バックボーン」と呼ばれる基幹ネットワークと、スタブと呼ばれる末端のネットワークから構成されている。
ネットワーク間はNOC (Network Operation Center)で接続される。
運用者や運用方針が異なるネットワークを対等に接続するポイントをIX (Internet Exchange)という。
ISPと地域ネット
- インターネットに接続する際は、ISPや地域ネットに接続を依頼する必要がある。
TCP/IPプロトコルの階層モデル
OSI参照モデル | TCP/IP階層モデル |
---|---|
アプリケーション層 | アプリケーション層 |
プレゼンテーション層 | アプリケーション層 |
セッション層 | アプリケーション層 |
トランスポート層 | トランスポート層 |
ネットワーク層 | インターネット層 |
データリンク層 | ネットワークインターフェース層 |
物理層 | (ハードウェア) |
ハードウェア (物理層)
- 内容について規定がない。
- 通信媒体はケーブルでも無線でもよい。
- 信頼性、セキュリティ、帯域、遅延時間などについても制限なし。
ネットワークインターフェース層 (データリンク層)
- データリンクを利用して通信をするためのインターフェースとなる。
インターネット層 (ネットワーク層)
IP (Internet Protocol)
ICMP (Internet Control Message Protocol)
- IPパケットが転送できなくなった場合に送信元に異常を知らせるためのプロトコル。
ARP (Address Resolution Protocol)
トランスポート層
- アプリケーションプログラム間の通信を実現する。
- ポート番号 を識別子としてどのプログラムとどのプログラムが通信しているのかを識別する。
TCP (Transmission Control Protocol)
- コネクション型 で信頼性のあるプロトコル。
- パケットの喪失や順番の入れ替わりにも対応できる。
- 制御のためのパケットのやり取りが多いため、転送データが少ない場合は無駄が多い。
- 一定間隔で規定量のデータを転送する通信などには向いていない。
UDP (User Datagram Protocol)
アプリケーション層 (セッション層以上)
WWW (World Wide Web)
サーバ・ブラウザ間でのプロトコルとしてHTTP (HyperText Transfer Protocol) が用いられる。
送信に用いられる主なデータフォーマットがHTML (HyperText Markup Language)。
電子メール (E-Mail)
ファイル転送
バイナリモードとテキストモードを選択できる。
- テキストモードでは、改行コードが異なるOS間で自動的に改行コードを変換する。
ファイル転送指示のための制御コネクション と転送のためのデータコネクション を確立する。
遠隔ログイン
ネットワーク管理
SNMPを用いてネットワーク機器を管理するプログラムをマネージャ、管理される対象をエージェントという。
エージェントの各情報はMIB (Management Information Base)という構造体に格納される。
TCP/IPの階層モデルと通信例
- 電子メールの送受信を例にとる。
- 各階層でヘッダと呼ばれる情報が付加される。
1. アプリケーションの処理<送信側>
2. TCPモジュールの処理<送信側>
コネクションの確立/切断、データ送信等を行う。
渡されたデータにTCPのヘッダが付加される。以下の情報を含む。
- ポート番号 (送信元、受信先の識別子)
- シーケンス番号 (対象が何バイト目のデータか?)
- チェックサム (データが壊れていないことを保証)
IPモジュール にデータを送信。
3. IPモジュールの処理<送信側>
渡されたデータにIPのヘッダが付加される。以下の情報を含む。
経路制御表(ルーティングテーブル)を参照し、パケットを受け渡すルーターやホストを決定する。
ネットワークインターフェースのドライバにIPパケットを渡す。
4. ネットワークインターフェース(イーサネットドライバ)の処理<送信側>
渡されたデータにイーサネットのヘッダが付加される。以下の情報を含む。
送信処理中にFCS (Frame Check Sequence)をパケットの最後に付加。
- ノイズなどによりパケットが破壊されたことを検出するためのもの
5. ネットワークインターフェース(イーサネットドライバ)の処理<受信側>
6. IPモジュールの処理<受信側>
7. TCPモジュールの処理<受信側>
チェックサムを計算し、ヘッダやデータが壊れていないか調べる。
データを順番通り受信しているか調べる。
ポート番号を調べ、通信先アプリケーションを特定する。
データが届いていれば、送信ホストに「確認応答」を返す。
- 確認応答が届かない場合、送信ホストはデータを送り続ける。
ポート番号で識別したアプリケーションプログラムにデータを渡す。
8. アプリケーションの処理<受信側>
- 受信データを解析し、本文を受信する。
- ハードディスク等にメッセージを格納する。
- 全てのメッセージを格納できた段階で、送信元アプリケーションに正常終了を伝える。