インターネット・プロトコル・スイート
![]() |
TCP/IP群 |
---|
アプリケーション層 |
|
トランスポート層 |
カテゴリ |
インターネット層 |
カテゴリ |
リンク層 |
カテゴリ |
インターネット・プロトコル・スイート(英: Internet protocol suite)は、インターネットを含む多くのコンピュータネットワークにおいて、標準的に利用されている通信プロトコルのセットである。TCP/IP(Transmission Control Protocol /Internet Protocol )とも呼ばれる。
概要[編集]
有線、無線などの物理層の違い、イーサネット、モデムによるシリアル通信などの物理層とデータリンク層の違い、異なるベンダや、異なるオペレーティングシステム (OS) の間であっても、インターネット・プロトコル・スイートに対応している機器同士であれば、相互に通信することが可能となる。プロトコルの仕様は公開されており、1980年代の業界バズワードであるオープンシステム(「ネオダマ」の「オ」)のいう「オープン」と、ある程度関連している。
インターネット・プロトコル・スイートは、複数の階層で構成されており、各機器は、下位層プロトコルと上位層プロトコルの両方に従って通信を行っている。上位層はより理論的なデータを処理する一方で、データを物理的に転送するためには、下位層プロトコルに従う必要がある。そのため、データを転送する際は、上位層のプロトコルに基づくデータの先頭と末尾に、より下位層のプロトコルに基づくヘッダとフッタを付与していく(カプセル化)。インターネットにおけるデータ通信モデルは、TCP/IPモデル(TCP/IP参照モデル・DARPAモデル[1])と呼ばれ、4つの階層で構成されている[2]。この階層的な通信規約の設計をプロトコルスタックと呼ぶことがある。
歴史[編集]
今日のIPネットワーキングは、1960年代と1970年代に発展し始めたLocal Area Network (LAN) とインターネットの開発が統合されたものである。それは1989年のティム・バーナーズ=リーによるWorld Wide Webの発明と共にコンピュータ及びコンピュータネットワークに革命をもたらした。
インターネット・プロトコル・スイートの最初期の定義は、G. Delocheが記述し、1969年5月にRFC8として発行された、ARPA Network Functional Specificationsにまで遡ることができる[3]。
インターネット・プロトコル・スイートは、1970年代初期に米国国防高等研究計画局 (DARPA) による研究から登場した。1960年代後半に先駆的なARPANETの構築後、DARPAはその他様々なデータ転送技術における研究を開始した。1972年、ロバート・カーン (Robert E. Kahn) はDARPA情報処理技術室 (IPTO: Information Processing Technology Office) に雇われた。そこで彼は衛星パケット網と地上の無線パケット網の研究に取り組み、それらを横断して通信ができる事の価値を認識した。1973年春、ヴィントン・サーフ(Vinton Cerf。その当時既に完成していたARPANET Network Control Program (NCP) プロトコルの開発者)は、ARPANETの次世代プロトコルを設計する事を目標に、オープン・アーキテクチャ相互接続モデルに取り組むためにカーンと合流した。
1973年の夏までに、カーンとサーフはすぐに基本的な改良を解決した。ネットワーク・プロトコル間の違いは、共通の相互接続ネットワーク・プロトコルを用いる事で隠蔽された。そしてARPANETにおいては、信頼性についてネットワークが責任を持つ代わりに、ホストが責任を持つようになった。サーフはユベール・ジメルマンとルイ・プザン(CYCLADESネットワーク設計者)が、この設計に対して重要な役割を果たした功績を認めている。
ネットワークの役割を最低限まで減らす事で、それらの特性が何であろうとも、ほぼ全てのネットワークを統合できるようになった。それによりカーンの当初の問題も解決した。よく言われる事は、TCP/IP(サーフとカーンの取り組みの最終成果)は「two tin cans and a string」(2つの空き缶と1本の紐、すなわち糸電話)でも機能するだろうという事である。エイプリルフールネタではあるが、伝書鳩を用いて稼動するための実装案「鳥類キャリアによるIP」さえ存在する。(RFC 1149[4][5])
(その他の型のゲートウェイとの混同を避けるためにゲートウェイから改名された)ルーターと呼ばれるコンピュータはそれぞれのネットワークにインタフェースを提供し、ネットワーク間で行き来するパケットを転送する。ルーターに関する必要条件は RFC 1812 [6]で定義された。
その着想は1973〜74年度にスタンフォード大学のサーフ ネットワーク研究グループによってより詳細な構造が作り上げられ、最初のTCP/IP仕様 RFC 675 [7]を生み出した。(PARC Universal Packet プロトコル群を生み出した、ゼロックス パロアルト研究所における初期のネットワーク研究も、大半が同時期に行われ技術的に重要な影響を与えた。人々はその2つに注目した。)
その後、異なったハードウェア上の実用プロトコルを開発するため、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へ完全に切り替えられた[8]。
1982年3月、アメリカ国防総省は全ての軍用コンピュータ網のためにTCP/IP標準を作成した[9]。 1985年、インターネットアーキテクチャ委員会は、コンピュータ産業のために3日間のTCP/IPワークショップを挙行した。250の業者代表が参加し、TCP/IPの普及を助け、商用利用の増加に繋がった。
1994年にLinuxが1.0を公開し、高価だったUNIXの機能のかなりの部分がオープンソースで利用できるようになった。 1995年にWindows 95でTCP/IP, telnet, ftp, ブラウザ等を標準搭載し、一般的な通信として広く使えるようになった。 1999年にはWindows 2000でPOSIXへの対応を始め、TCP/IPを始めUNIXにより近いシステムとして提供している[10]。
2001年 MacintoshのOSであるMac OS XがUNIXを土台としている。 2005年11月9日、アメリカ文化への貢献を称え、カーンとサーフに大統領自由勲章が授与された。
日本における普及[編集]
TCP/IPに対応したUnix系OSである4.2BSDは1983年9月に登場している。この時期のUnix系OSは大学機関を中心に発展してきた経緯があるが、1980年代後半には日本の大学でもUnix系OSが用いられているところでは大学内ネットワークにTCP/IPが用いられていた。1988年8月2日、JUNETに大きく関わった村井純によって日本からのインターネットへのTCP/IP接続試験が行われ、その後、日本でもインターネットを取り巻く環境の整備が進むとともにTCP/IPが普及していくことになった。
1989年9月、最初の日本語による解説書である西田竹志著「TCP/IP」が発行された。
1997年3月、全国銀行協会連合会が傘下銀行の企業・銀行相互間のオンラインデータ交換において使用できる新しい標準通信プロトコルとして、全銀TCP/IP手順を制定した。それまで利用されてきた全銀手順に代わり、電子データ交換でもTCP/IPが使われるようになった。
(日本におけるインターネットの歴史については日本のインターネットを参照)
インターネット・プロトコル・スイートの階層[編集]
![]() 2つのホストが2つのルータを経由してネットワーク接続する場合に、それぞれのホップで使用する階層毎に対応する階層同士で論理的に接続される概念図 |
IP群はプロトコルとサービスをカプセル化する事によって抽象化する。通常、より上位層のプロトコルはその目的の達成に役立てるために、より下位層のプロトコルを用いる。これまでIETFはインターネット・プロトコル・スタックを RFC 1122 で定義された4層から変更した事はない。IETFは7層からなるOSI参照モデルに従うような試みはせず、また標準化過程 (Standards Track) にあるプロトコル仕様やその他の構造上の文書をOSI参照モデルに対して参照する事もしない。
4. アプリケーション | DNS, TFTP, TLS/SSL, FTP, Gopher, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP, SNMP, SSH, TELNET, ECHO, RTP, PNRP, rlogin, ENRP |
---|---|
さまざまな理由でTCP上で稼動する BGPなどのルーティング・プロトコルも、アプリケーションまたはネットワーク層の一部と考えられる場合も有る。 | |
3. トランスポート | TCP, UDP, DCCP, SCTP, IL, RUDP |
2. インターネット | IP上で稼動するOSPFなどのルーティング・プロトコルも、経路選択を提供するため、ネットワーク層の一部であると考えられる事も有る。ICMPとIGMPはIP上で稼動し、また制御情報を提供するため、ネットワーク層の一部であると考えられる。 |
IP (IPv4, IPv6) | |
ARPとRARPはIPの下、リンク層の上で動作するため、それらはどこか中間に属する。 | |
1. リンク | イーサネット, Wi-Fi, トークンリング, PPP, SLIP, FDDI, ATM, フレームリレー, SMDS |
いくつかの教科書ではTCP/IPモデルを7層のOSI参照モデルへ対応付ける事を試みた事がある。その対応付けは、インターネット・プロトコル・スイートのリンク層を物理層の上のデータリンク層へ、またインターネット層はOSI参照モデルのネットワーク層へ割り当てられる事が多い。それらの教科書は RFC 1122 やその他IETFの一次情報の意図と矛盾する二次情報である。IETFは再三にわたりインターネット・プロトコルと構造の開発はOSI参照モデルに準拠する事は意図しないという事を述べている。
実装[編集]
TCP/IP(正確には IP + (TCP or UDP))は今日、ほとんどの商用および非商用の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(en:lwIP)、アマチュア無線のパケット通信で使われているKA9Q(en:KA9Q、KA9Qは開発者Phil Karnのコールサインである)、TOPPERSのASPカーネルなどに搭載可能なTINET[11]などがある。
イントラネット[編集]
TCP/IPを使用して構築されたプライベートネットワークをイントラネットと呼び、これは今日のLANにおける事実上の標準と言える。イントラネットで用いられるプロトコルの代表例を下記に挙げる。
- E-mail (SMTP/POP3/IMAP4) (MAP)
- ドメイン・ネーム・システム (DNS)
- ハイパーテキスト転送プロトコル (HTTP)
- ファイル転送プロトコル (FTP)
- インターネット・リレー・チャット (IRC)
- ネットワーク・タイム・プロトコル (NTP)
関連項目[編集]
脚注[編集]
- ^ インターネットの研究開発を行っていたDARPAに由来する。
- ^ R. Braden (1989年10月). “RFC 1122: Requirements for Internet Hosts―Communication Layers”. 南カリフォルニア大学 Information Sciences Institute (ISI). 2007年9月15日閲覧。
- ^ G. Deloche, https://www.rfc-editor.org/info/rfc8, RFC 8 ARPA Network Functional Specifications, MAY 1969
- ^ D. Weitzmann (1990年4月1日). “A Standard for the Transmission of IP Datagrams on Avian Carriers”. Internet Engineering Task Force. 2007年11月20日閲覧。
- ^ Bergen Linux User Group (2001年4月). “The informal report from the RFC 1149 event”. 2008年1月18日閲覧。
- ^ F. Baker (1995年6月). “Requirements for IP Routers”. 2008年1月18日閲覧。
- ^ V.Cerf et al (1974年12月). “Specification of Internet Transmission Control Protocol”. 2008年1月18日閲覧。
- ^ Internet History
- ^ Ronda Hauben. “From the ARPANET to the Internet”. TCP Digest (UUCP). 2007年7月5日閲覧。
- ^ Windows 2000, Microsoft, https://news.microsoft.com/1999/12/15/microsoft-releases-windows-2000-to-manufacturing/
- ^ https://www.toppers.jp/tinet.html
参考文献[編集]
- Internet History -- Pages on Robert Kahn, Vinton Cerf, and TCP/IP (reviewed by Cerf and Kahn).
- Forouzan, Behrouz A. (2003). TCP/IP Protocol Suite (2nd ed.). McGraw-Hill. ISBN 0-07-246060-1
追加知識[編集]
- アンドリュー・S・タネンバウム『コンピュータネットワーク第4版』日経BP社、2003年。ISBN 978-4822221065。
- Douglas E. Comer, David L.Stevens『TCP/IPによるネットワーク構築 Vol.I 原理・プロトコル・アーキテクチャ 第4版』村井純, 榎本博之訳、共立出版、2002年。ISBN 978-4320120549。
- Douglas E. Comer, David L.Stevens『TCP/IPによるネットワーク構築 Vol.II 設計・実装・内部構造』村井純, 榎本博之訳、共立出版、1995年。ISBN 978-4320027343。
- Douglas E. Comer, David L.Stevens『TCP/IPによるネットワーク構築 Vol.III Windowsソケットバージョン クライアントサーバプログラミングとアプリケーション』村井純, 榎本博之訳、共立出版、2001年。ISBN 978-4320029996。
- Douglas E. Comer, David L.Stevens『TCP/IPによるネットワーク構築 Vol.III Linux/POSIXソケットバージョン クライアントサーバプログラミングとアプリケーション』村井純, 榎本博之訳、共立出版、2003年。ISBN 978-4320120846。
- Joseph G. Davies, Thomas F. Lee (2003). Microsoft Windows Server 2003 TCP/IP Protocols and Services Technical Reference. ISBN 0-7356-1291-9
- Craig Hunt (1998). TCP/IP Network Administration. O'Reilly. ISBN 1-56592-322-7
- W・リチャード・スティーヴンス『詳解TCP/IP Vol.1 プロトコル』、ピアソンエデュケーション』橘康雄, 井上尚司訳、2000年。ISBN 978-4894713208。
- W・リチャード・スティーヴンス, ゲーリー・R. ライト『詳解TCP/IP Vol.2 実装』徳田英幸, 戸辺義人訳、ピアソンエデュケーション、2002年。ISBN 4894714957。
- W・リチャード・スティーヴンス『詳解TCP/IP Vol.3 トランザクションTCP、HTTP、NNTP、UNIXドメインプロトコル』中本幸一, 田中伸佳, 石川裕次訳、ピアソンエデュケーション、2002年。ISBN 4894716674。
- Ian McLean (2000). Windows(R) 2000 TCP/IP Black Book. Coriolis Group. ISBN 1-57610-687-X
- Michael J. Donahoo、Kenneth L. Calvert:「TCP/IPソケットプログラミング C言語編」、オーム社、ISBN978-4-274-06519-4(2003年)。
- 小口正人:「コンピュータネットワーク入門―TCP/IPプロトコル群とセキュリティ」、サイエンス社、ISBN 978-4781911663(2007年)。
- 村山公保:「基礎からわかるTCP/IP ネットワークコンピューティング入門 第3版」、オーム社、ISBN 978-4274050732(2015年)。
外部リンク[編集]
- Learn Networking - An Introduction to TCP/IP
- RFC 675 - Specification of Internet Transmission Control Program, December 1974 Version
- TCP/IP State Transition Diagram (PDF)
- RFC 1180 A TCP/IP Tutorial - from the Internet Engineering Task Force (January 1991)
- The TCP/IP Guide - A comprehensive look at the protocols and the procedures/processes involved
- A Study of the ARPANET TCP/IP Digest
- TCP/IP and IMS Sequence Diagrams
- The Internet in Practice
- Daryl's TCP/IP Primer - Intro to TCP/IP LAN administration, conversational style
- Introduction to TCP/IP
- “TCP/IP commands from command prompt”. 2013年11月2日時点のオリジナルよりアーカイブ。2020年9月24日閲覧。
- TCP/IPに係る既知の脆弱性に関する調査報告書 情報処理推進機構 (IPA)
- 『TCP/IP』 - コトバンク