第3回 OSI参照モデル詳説 TCP/IPプロトコル(4/5 ページ)

» 2000年07月19日 00時00分 公開
[岡部泰一]

第3層「ネットワーク層」

 データリンク層には、利用するネットワーク媒体の物理的な特性の違いなどによって、さまざまな種類のプロトコルがある。実際にはそれらのプロトコルでは、ネットワーク媒体に接続されている複数のコンピュータから1つのコンピュータを特定する方法(宛先や送信元のアドレスの指定方法)や、一度に送ることができるデータのサイズなどが異なっているのが普通である。たとえばEthernetで一度に送ることができるデータのサイズは最大1500バイトであるが、FDDIでは4352バイトである(これらの値は歴史的な経緯によって決まっている)。これでは異なる種類のネットワーク媒体を使ってネットワークを構築することができず、不便である。

 そこで、このようなデータリンク層の仕様の違いを吸収し、複数のネットワーク同士を相互に接続するために、「ネットワーク層(network layer)」が設けられている。ネットワーク層のプロトコルの役割は、データリンク層で接続されているネットワーク同士を相互に接続して、そこに接続されている任意のコンピュータ間での通信を行えるようにすることである。つまり、同じネットワーク媒体上に接続されているコンピュータ間同士だけではなく、異なるネットワーク媒体上に接続されているコンピュータの間でも通信を行えるようにするのがこのネットワーク層の役割である。これを実現するためにネットワーク層では、相互に接続されたネットワーク上のすべてのコンピュータに対して、一意に特定できるようにするための方法(アドレス付け)を定義し、データの送信元や送信先には、このアドレスを使って通信を行わせる。そして、通信相手までの間に複数のネットワークが存在する場合、各ネットワークの間にあるコンピュータ(ルータ)がルート(経路)の選択をして、バケツリレーのようにデータの転送をするパケット交換機能を提供する。もしデータを転送するときに、データのサイズが、転送先のデータリンク層のプロトコルが伝送できるサイズを超えていた場合は、データを分割して転送し、分割されたデータを受信したときには元に戻す機能も提供する。

 ネットワーク層までのプロトコルを実装した機器としてはルータ(router)があげられる。ルータには通常2つ以上のネットワーク媒体を接続する。そしてあるネットワークからそのルータにデータが送られてくると、送られてきたデータの宛先アドレスを見て経路を選択し、目的とするネットワーク媒体上へデータを送出する。この操作を繰り返すことにより、離れたネットワーク上に存在する2つのコンピュータの間でデータを転送することができるようになる。

ネットワーク層

ネットワーク層は、複数のネットワークを相互接続したパケット交換ネットワークを実現するための層であり、相互接続ネットワークに接続している複数のコンピュータの中から1つのコンピュータを特定する方法や、ルーティング機能を提供する。ルータはネットワーク層の転送を行う機器である。


第4層「トランスポート層」

 「トランスポート層(transport layer)」のプロトコルは、データ伝送の信頼性を保証するための機能を提供する。つまり、送信元から送ったデータが、正しく相手先にまで届くことが保証されている通信を実現するのがこの層の役割である。送ったデータが相手に届くのは当然であると思われるかもしれないが、連載第1回でも述べたように、パケット交換型ネットワークでは、ネットワークの状態によっては、(分割して)送ったデータが経路の途中で消失したり、パケットの到着順序が入れ替わったりすることがある。そのため、信頼性のあるデータ伝送を実現するためには、データが正しく相手にまで届いたかどうかを確認し(実際には、相手側から、受信したことを知らせるためのデータを送ってもらうなどの手段を使う)、問題があれば(パケットが途中で消失して届いてないとか、データの内容が壊れてしまっているようであれば)、データの再送信などを行い、確実に相手に届くようにする。また、(下位層の)ネットワーク媒体が一度に伝送できるサイズに合わせて、送信データを分割して何度かに分けて送信したり(分割)、分割されたデータを受信した場合はもとに戻したりする(再構築)機能も必要となる。

トランスポート層:データの分割と再構築

トランスポート層は、任意のサイズのデータを送るために、データの分割と再構築を行う。そして、相手にデータが確実に届いたかどうかを確認し、届かない場合やデータが誤っていたような場合は、再送信などの処理を行う。


 トランスポート層では、通信を行うプログラム間で使用するための「仮想的な回線(virtual circuitもしくはvirtual connectionの訳語。「仮想的な通信路」ということもある)」の機能も提供する。プログラム間でこの仮想的な回線を「確立(establish)」しておくことにより、それらのプログラム間でデータを交換することができる。具体的には、プログラムからこの仮想的な回線にデータを「書き込む」と、そのデータが仮想的な回線の反対側に送られ、相手側ではそのデータを「読み出す」ことによって通信を行うのである。仮想的な回線は、1つのコンピュータで複数利用することもできる。そのため、コンピュータ上の複数のプログラムでそれぞれ独立した通信を行ったり、1つのコンピュータ(プログラム)で複数のコンピュータ(プログラム)を相手に同時に独立した通信を行ったりすることができる。

トランスポート層:仮想的な回線

トランスポート層は、通信を行うプログラム間で使用する仮想的な回線も提供する。ネットワークを利用する通信プログラムは、まず2つのプログラムの間にこの仮想的な回線を確立し、これを使ってデータを相手に送る。1つのコンピュータで複数の仮想的な回線を利用でき、複数の独立した通信を、複数の相手と行うことができる。この例では、中央上のコンピュータで動作している通信プログラムは、左下のコンピュータおよび右下のコンピュータとそれぞれ独立した通信回線を用意して、通信を行っている。「123」とか「321」、「654」、「456」というのは、通信路を識別するための番号(ポート番号)である。


  

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。