TCP/IP捠怣

# TCP/IP通信とは

TCP/IPはインターネットを含む通信ネットワークで広く利用されている通信プ
ロトコルです。TCP/IPが利用できるオペレーティングシステム(OS)は、
SolarisやHP-UX、Linux、FreeBSDなどのUNIX系OSだけでなくWindowsやMacOSに
も広がりを見せています。ハードウェアに関してもLAN用機器やモデムを備え
たワークステーション(WS)やパーソナルコンピュータ(PC)だけでなく、PDAや
家電製品でもTCP/IPが利用できるようになりつつあります。

### コラム：TCP/IPの歴史

1960年代に遡ります。当時、アメリカの国防総省はARPANETという通信ネット
ワークの構築を支援していました。ARPANETは軍関連機関、大学、研究機関な
どを結び、軍事技術、計算機科学などの共同研究に利用されていました。その
ARPANETのデータ通信のために研究開発された通信プロトコルの一つがTCP/IP
だったのです。ARPANETでは軍事目的を想定し、核戦争などによりネットワー
クの一部が破壊されても、残された部分で機能する通信ネットワークを求めて
いました。このため、TCP/IPではネットワーク全体を特定のサイトが制御する
ような中央集権的なアプローチを避け、すべてのコンピュータや部分ネットワー
クが自律的に動くことによってデータ通信を実現します。現在のTCP/IPの骨格
が作られたのは1975年ぐらいからであり、1982年に仕様がほぼ決まりました。
当時は、TCP/IPはカリフォルニア大学バークレー校が改良したUNIXである
BSDUNIXの中に組み込まれて実現されることが多かったのですが、そのBSD
UNIXが普及するとともにTCP/IPも広く利用されるようになってきました。（コ
ラム終わり）

### コラム：IPとは

TCP/IPのIPとは、インターネットプロトコル(Internet Protocol)の略です。
インターネットプロトコルとは、文字通りインターネットの基礎をなしている
通信プロトコルです。日常生活で例えると、IPは運送業者のようなものです。
この運送業者はIPの世界で使われる宛先住所(IPアドレス)をもとに宛先のコン
ピュータにデータを届けてくれます。ただ、この運送業者は問題がありまして、
一度に運べるデータ量にも制限があります。このため、運送業者を手配した方
は、運びたい荷物をデータグラムという小さな小包に小分けして運送を依頼す
ることになります。また、小分けして運送させる場合には受け取り側で、もと
の一つの固まりに戻せるように番号をつけます。そして、この運送業者は荷物
をよくなくすので、受け取り側から荷物が届いたという知らせを送ってもらう
ようにすることもあります。（コラム終わり）

### コネクション型通信とデータダイアグラム型通信

TCP/IPをベースにしたインターネットの通信にはTCPとUDPの二つの方式があり
ます。両者の違いは日常生活で利用する電話と郵便の違いに相当します。電話
に相当するTCPはコネクション型と呼び、郵便に相当するUDPをコネクションレ
ス（データダイアグラム）型と呼びます。

さて、電話と郵便の違いはなんでしょうか。電話では、同時に受話器を持って
いなければいけません。国際電話などでは言葉が相手に届くの少し時間がかか
りますが、それでも話した言葉の順番通りに相手に届きます。一方、郵便は、
相手の別の仕事をしていようと、いつでも郵便を送ることができますが、ポス
トに投函した順番と相手に届く順番が一致するとは限りませんし、運が悪いと
郵便は届かないことがあります。

コネクション型通信であるTCPは、コンピュータとコンピュータの間に電話回
線に相当するような仮想的な通信回線を作ります。そして、データを送信した
順番で相手が受信するようにし、さらに通信中にデータ紛失が生じた場合は再
送信を行います。このためコネクション型は信頼性がある通信であるなどとい
います。一方、コネクションレス型であるUDPは、TCPのような仮想的な通信回
線などは作らず、そのままデータを送ります。このため、UDPはデータが相手
に届かなくても再送信などを行ってくれません。また、UDPにより続けて通信
を行った場合、送信順序と受信順序が一致しないこともあります。しかし、
UDPは何もしてくれない分、処理コストが小さいのが特徴です。

コネクション型とデータダイアグラム型のどちらを選択するかは、通信内容、
通信頻度、ネットワークの信頼性や混み具合などにより決まります。コネクショ
ン型は、一度、仮想的な通信回線を作れば、データの送信順序どおり受信され
るため、ファイルの書き出しや読み込みと同じ要領で通信が可能です。この仮
想的な通信回線は、水道管をイメージすればよいでしょう。つまり、データを
水道管の一端から流し込むと、もう一方からは流し込んだ順番で出てきます。
このため、まとまったデータを一対一で通信するときに向いています。また、
通信失敗を発見・対処してくれるので、確実にデータを宛先に送り届けたい場
合に向いています。

一方、データダイアグラム型は仮想的通信回線を作らないために余計な手間が
かかりません。単発的にデータを転送する場合や、複数箇所への同時転送に向
いています。ただし、信頼性は低いので、確実にデータを送り届ける必要があ
るときや、大きなデータを送るときはデータダイアグラム型は不向きです。

### TCP(Transmission Control Protocol)

TCPはIP上にコンピュータ間に仮想回線をつくるコネクション型通信プロトコ
ルであり、通信失敗時には再送信して回復に努めます。また、通信データの送
信順番と受信順番を保証してくれます。

### UDP(User Datagram Protocol)

UDPはIP上で実現する信頼性のない通信プロトコルです。通信失敗時の回復処理
や通信順番はUDPを利用する側に任されておりますが、単純である分、通信に
要するコストが少ない。

本書ではコネクション型通信であるTCPを中心に扱います。これは一般のアプ
リケーションプログラムにおいて利用する通信では、信頼性が要求されること
が多いからです。また、TCPの実装方法が改良されてきており、イントラネッ
トなどの小規模ネットワークを対象とする限りは、TCPとUDPの性能差は小さく
なっています。

### コラム：TCP/IPという言葉の意味

TCP/IPはいろいろな意味で使われるので注意が必要です。狭義にはインターネッ
トプロトコル(IP)とそれの上で実現されたトランスミッション制御プロトコル
(TCP)をさします。しかし、もっと広い意味で使われることが多く、IPとその
上で動く通信プロトコルとしてTCPだけでなくUDPを含める場合もありますし、
さらにTCPやUDPを利用した通信プロトコル全体、例えば遠隔端末(TELNET)や、
電子メール用通信プロトコル(SMTPやPOP3)、WWW用通信プロトコル(HTTP)など
も含めた通信プロトコルの総称として使われることもあります。

### コラム：インターネットと標準化

インターネット通信の最大の特徴は、この通信プロトコルが特定の会社に独占
されるものではなく、世界中に公開されていることがあげられます。インター
ネット用通信プロトコルの多くは、IETF(Internet Engineering Task Force)
というオープン組織によってRFC(Request for Comments)と呼ばれる標準化に
より定められています。RFCとして決められた通信プロトコルにはHTTP以外に
も、TCP/IP、IPアドレス、ftp、telnet、メール転送に利用するSMTP、POP3な
どがあります。また、通信プロトコル以外にも、ホームページデータの表現形
式であるHTML、メールやホームページのデータ形式定義に利用するMIMEなどイ
ンターネットに関連する技術の標準化も含まれています。その総数は2000以上
もあり、現在も増え続けています。また、RFCはインターネット技術の根幹で
あり、最新のRFC動向を知ることは、次世代のインターネット技術を知ることに
他なりません。