ネットワークの基礎③

TCPはTransmission Control Protocol、IPはInternet Protocolの略称になります。

TCP/IPは、インターネット環境の通信を実現するための世界標準的に利用されているプロトコルのことです。

機器やOSが異なっていても共通のプロトコルにより通信を可能にしています。


TCP/IPの誕生から現在、そしてプロトコルについて学習していきたいと思います。

1. TCP/IP登場の背景


現在、コンピュータネットワークの世界で最もよく使われているプロトコルがTCP/IPです。コンピュータ業界全体で、TCP/IPを組み込んだOSを販売しています。

コンピュータメーカーがTCP/IPをサポートするようになった経緯について学んでいきましょう。

1-1. 軍事技術から

1960年代、アメリカで新しい通信技術の研究が行われていました。

とくにアメリカ国防総省(DoD:The Department of Defense)が、軍事的な面で重要だとし、中心となって研究開発が進められてきました。


敵の攻撃によりネットワークの一部が破壊されても、迂回経路を作成すれば通信を継続することができます。

そのようなネットワークを実現するために、パケット通信の必要性が唱えられるようになりました。

また、軍事的利用に限らず、パケット通信を利用すれば、複数のユーザーで同時に1つの回線を共有することができるため、利用効率が向上します。

・中央集中的なネットワークのイメージ図

中心の障害が発生すると多くの通信に支障が出ます。


・障害に強いパケットネットワークのイメージ図

いくつかのサイトに障害が発生しても、迂回経路からパケットが配送されます。



1-2. ARPANETの誕生

ARPANET(アーパネット)とは、Advanced Research Projects Agency Networkのことです。

1969年、パケット交換技術の実験として、4つのノード(UCLA:カリフォルニア大学ロサンゼルス校、UCSB:カリフォルニア大学サンタバーバラ校、SRI:スタンフォード研究所、ユタ大学)を結んだものでネットワークが構築されました。


このネットワークは一般のユーザーも含めて行われていたので非常に大規模なネットワークに発達しました。

これが、ARPANETと呼ばれるネットワークでインターネットの起源とも言われています。

その後、4つのノードから34のノードを接続する形に発展し、大成功をおさめました。

パケットによるデータ通信が実用的にできることが証明されました。

1-3. TCP/IPの誕生

ARPANETでは大学と研究機関を結ぶ幹線でパケット交換をするだけでなく、信頼性の高い通信であるか実験するために総合的な通信プロトコルの実験も行われていました。

その時にARPANET内で開発されたのが、TCP/IPでした。


その後、1982年ごろまでにTCP/IPの仕様が決定され、1983年には正式手順がTCP/IPに決定しました。

1-4. UNIXの普及とインターネットの拡大

TCP/IPが登場した背景にARPANETがありました。

このころ(1980年前後)は大学や研究所などで、コンピュータOSとしてBSD UNIXが広く利用されていました。

このOSの内部にTCP/IPが実装されたので、ARPANETの正式な接続手順として利用されるようになりました。

同じ年に、旧Sun Microsystems社が、TCP/IPを実装した製品を一般ユーザー向けに提供し始めました。


1980年代に、LANが発達するとともに、UNIXワークステーションの普及が進んでいきました。

TCP/IPによるネットワーク構築も盛んに行われるようになりました。

この流れのもと、大学や企業の研究所などが、ARPANETやその後継のNSFnetに接続するようになっていきました。

TCP/IPによる世界的なネットワークを「インターネット」と呼ぶようになりました。


インターネットは終端のノードのUNIXマシン同士を繋げる形で普及していきました。

その後、企業などを中心に導入が進んでいき、各コンピュータメーカー独自のプロトコルも、TCP/IPに対応するようになっていきました。

1-5. 商用インターネットサービスの開始

1990年代になると、企業や一般家庭に対してインターネットを提供するサービスが普及し、広く利用されるようになりました。

インターネットサービスを提供している会社をISP(インターネットサービスプロバイダ)と呼びます。


インターネットを利用した、オンラインゲームやSNS、動画配信などの商用サービスが始まった時期でもあります。

インターネットを企業や一般家庭に接続し、かつ商用利用も許可するISPが登場したことになります。それまでNSFnetでは商用目的での接続は禁止されていました。

2. TCP/IPの標準化

1990年代、ISOではOSI参照モデルを作成しました。

しかし、OSIはあまり普及することなく、TCP/IPが使われています。


TCP/IPの標準化には、他のプロトコルの標準化にはない特徴があります。

2-1. TCP/IPは何を指すのか

TCP/IPは、多くの場合、TCPとIPという2つのプロトコルだけではなく、IPを利用したり、IPで通信したりするときに必要となる多くのプロトコル群を総称として使われます。

具体的にはIPやICMP、TCPやUDPなど、多くのプロトコルが含まれます。


TCP/IPはインターネットプロトコルスイートと呼ぶこともあり、インターネットを構築する上で必要なプロトコルのセットを意味します。


2-2. TCP/IPの標準化の考え方

TCP/IPのプロトコルの標準化をする上で重視した点を2つ紹介します。

①オープンであること

TCP/IPのプロトコルはIETFでの議論を通して決められます。

議論には誰でも参加することができます。

②互いに通信できる技術を追い求めること

TCP/IPのプロトコルを決めるときには、実装することを念頭に作業が進められていきます。

実装されているプロトコルに関しては部分的だとしても通信できるようになっている必要があります。


TCP/IPは、プロトコルの使用が大体決まったら、複数の実装を持ち寄って相互接続実験が行われます。

問題があった場合には議論を行い、プログラムやプロトコル、ドキュメントを修正する作業が行われるという作業が繰り返されることで、プロトコルが標準化されます。

そのため、実用性が高いプロトコルが仕上がります。


TCP/IPのプロトコルは、OSIにはなかった、決定や改良を行える仕組みがあったこと、動作するプロトコルを早く作成することができたため、普及していったと言われています。

2-3. TCP/IPの仕様書RFC

TCP/IPのプロトコルは、IETFで議論され標準化されます。

標準化しようとするプロトコルはRFC(Request For Comments)と呼ばれるドキュメントになりインターネット上で公開されます。


RFCはプロトコルの仕様書だけでなく、プロトコルの実装や運用に関する情報・プロトコルの実験に関する情報も含まれています。

RFCになったドキュメントには番号が付けられています。

番号は決められた順に割り当てられていきます。一度RFCになると、内容を改訂することは許されておらず、拡張する場合でも新しい番号のRFCが発行され、古いものが無効になります。


プロトコルの使用が変わっても、主要なプロトコルや標準に対しては、STD(Standard)という変化しない番号付けも行われています。

2-4. TCP/IPプロトコルの標準化の流れ

プロトコルの標準化作業は、IETFでの議論を通して行われます。

年に3回、誰でも参加可能なミーティングがあり、通常はメーリングリストによる電子メールで議論が行われます。

TCP/IPプロトコルの標準化の流れは以下のような段階を経ることになります。


①仕様を煮詰めるインターネットドラフト(I-D:Internet-Draft)

②認められるとRFCになる提案標準(Proposed Standard)

③標準の草案であるドラフト標準(Draft Standard)

④標準(Standard)

①インターネットドラフト(I-D:Internet-Draft)

有効期限は6か月になります。

6か月ごとに変更の反映および不要な情報は消去します。

②提案標準(Proposed Standard)

IETFの主要メンバーから構成されるIESG(IETF Engineering Steering Group)の承認を得られると、RFCのドキュメントとして登録されます。

③ドラフト標準(Draft Standard)

提案されたプロトコルが多くの機器で実装され広く運用されるようになり、IESGの承認が得られると、ドラフト標準になります。

もし実用的にうまくいかなかった時はドラフト標準になる前に修正が加えられます。

④標準(Standard)

さらに多くの機器で実装されて問題なく利用されて実用性が十分にあると、IESGの承認されて標準になります。

TCP/IPの標準化は、標準を決めてから普及させるような標準化団体とは考え方が違っていて、標準になったときには、すでに普及しており、広く運用実績があるため、実用性の高い技術になります。


以下、RFCの入手先になります。

Index of /rfc (rfc-editor.org)

3. インターネットとTCP/IPの関係


現在、インターネットはARPANETから発展し、世界中を接続しているコンピュータネットワークのことを指します。


※イントラネットとは
…インターネットとの対比で使われることが多く、インターネットの技術を使って会社や組織内部の通信サービスを行うことを目的にして構築されたネットワークを意味することが多いです。

インターネットで通信するためのプロトコルとしてTCP/IPがあります。

4. インターネットの構造

インターネットは、小さなネットワーク同士が接続されて組織内のネットワークを構成、組織内のネットワーク同士が接続されて地域ネットワークを構成、地域ネットワーク同士が接続されて世界中を結ぶ巨大なインターネットを構成しています。

このようにインターネットは階層的な構造を持っているのです。


それぞれのネットワークは、バックボーンと呼ばれる基幹ネットワークと、スタブと呼ばれる末端ネットワーク部分から構成されます。

ネットワークとネットワークはNOCで接続されていて、異なるネットワークを対等に接続するポイントはIXと呼ばれています。



http://www.kogures.com/hitoshi/webtext/nw-inet-backbone/index.html


4-1. ISPと地域ネット

インターネットに接続するためには、ISPや地域ネットに接続を依頼することになります。

ISPでは、さまざまな接続メニューがあり、月に数回短時間だけ接続するのに有利な契約、移動先でも自由に使うことができる契約など、多種多様です。

地域ネットは、特定地域で自治体やボランティアなどによって運営されているネットワークです。


自分の利用目的やコスト等を検討し、自分に合ったものを選びましょう。

5. TCP/IPプロトコルの階層モデル

TCP/IPは、コンピュータネットワークの世界で もっとも使われているプロトコルになりました。

ネットワークを導入する人、ネットワークを管理する人、ネットワークを構築する人等、TCP/IPについて、知識を持っておくことが大切です。

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

OSI参照モデル


TCP/IPの階層モデル


OSI参照モデルの各層の役割について、ネットワークの基礎①で学んできましたが、TCP/IPで出てくるプロトコルについても、基本的にはOSI参照モデルの層に当てはめることができます。

OSI参照モデルが「通信プロトコルに必要な機能は?」を中心に考えられているのに対し、TCP/IPの階層モデルでは、「プロトコルをコンピュータに実装するにはどのようにプログラミングすればいいか」を中心に考えられてモデル化されています。

5-2. ハードウェア

最下位層には物理的にデータを転送してくれるハードウェアをおいてます。

イーサネットや電話回線などの物理層のことです。

内容については決めておらず、使用する通信媒体はケーブルでも無線でもいいのです。

また、信頼性やセキュリティ、帯域などについても制限がありません。

5-3. ネットワークインタフェース層

イーサネットなどのデータリンクを利用して通信するためのインターフェースとなる階層です。

NICを動かすために、OSとハードウェアの橋渡しをする役割を担っています。


利用するコンピュータのOSにデバイスドライバをインストールして利用環境が整います。

5-4. インターネット層

IPプロトコルが使われます。

OSI参照モデルの第3層のネットワーク層の役割に相当します。

IPプロトコルはIPアドレスをもとにしてパケットを転送します。


TCP/IPでは、インターネット層とトランスポート層がホストのOSに組み込まれることを想定しています。

ルーターには、インターネット層を利用してパケットを転送する機能を実装する必要があります。

インターネットに接続するすべてのホストやルーターは必ずIPの機能を実装しなければなりません。

インターネットに接続する機器でも、ブリッジやリピーター、ハブはIPやTCPを実装しなければないわけではありません。必要に応じて実装するようになります。


・IP…
ネットワークをまたいでパケットを配送し、インターネット全体にパケットを送るプロトコルになります。


・ICMP…
IPパケットの異常の際に、異常を知らせるプロトコルになります。

ネットワーク診断にも利用されます。


・ARP…
パケットの送り先のMACアドレスをIPアドレスから取得するプロトコルになります。

5-5. トランスポート層

TCP/IPには2つの代表的なトランスポートプロトコルがあります。

アプリケーション間の通信を実現する役割をするために、コンピュータ内部では複数のプログラムが同時に動作しています。

どのプログラムとどのプログラムが通信しているか識別する必要があります。

その識別にはポート番号が使用されます。


・TCP…
コネクション型で信頼性のあるトランスポートプロトコルです。

両端のホスト間でデータの到達を保証します。

ネットワークの混雑緩和や、帯域幅を有効にする仕組みが組み込まれています。

コネクションの確立や切断をするので、一定間隔で決められた量のデータを転送する通信には向いていません。


・UDP…コネクションレス型で信頼性のないトランスポートプロトコルです。

データが相手に届いているかチェックはしません。

パケット数が少ない通信や、ビデオや音声などのマルチメディアに向いています。

5-6. アプリケーション層

OSI参照モデルのセッション層やプレゼンテーション層・アプリケーション層になります。

6. まとめ


TCP/IPの標準化された経緯や、TCP/IPの階層モデルについても学ぶことができました。

実用性が高く、広く使われている理由がわかりました。

次回以降、さらにTCP/IPや通信について学んでいきたいと思います。