第2回補足資料図2.1 で示したように,TCP/IP は OSI参照モデルという 概略設計を実際に動くプロトコルに具体化したものという 位置付けになる.OSIプロトコルも同じ 位置付けで,ライバルにあたる関係だが,実際に普及したのは TCP/IP のほうである.
TCP は第4層のプロトコル,IPは第3層のプロトコルの名前で, それぞれ固有の意味があるが,TCP/IP というと単にその 2つのプロトコルだけでなく,インターネットを形成する プロトコル群全体を指すことに注意する.インターネットの プロトコルをTCP/IPと呼ぶ,と考えて良い.
大雑把にいうと TCP/IP はカジュアルな文化で作られた, というイメージをもっておくとよい.
TCP/IPのほうが「勝った」理由はいろいろ考えられるが 標準化のやり方に大きな特色があるのでそれを説明しているのが この節である.TCP/IPの標準化の特徴は,
の 2 点である.この2点のおかげで技術革新にあわせた柔軟な仕様変更と 使いやすい実装(プログラムを書いて実際に動作させること)ができた.
TCP/IP(プロトコル群)には多くのプロトコルが含まれるが, 各プロトコルの正式な定義ははRFCという文書に書かれる. RFCには識別番号がふってあり,一度書かれると番号と内容は 固定される.仕様を変更したいときには新たに別のRFCを作り, 古いどのRFCを置き換えるのか,拡張するのかなどの情報を書く.
有効なRFCの番号は注意していないと変わってゆく. 追いかけるのを簡単にするために,主要なプロトコル(教科書p.68表2.2) にはSTDという番号づけが行われている.STD にはそのプロトコルの 現在有効なRFCの番号が書かれている.プロトコルの改訂があったとき, STDはRFCとは逆にプロトコルに対する STDの番号は変化せず,内容(どのRFCが有効か)が変化する.
標準化の議論はIETFで行われる.議論は誰でも参加できるメーリングリストで 行われる(標準化がオープンだというのはこの点).しかし審査,承認する のは権威のある集団で,IETFの主要メンバーからなるIESGである.
標準化の流れは教科書p.70図2.4がわかりやすい.中心的なものは
提案標準 → ドラフト標準 → 標準
と進む流れである.この3つの最初の提案標準になるとRFCの番号が与えられるが それまでに運用実験を行い, 議論を重ねてIESGが承認してはじめて提案標準になる. そこから後も多くの機器で利用されてIESGが承認するとドラフト標準になる. ドラフト標準から標準になるのにはさらに広く使われる必要がある.
このように動作させながら仕様を磨いてゆくのが TCP/IP の標準化の 特徴で,そのためにドラフト標準であっても十分に実用的で, 先進的な商品では提案標準を実装することもある.
RFC は
から得ることができる.
この節では実際のインターネットがどのように構成されているかを説明する.
internet はもともとはネットワークとネットワークを接続した 一般名詞だったが全世界のネットワークが繋がり一つのinternetとなった. これを区別するために固有名詞として Internet, The Internet と書かれたりしたが,現在は internet が正式な 表記である.
インターネットを運用するために開発されたプロトコルがTCP/IPである.
現在のインターネットは教科書p.73図2.5のようになっている. ISP(インターネットサービスプロバイダ)を単位としてみるとよい. ISP内では同じ運用方針で運用されている.
インターネット全体はISP と ISP を IX で接続した形になっている. 異なるISPは異なる運用方針をもっているのでIXにはその違いを吸収する 機能がある.
ISP内部にも複数のネットワークがあるが,同じ運用方針で運用されているので NOC で互いに接続されている.
インターネットに接続するために,一般的にはISPと契約する.
TCP/IP の階層モデルはOSI参照モデルと全く同じではない. 同じ点と異なる点について説明する.
教科書p.75図2.8がわかりやすい.階層分けは OSI参照モデルに基づいているが,階層の名前が違い, 5-7層が簡略化されて一階層になっている. これはセッション層の役割である「いつコネクションを張るか」 やプレゼンテーション層の役割である「文字コードをどう処理するか」 アプリケーション層の役割である 「電子メールなどのアプリケーションのプロトコル」 の処理は結局アプリケーションソフトウェアが担当するからである.
OSが担当するのはOSI参照モデルでいうトランスポート層ネットワーク層である.
この階層分けはTCP/IPの階層でも分けられている.それだけ この階層がそれぞれ重要だということである.
TCP/IP では OSI参照モデルの物理層に相当する階層は規定していない. 無線でも有線でも,物理的な接続が確保されている前提で, そこから上のプロトコルを規定している.
OSI参照モデルのデータリンク層にあたるこの階層は,PCにある ネットワーク接続デバイスのデバイスドライバと考えて良い. 同じネットワークに接続された機器間の通信を規定している. デバイスドライバはOSの外の機能で,教科書p75図2.8でもそのように なっている.
OSI参照モデルのネットワーク層に対応する.この階層では 異なるネットワークにあるホスト間の通信を,ルータによる 経路制御を用いて実現するプロトコルであるIPが使われる. 教科書p75図2.8にあるようにOSに組み込まれている.
OSI参照モデルの同名の階層に対応する.IP で ホストとホストの通信は保証されたがそれだけでは十分でない. 各ホストでは複数のアプリケーションが動作しているので, メールのデータはメールサーバー,Web のデータは Webサーバーの アプリケーションに渡さなければいけない(教科書p.77図2.10) 郵便にたとえると,相手の家まで届けるのがインターネット層の仕事で その家の特定に人に届けるのがトランスポート層の仕事である.
このように通信相手のアプリケーションを識別して通信することが トランスポート層の本質的な役割で,アプリケーションを識別するのに 使われるのがポート番号である.有名なプロトコルには 決められたポート番号が与えられている(教科書p.235-236).
相手のアプリケーションを特定して通信する機能はトランスポート層の 基本的な機能だが,消えたパケットを再送するなどの信頼性のための 機能もこの階層の仕事とされている.この機能は第4階層としてあっても なくてもよく, 信頼性を提供するTCPと提供しないUDPがこの階層の代表的な プロトコルである.それぞれ一長一短をもつ.