TCP/IP とは, 複数のコンピュータの相互通信における様々なルール (プロトコル) をまとめたものです. インターネット・プロトコル・スイート (Internet protocol suite)とも呼ばれます. プロトコルは交通に例えるなら, 乗り物の運転方法, 交通ルール, 荷物の運搬規則のようなものです.

インターネット

複数のコンピュータが相互に通信することを想定した環境をコンピュータ・ネットワーク (ネットワーク) と呼びます. 特にネットワーク同士が接続されたものをインターネットワークと呼びます.
インターネット という言葉は通常 ARPANET を前身とする全世界的なインターネットワークのことを指します.

ネットワークは物理的に以下の 3 つの部分に分けられます:

  • ホスト
  • ルーター
  • ルート

ホストは自分のデータへのアクセスを待っているコンピュータ, ルーターは通信の中継を担うコンピュータ, ルートはコンピュータ間の経路です. データは パケット と呼ばれる小さな単位に分割されてルートに送り出され, 複数のルーターを経由してホストに届けられます.

インターネット標準

インターネットにおける技術やルールなどの標準化は ISOC (Internet Society) という組織によって管理されており, RFC (Request for Comments) という文書として公開されています. RFC 文書は番号によって管理されています. 例えば, HTTP/1.1 の RFC 文書は RFC2616 という文書で標準化されています. ある提案が検討に値すると認められるとインターネット草案 (I-Ds: Internet-Drafts) として公開されます. その後, RFC になります. 標準として認定された仕様はインターネット標準 (Internet Standard) と呼ばれます.

RFC はスタンダードトラック (Standard Track) と呼ばれる標準化の過程に入るものとそうでないものの 2 つに大別されます. 標準化過程に入るものは,

  1. 標準化への提唱 (Proposed Standard)
  2. 標準化への草稿 (Draft Standard)
  3. インターネット標準 (Internet Standard)

の 3 つの段階を経て標準化されます. スタンダードトラック文書は正式に標準化されると STD という番号が振られます. 仕様の改訂によって有効な文書の RFC 番号が変わっても, STD 番号は変わりません. 非スタンダードトラック文書は以下の 4 つに分類されます:

  1. 情報提供 (Informational)
  2. 実験的 (Experimental)
  3. 歴史的 (Historical)
  4. 現時点における最善の実践 (BCP: Best Current Practice)

Informational はインターネット全体に広く公知すべきと判断されたものになります. 例えば HTTP プロトコルがこれに含まれます. Experimental は実験的なものや検討が不十分なものです. Historical は別の仕様の登場などによって不要になったものです. BCP は IP アドレスの割当方法などのインターネットの原則を文書化したものです.

標準化の実作業を行っているのはインターネット技術タスクフォース (IETF: The Internet Engineering Task Force) という組織で, ISOC は IETF の援助を行っています.

OSI 参照モデル

ネットワークに関する様々な技術の標準化を目指して ISO は OSI (Open Systems Interconnection: 開放型システム間相互接続) という仕様を作成しました. その過程でネットワーク機器の持つべき機能を 7 つの階層構造に分割したモデルとして OSI参照モデル が制定されました:

  1. アプリケーション層
  2. プレゼンテーション層
  3. セッション層
  4. トランスポート層
  5. ネットワーク層
  6. データリンク層
  7. 物理層

OSI参照モデルは, パケット交換ネットワークを前提としたモデルです.

例えば WEB サイトの閲覧では, WEB ブラウザと WEBサーバが上の 1~3 のアプリケーション層, プレゼンテーション層, セッション層に該当し, 両者の通信方法などの仕様がトランスポート層, ルーターがネットワーク層になります.

物理層は物理的な通信経路の仕様 (コネクタの形状や, 伝送する信号の形状など) に関する層で, データリンク層はネットワーク内のデータの送信元・送信先の認識や中継機でのデータのエラー検出などに関する層です.
リピーターは物理層, ブリッジはデータリンク層になります。イーサネットなどの具体的な通信規格においては, 物理層とデータリンク層の仕様が定められています.

OSI 参照モデルではネットワークに接続されたコンピュータのことを ノード と呼びますが, TCP/IP では特に通信データの中継を担うコンピュータをルーター, 通信データの送受信を行うネットワークの終端にあるコンピュータをホストと呼びます.

現在では TCP/IP がネットワークの実質的な標準となっており, TCP/IP のモデルは一見すると OSI参照モデルと似ていますが 根本的に両者は異なります.

TCP/IP モデル

TCP/IP は中心的な役割を果たす 2 つのプロトコル TCP (Transmission Control Protocol) と IP (Internet Protocol) にちなんで名付けられました. TCP/IP ではネットワーク機器の持つべき機能を以下の 4 つの階層構造に分割しています:

  1. アプリケーション層
  2. トランスポート層 : TCP が属する
  3. インターネット層 : IP が属する
  4. ネットワークインターフェース層

OSI 参照モデルの下位 2 層 (データリンク層, 物理層) に該当する機能については定義していません.
IP はインターネット上でパケット通信を実現するために使われるプロトコルです. TCP は IP によるパケット通信に信頼性を持たせるためのプロトコルです.

アプリケーション層

アプリケーション層は OSI 参照モデルのアプリケーション層, プレゼンテーション層, セッション層と対応します.
特定の目的をもったプロトコルの種類などを定めた階層で, ユーザが直接関わる部分になります.

例えば以下のようなプロトコルが存在します:

  • HTTP
  • FTP
  • SSH
  • SMTP
  • SNMP
  • POP3
  • IMAP4

HTTP プロトコルは WEB サイトのデータの通信を行うために使われ, SSH プロトコルはネットワーク上の別のコンピュータと安全な通信 (通信路が暗号化された通信) を行うためのプロトコルです.
異なるプロトコルに異なる番号を割り当てることで, 同時に異なるプロトコルによる通信を行う仕組みがあります. このとき各プロトコルに割り当てる番号のことを ポート番号 と呼びます.

トランスポート層

トランスポート層は OSI 参照モデルのトランスポート層と対応します.
アプリケーション間で実際に通信されるデータの形式や, アプリケーションの通信の開始, 終了の形式などを定めた階層です.

代表的なプロトコルは以下の 2 つです:

  • TCP
  • UDP

TCP は UDP に比べて信頼性が高いですが速度に劣ります. 信頼性 < 速度 の場合 (動画や音声通信など) においては UDP が使われます.
書留と速達のような違いです.

インターネット層

インターネット層は OSI 参照モデルのネットワーク層と対応し IP が位置します.
ホストやルーターなどの通信機器の所在地情報, 基本的な通信手続きの段取りなどを定めた階層になります.

IP は終点ノード間の通信を実現するための機能を定義します.

ネットワーク上のコンピュータには IP アドレス と呼ばれる識別子が割り当てられます. 複数のネットワークに属すルーターには複数の IP アドレスが割り当てられます. データはパケットに分割され, 複数のルーターを経由して送受信されます. IP はこの仕組みの仕様を定義しています.

IP はコンピュータ同士の通信機能しか提供しません. また IP はパケットの送信の失敗などを検知しません. アプリケーション間のデータの通信に関する仕様は上位層のトランスポート層が担います.

ネットワークインターフェース層

ネットワークインターフェース層は OSI 参照モデルのデータリンク層, 物理層が対応し例えば Ethernet, PPP が位置します. ケーブルやコンピュータのコネクタの形状, 通信データの信号の形状などを定める階層です.

IP がエンドツーエンドの通信を実現するのに対し, ネットワークインターフェース層では直接接続された機器同士の通信を実現します. 通信相手の識別は MAC アドレス と呼ばれる識別子が使われます.