データ伝送web講座

9. 通信プロトコル

line

9.3. TCP/IP

9.3.(1) TCP/IP の概要

◆ TCP/IP は、インターネットや、LAN などに、現在、広く活用されています。グローバル、かつオープンな、インターネットワークを対象とした、プロトコルです。OSI は、体系的には、TCP/IP を発展させたプロトコルです。しかし、歴史的過程や、TCP/IP と比較して、使い難い点もあり、TCP/IP に取って代わることが、できませんでした。歴史的過程とは、インターネットが、予想以上に早く普及してしまったということです。世の中何でも、そうですが、とくにプロトコルは、広く普及してしまうと、新しいプロトコルに、よほど大きな特徴がないと、従来のプロトコルに取って代わることができません。
◆ たとえば、パソコンインターフェースの、USB は、従来の RS232C に取って代わって普及しています。これは、RS232C と比べて、性能と使いやすさの両方で、革命的な進歩があったからです。OSI は、TCP/IP と比べて、そのような魅力はありません。 OSI は、OSI を構成する、個々のプロコルは、現在多く使われていますが、インターネットワークとして、体系的に運用されている例は、あまり多くはありません。
◆ これに対して、TCP/IP は、長期にわたる実績によって、積み上げられてきた、プロトコルです。TCP/IP は、体系的には、きれいでない点もありますが、使いやすさの点で、OSI よりも、優れています。
体系としてTCP/IP と OSI とを比較すると、下位(トランスポート層以下)の階層は、おおよそは、TCP/IP と OSI とは同じです。上位の階層では、TCP/IP は、OSI のように、細分して階層化されておらず、1 つの階層となっています(図.27)。

[図.27] TCP/IP と OSI の比較

TCP/IP と OSI の比較

◆ 各階層のプロトコルには、コネクションタイプとコネクションレスタイプとがあります。TCP/IP では、図.28 のようになっています。

[図.28] コネクションとコネクションレス

コネクションとコネクションレス

◆ コネクションタイプは、接続処理/切断処理を行います。相手を確認しあってから伝送を行います。確実なやり取りを行いますが、オーバーヘッドが掛かります。コネクションレスタイプは、接続/切断処理のための、オーバーヘッドが掛かりませんから、迅速な処理を行うことができます。ただし、相手に届いたことが確認できません。したがって、信頼性の点で劣ります。
◆ TCP/IP では、IP 層(ネットワーク層)以下を、コネクションレスにして、効率化をはかっています。その代わり、TCP 層でコネクション処理を行って、IP 層以下の信頼性の低さを補償しています。実用上、この組み合わせは、最良と考えられます。ただし、処理速度を重視しなければ、ならない応用に対応するために、TCP 層でも、コネクションレスの処理を行う、UDP が用意されています。
ICMP は、実質的には、IP 層を補助するプロトコルです。ICMP は、IP 層のパケットのデータ部を使用します。この意味では、ICMP は、IP 層の上位のプロトコルです。
◆ TCP/IP は、インターネットと共に発展してきたプロトコルです。米国の国防総省が、軍用の広域コンピュータネットワークの技術を確立する目的で、資金を提供してできた、アーパネット(1969)が、インターネットの始まりです。米国西海岸の 4 つの大学/研究所を結ぶネットワークでした。このアーパネットで、TCP/IP の原型が作られました(図.29)。

[図.29] アーパネット

アーパネット

◆ アーパネットは、次第に規模を増し、1972 年には、全米に広がっています。 TCP/IP は、トランスポート層のプロトコル TCP と、ネットワーク層のプロトコル IP の名前を取ったものですが、図.27 に示されているように、この 2 つの階層だけでなく、さらに上位から、下位までのプロトコルを含む、全体プロトコルに対して付けられている名称です。
◆ TCP/IP は、上記のように、コンピュータネットワーク用の、プロトコルとして、スタートしましたが、大学や研究機関で広く使用されていた、OS である、ユニックスの標準プロトコルに採用されたことから、広く普及しました。

従来は、インターネットワークや、ネットワークのプロトコルとして、各種のプロトコルが使われてきました。しかし、最近では、インターネットワークおよび、LAN のレベルのプロトコルは、大半が、TCP/IP を使用するように、なっています。
◆ TCP/IP における、データの流れを、図.30 に示します。データの流れは、OSI と同じです。

[図.30] TCP/IP 各階層間のデータの流れ

TCP/IP 各階層間のデータの流れ

9.3.(2) フィジカル層とデータリンク層

◆ TCP/IP では、フィジカル層 データリンク層 は、特定のものに限定されません。オープンシステムですから、当然のことです。しかし、LAN の場合は、事実上、ほとんどが、イーサーネットを使用しています。ただし、ここでイーサーネットとは、原型となるイーサーネットだけでなく、その後発展した各種のものを含みます。現在では、末端でも、伝送速度が 100M ビット/秒のスイッチングハブが主流です。高速用には、G(ギガ)ビット/秒が使われています。
最近では、ワイヤレスタイプも多く使用されています。ワイヤレスも、イーサーネットを使用しています。ワイヤレスは、従来 10M ビット/秒が主体でしたが、50 M ビツト/秒のものも、多くなってきました。
◆ イーサーネットのデータリンク層のプロトコルは、MAC 層だけです。OSI では、LLC 層が必要ですが、TCP/IP には、LLC 層は、ありません。LLC 層は、OSI の体系を整えるために作られたものであり、実質的には、不要な存在です。
イーサーネットの、MAC 層のパケットフォーマットを、図.31 に示します。

[図.31] MAC 層のパケットフォーマット

MAC 層のパケットフォーマット

◆ 図から分かるように、MAC アドレスは、6 バイトと長く、世界で唯一のアドレスとなるように、MAC アドレスを設定して、出荷しています。ただし、アドレスが、そうなっているだけであり、MAC アドレスは、あくまでも、データリンク層のアドレス、すなわち、同一ネットワーク内でのやり取りに使用するアドレスです。イーサーネットを開発したときは、プロトコルの階層化を予想していなかったので、MAC 層で世界をつなぐことを、想定したのでしょう。

9.3.(3) ネットワーク層

9.3.(3-A) IP アドレス

◆ ネットワーク層 は、インターネットワークにおける、ネットワーク間のやり取りのプロトコルです。TCP/IP のネットワーク層の規格は、現在 IPV4 が使われていますが、これをレベルアップした、IPV6 も使われ始めています。将来的に、IPV4 が無くなるのではなく、目的用途によって、使い分けられるものと思われます。ここでは、IPV4 について解説します。
TCP/IP のネットワーク層のアドレスを、IP アドレス と言い、32 ビットのアドレスです。(図.32)。

[図.32] IP アドレス

IP アドレス

◆ IP アドレスは、インターネットワーク中の、ネットワークを識別するだけでなく、ネットワーク内の、ノードのアドレスまでを含むアドレスです。TCP/IP では、ノードのアドレスを、ホスト番号と呼んでいます。アドレスは、ネットワーク番号と、ホスト番号とから成ります。ネットワーク番号は、インターネット上のアドレスの部分(ネット番号)と、各ユーザー内のアドレス(サブネット番号)とに分けられます。
ネット番号は、インターネット上で、ユーザーを識別するアドレスです。当然番号の重複は許されません。ネット番号の部分は、これを管理している機関(日本ではJPNIC )から、割り当を受けます。これをグローバルアドレス と言います。ただし、ユーザーは、直接この機関から割り当を受けるのではなく、その割り当をプールして保有しているプロバイダから割り当ててもらいます。グローバルアドレスとして、割り当てを受けるのは、ネット番号です。サブネット番号と、ホスト番号は、ユーザーが決めます。
◆ IP アドレスは、2 進数ですが、分かりやすいように、それを、8 ビットごとに区切り、その各々を、10 進数に換算して、たとえば、10.2.160.101 のように表わします。なお、最後の 8 ビットがゼロのもの、この例では、10.20.160.0 は、その IP アドレスが所属している、ネットワークのネットワーク番号を表わします。
◆ ユーザーは、サブネット番号を含む、ネットワーク番号の部分と、ホスト番号とを、識別する必要があります。これに、使用するのが、サブネットマスクです(図.33)。サブネットマスク を使用することによって、ネットワーク番号部分、またはホスト番号を、抽出することができます。ユーザーは、サブネット番号と、ホスト番号の桁数の配分を、自由に設定できます。

[図.33] サブネットマスク

サブネットマスク

◆ 以前は、各ユーザー内部のローカルなインターネットアドレスも、グローバルアドレスの割り当てを受けて、グローバルアドレスを使用していました。しかし、当初充分と考えた 32 ビットのアドレスが、インターネットの普及がによって、不足してきました。このため、各ユーザーに割り当てる、グローバルアドレスは、少数に止めて、各ユーザー内部のローカルのインターネットワークは、別のアドレス体系を使用するようになりました。この別のアドレス体系をプライベートアドレス と言います。現在では、ほとんどのユーザーが、プライベートアドレスを使用しています。
◆ プライベートアドレスは、ユーザー内部だけで使用するアドレスですから、ユーザーが、インターネットにアクセスするとき、インターネット上から、ユーザーの内部にアクセスするときは、プライベートアドレスとグローバルアドレスの相互変換を行う必要があります。大規模なシステムでは、ゲートウェイ(狭義)を使用して、各種の変換も同時に行いますが、小規模システムでは、ルータを使用します。通常インターネットへの接続は、ブロードバンドで行うので、ブロードバンドルータと呼んでいます(図.34)。

[図.34] ブロードバンドルータ

ブロードバンドルータ

◆ プライベートアドレスは、ユーザー内部で使用し、インターネットとは、ルータ等で切り分けられいます。したがって、プライベートアドレスが、インターネット上に流れ出すことはありません。しかし、万一を考えて、プライベートアドレスは、グローバルアドレスと重複しないように、アドレスが決められています(図.35)。大規模ユーザーを除き、多くのユーザーは、(c)で充分でしょう。

[図.35] プライベートアドレス

プライベートアドレス

◆ インターネット上では、IP アドレスを使用します。IP アドレスは、10 進数に換算して表記したとしても、数字の羅列では、ユーサーにとって使い勝手がよくありません。ユーザーは、便利な、ドメイン名を使用します。ユーザーは、ドメイン名サーバに、問い合わせて、ドメイン名に対応する、IP アドレスを入手して、実際の通信を行います。

9.3.(3-B) データグラム

◆ IP 層のプロトコルは、インターネットワークにおける、ルートの選定と制御を行います。しかし、IP 層は、それ自体は、合い隣る 2 点間のプロトコルです。
TCP/IP では、IP 層は、コネクションレスタイプです。この、IP 層のパケットを、データグラム と呼んでいます。ただし、データグラムという言葉それ自体は、IP 層や、TCP/IP に固有のものではありません。コネクションレスタイプのパケットの一般の名称です。したがって、IP データグラムの名で呼ぶほうが、間違いありません。IP データグラムのヘッダを、図.36 に示します。

[図.36] IP のヘッダー

IP のヘッダー

◆ 詳細な説明は省略しますが、ヘッダーの中に、プロトコルの欄があります。これは、IP の上位のプロトコルの種類(ICMP、TCP、UDPなど)を示します。
オープンシステムは、各階層が独立でなければ、なりません。上位のプロトコルを指定するということは、この独立性に、違反します。しかし、この機能は、便利な機能です。OSI のように、体系化にこだわることなく、便利さを選んでいます。
◆ IP 層は、上位の TCP 層から、送信のデータグラムを、受け取ります。このデータグラムのサイズは、TCP 層の都合によって決められます。しかし、実際に伝送を行うデータリンク層におけるデータグラムサイズの最大長さは、TCP 層から受け取るサイズを、下回っているかも知れません。IP 層では、必要に応じて、データグラムを分割して、送信します。分割された、データグラムは、相手の TCP 層に引き渡すときは、元のサイズにします(図.37)。これを、分割 (フラグメント )と再構成 (リアセンブリ )と言います。

[図.37] 分割と再構成

分割と再構成

◆ 実際には、データリンク層には、ほとんどが、イーサーネットを使用しています。イーサーネットでは、個別に最大のパケット長さを設定できます。途中のイーサーネットが、最大長さを短く設定していると、この制限に引っ掛かります。パケットには、ヘッダ部分がありますから、パケット長さを短くすると、実効伝送速度が低下します。
途中の全てがイーサーネットで、最大パケット長さが統一されているなら、分割/再構成は、ありません。

9.3.(3-C) ルーティング

◆ IP 層の最も重要な仕事は、ルーティング (ルートの選定と制御)です。この仕事は、ルータ(またはゲートウェイ)の担当です。TCP/IP では、ルーティングのプロトコルを限定していません。ルーティングの、簡単な例について説明します。
説明に使用する、インターネットワークを、図.38 に示します。

[図.38] 例題のインターネットワーク

例題のインターネットワーク

◆ 各ゲートウェイは、ルーティングテーブル を持っています。表.1 は、ゲートウェイ G1 のルーティングテーブルです。

[表.1] G1 のルーティングテーブル

G1 のルーティングテーブル

◆ 表のネットワークは、送信する相手のネットワーク番号です。ゲートウェイは、相手のネットワークに送るためには、どのゲートウェイ宛に送ればよいかを示します。インターフェースは、送信すべきノードの IP アドレスです。ホップ数は、相手に到着するまでに経由するゲートウェイの数に 1 を足した値です。
◆ インターネットワークでは、変更/追加が伴います。継続的な、変更/追加の他に、故障による、一時的な変更もあります。したがって、ルーティングテーブルは、随時アップデートする必要があります。
ルーティング変更の要因を発見したゲートウェイは、隣接ゲートウェイに、変更内容を通知します。そして、次々に、それを伝えます(図.39)。

[図.39] 変更を次々に通知する

変更を次々に通知する

◆ 図.38 に示したシステムは、ゲートウェイ G3 のノード 40.0.0.5 が、故障している状態です。したがって、ルーティングテーブル表.1 は、この、故障発生時の状況を示しています。すなわち、故障していなければ、ネットワーク 4 に送るのに、ゲートウェイ G3 を経由するのが最短です。しかし、故障のために、迂回する必要があるために、ホップ数が、3 になっています。

9.3.(3-D) I C M P

◆ ICMP は、IP 層のプロトコルを補助するプロトコルです。ICMP は、IP データグラムの中にデータの形で、記述されます。したがって、階層構造上は、IP 層の上位のプロトコルになります(図.27)。IP 層は、データグラムなので、効率は高いのですが、信頼性の点で劣ります。この欠点を補って、各種の制御を行うのが、ICMP です。ICMP のフォーマットを、図.40 に示します。

[図.40] I C M P

I C M P

◆ 上の 6 段は、IP ヘッダーです。IP ヘッダーのプロトコルの、1 は、この IP データグラムの上位プロトコルが、ICMP であることを表わしています。
ICMP の内容は、おもに異常処置です。たとえば、何らかの理由で、IP データグラムを相手に送ることができなくなったとき、IP データグラムの送信元に、その事態と、事態発生理由を送ります。
ユーザーが積極的に利用する ICMP のコマンドに、PING があります。PING は、相手ホストを指定して発行し、相手ホストに到着するかどうかを調べます。また、到着した場合、途中の経路情報を調べることができます。



目次に戻る   前に戻る   次に進む