ごっそログ

勉強したことなどを書いていきます

「マスタリング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の階層モデルでは構造がやや異なる。
    • OSI参照モデルは「通信に必要な機能は何か」という視点でモデル化されている。
    • TCP/IPは「実装するにはどのようにプログラミングするか」という視点でモデル化されている。
OSI参照モデル TCP/IP階層モデル
アプリケーション層 アプリケーション層
プレゼンテーション層 アプリケーション層
セッション層 アプリケーション層
トランスポート層 トランスポート層
ネットワーク層 インターネット層
データリンク層 ネットワークインターフェース層
物理層 (ハードウェア)

ハードウェア (物理層)

  • 内容について規定がない。
    • 通信媒体はケーブルでも無線でもよい。
    • 信頼性、セキュリティ、帯域、遅延時間などについても制限なし。

ネットワークインターフェース層 (データリンク層)

  • データリンクを利用して通信をするためのインターフェースとなる。

インターネット層 (ネットワーク層)

IP (Internet Protocol)

  • ネットワークをまたいでパケットを配送するためのプロトコル
  • 識別子としてIPアドレスが使われる。
  • データリンクの特性を隠す役割もある。
  • データが到達しなかった場合も再送は行われない。

ICMP (Internet Control Message Protocol)

  • IPパケットが転送できなくなった場合に送信元に異常を知らせるためのプロトコル

ARP (Address Resolution Protocol)

トランスポート層

  • アプリケーションプログラム間の通信を実現する。
  • ポート番号 を識別子としてどのプログラムとどのプログラムが通信しているのかを識別する。

TCP (Transmission Control Protocol)

  • コネクション型 で信頼性のあるプロトコル
  • パケットの喪失や順番の入れ替わりにも対応できる。
  • 制御のためのパケットのやり取りが多いため、転送データが少ない場合は無駄が多い。
  • 一定間隔で規定量のデータを転送する通信などには向いていない。

UDP (User Datagram Protocol)

アプリケーション層 (セッション層以上)

  • OSI参照モデルでいう「セッション層~アプリケーション層」の中で実現される。

  • TCP/IPアプリケーションの多くはクライアント/サーバーモデルで作られる。

WWW (World Wide Web)

  • サーバ・ブラウザ間でのプロトコルとしてHTTP (HyperText Transfer Protocol) が用いられる。

  • 送信に用いられる主なデータフォーマットがHTML (HyperText Markup Language)。

電子メール (E-Mail)

  • プロトコルとしてSMTP (Simple Mail Transfer Protocol) が用いられる。

  • 送信できるデータ形式を拡張するMIME (Multipurpose Internet Mail Extensions)によって、様々な情報を送ることが可能。

ファイル転送

  • プロトコルとしてFTP (File Transfer Protocol)が用いられる。

  • バイナリモードとテキストモードを選択できる。

    • テキストモードでは、改行コードが異なるOS間で自動的に改行コードを変換する。
  • ファイル転送指示のための制御コネクション と転送のためのデータコネクション を確立する。

遠隔ログイン

ネットワーク管理

  • プロトコルとしてSNMP (Simple Network Management Protocol) が用いられる。

  • SNMPを用いてネットワーク機器を管理するプログラムをマネージャ、管理される対象をエージェントという。

  • エージェントの各情報はMIB (Management Information Base)という構造体に格納される。

TCP/IPの階層モデルと通信例

  • 電子メールの送受信を例にとる。
  • 各階層でヘッダと呼ばれる情報が付加される。

1. アプリケーションの処理<送信側>

  • メール送信ボタンが押された段階で、本文等の符号化を行う。

  • TCPコネクションの確立の指示を行う。

  • TCPモジュール にデータを送信。

2. TCPモジュールの処理<送信側>

  • コネクションの確立/切断、データ送信等を行う。

  • 渡されたデータにTCPのヘッダが付加される。以下の情報を含む。

    • ポート番号 (送信元、受信先の識別子)
    • シーケンス番号 (対象が何バイト目のデータか?)
    • チェックサム (データが壊れていないことを保証)
  • IPモジュール にデータを送信。

3. IPモジュールの処理<送信側>

  • 渡されたデータにIPのヘッダが付加される。以下の情報を含む。

  • 経路制御表(ルーティングテーブル)を参照し、パケットを受け渡すルーターやホストを決定する。

  • ネットワークインターフェースのドライバにIPパケットを渡す。

4. ネットワークインターフェース(イーサネットドライバ)の処理<送信側>

5. ネットワークインターフェース(イーサネットドライバ)の処理<受信側>

6. IPモジュールの処理<受信側>

  • 宛先IPアドレスが自分宛かどうかを調べる。

  • 上位層のプロトコルを調べる。(この例ではTCP)

  • TCPを処理するルーチンにIPヘッダを除いたデータを渡す。

7. TCPモジュールの処理<受信側>

  • チェックサムを計算し、ヘッダやデータが壊れていないか調べる。

  • データを順番通り受信しているか調べる。

  • ポート番号を調べ、通信先アプリケーションを特定する。

  • データが届いていれば、送信ホストに「確認応答」を返す。

    • 確認応答が届かない場合、送信ホストはデータを送り続ける。
  • ポート番号で識別したアプリケーションプログラムにデータを渡す。

8. アプリケーションの処理<受信側>

  • 受信データを解析し、本文を受信する。
  • ハードディスク等にメッセージを格納する。
  • 全てのメッセージを格納できた段階で、送信元アプリケーションに正常終了を伝える。