インターネット・プロトコル・スイート

インターネット・プロトコル・スイートは、インターネットを含む多くのコンピュータネットワークにおいて、標準的に利用されている通信プロトコルのセットである。TCP/IPプロトコルあるいは単にTCP/IP  とも呼ばれる。従来のインターネットワーキングの手法は、このTCP/IPプロトコルに基づいている。元々は確固たる仕様や定義はなく、IPやTCPやUDPなどの仕様中に個々に、あるいは暗黙の前提として存在していたものだが、後から RFC 1122 で1つにまとめられた。これに対応する参照モデルはTCP/IPモデル}}と呼ばれる。

1. 概要
-----

有線、無線などの物理層の違い、イーサネット、モデムによるシリアル通信などの物理層とデータリンク層の違い、異なるベンダや、異なるオペレーティングシステム  の間であっても、インターネット・プロトコル・スイートに対応している機器同士であれば、相互に通信することが可能となる。プロトコルの仕様は公開されている。

インターネット・プロトコル・スイートにおけるデータ通信のモデルは、TCP/IPモデルと呼ばれ、アプリケーション層、トランスポート層、インターネット層、リンク層の4層で構成されている。DARPAモデルという呼称でも知られるが、これはインターネットの研究開発を行っていたDARPAに由来する。

各機器は、下位層プロトコルと上位層プロトコルの両方に従って通信を行っている。上位層はより理論的なデータを処理する一方で、データを物理的に転送するためには、下位層プロトコルに従う必要がある。そのため、データを転送する際は、上位層のプロトコルに基づくデータの先頭と末尾に、より下位層のプロトコルに基づくヘッダとフッタを付与していく。この階層的な通信規約の設計をプロトコルスタックと呼ぶことがある。

2. 歴史
-----

現在のIPネットワーキングは、1960年代と1970年代に発展し始めたLocal Area Network  とインターネットの開発が統合されたものである。それは1989年のティム・バーナーズ＝リーによるWorld Wide Webの発明と共にコンピュータ及びコンピュータネットワークに革命をもたらした。

インターネット・プロトコル・スイートの最初期の定義は、G. Delocheが記述し、1969年5月に RFC 8 として発行された、ARPA Network Functional Specificationsにまで遡ることができる。

インターネット・プロトコル・スイートは、1970年代初期に米国国防高等研究計画局  による研究から登場した。1960年代後半に先駆的なARPANETの構築後、DARPAはその他様々なデータ転送技術における研究を開始した。1972年、ロバート・カーン  はDARPA情報処理技術室  に雇われた。そこで彼は衛星パケット網と地上の無線パケット網の研究に取り組み、それらを横断して通信ができる事の価値を認識した。1973年春、ヴィントン・サーフは、ARPANETの次世代プロトコルを設計する事を目標に、オープン・アーキテクチャ相互接続モデルに取り組むためにカーンと合流した。

1973年の夏までに、カーンとサーフはすぐに基本的な改良を解決した。ネットワーク・プロトコル間の違いは、共通の相互接続ネットワーク・プロトコルを用いる事で隠蔽された。そしてARPANETにおいては、信頼性についてネットワークが責任を持つ代わりに、ホストが責任を持つようになった。サーフはユベール・ジメルマンとルイ・プザンが、この設計に対して重要な役割を果たした功績を認めている。

ネットワークの役割を最低限まで減らす事で、それらの特性が何であろうとも、ほぼ全てのネットワークを統合できるようになった。それによりカーンの当初の問題も解決した。よく言われる事は、TCP/IPは「two tin cans and a string」でも機能するだろうという事である。エイプリルフールネタではあるが、伝書鳩を用いて稼動するための実装案「鳥類キャリアによるIP」さえ存在する。

//ルーター//と呼ばれるコンピュータはそれぞれのネットワークにインタフェースを提供し、ネットワーク間で行き来するパケットを転送する。ルーターに関する必要条件は RFC 1812 で定義された。

その着想は1973–1974年度にスタンフォード大学のサーフ ネットワーク研究グループによってより詳細な構造が作り上げられ、最初のTCP/IP仕様 RFC 675 を生み出した。

その後、異なったハードウェア上の実用プロトコルを開発するため、DARPAはBBNテクノロジーズ、スタンフォード大学およびユニヴァーシティ・カレッジ・ロンドンと契約した。4バージョンが開発された。TCP v1、TCP v2、1978年春にはTCP v3とIP v3に分離、そして安定版のTCP/IP v4 - これは今日のインターネットでもまだ使われる標準プロトコルである。

1975年、スタンフォード大学とユニヴァーシティ・カレッジ・ロンドン間で、2拠点のTCP/IP通信試験が実施された。1977年11月、アメリカ、イギリス、ノルウェー間で、3拠点のTCP/IP試験が実施された。1978年から1983年にかけて、複数の研究施設でその他いくつかのTCP/IPの試作が開発された。1983年1月1日、ARPANETはTCP/IPへ完全に切り替えられた。

1982年3月、アメリカ国防総省は全ての軍用コンピュータ網のためにTCP/IP標準を作成した。

1983年9月にTCP/IPに対応したUnix系OSである4.2BSDが登場した。この時期のUnix系OSは大学機関を中心に発展してきた経緯がある。

1985年、インターネットアーキテクチャ委員会は、コンピュータ産業のために3日間のTCP/IPワークショップを挙行した。250の業者代表が参加し、TCP/IPの普及を助け、商用利用の増加に繋がった。

1994年にLinux1.0が公開され、高価だったUNIXの機能のかなりの部分がオープンソースで利用できるようになった。1995年にWindows 95でTCP/IP, telnet, ftp, ウェブブラウザ等を標準搭載し、一般的な通信として広く使えるようになった。1999年にはWindows 2000でPOSIXへの対応を始め、TCP/IPを始めUNIXにより近いシステムとして提供している。

2001年 MacintoshのOSであるMac OS XがUNIXを土台としている。2005年11月9日、アメリカ文化への貢献を称え、カーンとサーフに大統領自由勲章が授与された。

2.1. 日本における普及
-------------

1980年代後半には日本の大学でもUnix系OSが用いられているところでは大学内ネットワークにTCP/IPが用いられるようになった。1988年8月2日、JUNETに大きく関わった村井純によって日本からのインターネットへのTCP/IP接続試験が行われた。

1989年9月、最初の日本語による解説書である西田竹志著「TCP/IP」が発行された。

1997年3月、全国銀行協会連合会が傘下銀行の企業・銀行相互間のオンラインデータ交換において使用できる新しい標準通信プロトコルとして、全銀TCP/IP手順を制定した。それまで利用されてきた全銀手順に代わり、電子データ交換でもTCP/IPが使われるようになった。

こうして日本でも次第にインターネットを取り巻く環境の整備が進むとともにTCP/IPが普及していくことになった。

3. インターネット・プロトコル・スイートの階層
------------------------

IP群はプロトコルとサービスをカプセル化する事によって抽象化する。通常、より上位層のプロトコルはその目的の達成に役立てるために、より下位層のプロトコルを用いる。これまで IETF はインターネット・プロトコル・スタックを RFC 1122 で定義された4層から変更した事はない。IETFは、7層からなるOSI参照モデルに従うような試みはせず、また標準化過程  にあるプロトコル仕様やその他の構造上の文書をOSI参照モデルに対して参照する事もしない。

RFC 3439 では、インターネット構造に関して、第3章の序文に "Layering Considered Harmful " と題された節があり、「階層化」という考え方には概念的、構造的な種々の利点がある一方で、実装面では層単位で同じような最適化が繰り返し発生することで効率的な実装を阻害し複雑化を招いたり、低層部分のみに存在するデータにアクセスできない場面が発生するなど、インターネット・プロトコルの目指す「単純化」という原則に反する場合もあることが明記された。

3.1. TCP/IPモデルとOSI参照モデル
-----------------------

いくつかの教科書ではTCP/IPモデルを7層のOSI参照モデルへ対応付ける事を試みた事がある。その対応付けは、インターネット・プロトコル・スイートのリンク層を物理層の上のデータリンク層へ、またインターネット層はOSI参照モデルのネットワーク層へ割り当てられる事が多い。それらの教科書は RFC 1122 やその他 IETF の一次情報の意図と矛盾する二次情報である。

IETFは再三にわたりインターネット・プロトコルと構造の開発はOSIに準拠する事は意図しないという事を述べている。

4. 実装
-----

TCP/IPは今日、ほとんどの商用および非商用のOSに実装されている。ほとんどのOSの利用者は、TCP/IPを利用するために探したり、自分で実装する必要は無い。ただし、OSを提供していない新しいCPUや、FPGAの上にCPUを設計して新しいOSを作る場合には、TCP/IPを再設計するか、Linux, BSDなどのオープンソースのインターネット・プロトコル・スイートをコンパイルできるようにする場合がある。

特に広く使われている実装はバークレーソケットである。全ての商用UNIX、BSD系のPC-UNIX、BSDに基づいたmacOSはもとより、LinuxなどのUnix系OSや、Unix系でなかったWindowsなどでも参考にしている。

その他の実装には、組込みシステムのために設計されたオープンソースのプロトコル・スタックであるlwIP、アマチュア無線のパケット通信で使われているKA9Q、TOPPERSのASPカーネルなどに搭載可能なTINETなどがある。

5. イントラネット
----------

TCP/IPを使用して構築されたプライベートネットワークをイントラネットと呼び、これは今日のLANにおける事実上の標準と言える。イントラネットで用いられるプロトコルの代表例を下記に挙げる。

E-mail  
ドメイン・ネーム・システム 
ハイパーテキスト転送プロトコル 
ファイル転送プロトコル 
インターネット・リレー・チャット 
ネットワーク・タイム・プロトコル 

6. 追加知識
-------

Michael J. Donahoo、Kenneth L. Calvert:「TCP/IPソケットプログラミング　C言語編」、オーム社、ISBN 978-4-274-06519-4。
小口正人：「コンピュータネットワーク入門―TCP/IPプロトコル群とセキュリティ」、サイエンス社、ISBN 978-4781911663。
村山公保:「基礎からわかるTCP/IP ネットワークコンピューティング入門 第3版」、オーム社、ISBN 978-4274050732。
蜷川忠三：「IoT通信性能解析」、コロナ社、ISBN 978-4339009446。

7. 関連項目
-------

Internet Engineering Task Force 
TCPやUDPにおけるポート番号の一覧
OSI参照モデル
エンドツーエンド原理
プロトコルスタック
ns

8. 脚注
-----

8.1. 注釈
-------

8.2. 出典
-------

9. 参考文献
-------

[1] -- Pages on Robert Kahn, Vinton Cerf, and TCP/IP .

10. 外部リンク
---------

[2]
675 - Specification of Internet Transmission Control Program, December 1974 Version
[3] 
1122}} Requirements for Internet Hosts -- Communication Layers 
[4]
1180}} A TCP/IP Tutorial - from the Internet Engineering Task Force 
[5] - A comprehensive look at the protocols and the procedures/processes involved
[6]
[7]
[8]
[9] - Intro to TCP/IP LAN administration, conversational style
[10]
[11] 情報処理推進機構