現在のwebの世界で最も標準的なプロトコル群を組合せた通信手段になっているTCP/IPについて従来よりも、少しだけ掘り下げて紹介しています。OSI参照モデルとTCP/IPのレイヤー数が違う理由から入るため、親しみやすいでしょう。
TCP/IP とOSI参照モデルが似ている理由
TCP/IPとOSI参照モデルは似ていますがレイヤー(層)の分け方や、数が違います。
理由は、OSI参照モデルの場合、ネットワークはこうあるべき的な、概念を規定しているためレイヤー(層)を細かく分けて一つ一つの役割を明確にしているためです。OSI参照モデルは、しっかりと役割を分かってもらうために、レイヤーを細分化せざるを得なかったのでしょう。
それに対して、TCP/IPは、現在のwebの世界で最も標準的なプロトコル群を組合せた通信手段になっているように、実践的なプロトコル群として開発されたものです。
TCP/IPは、OSI参照モデルよりもレイヤーが集約されていますが、実用性を重んじたレイヤー(層)構造になっています。
このような理由で、OSI参照モデル(7層)と、TCP/IPプロトコル群(4層)は、レイヤー数は違いますが、内容は似ているのです。
次に、TCP/IPのレイヤー(層)毎の役割を整理します。
ネットワークインターフェース層(レイヤー1)の役割
ネットワークインターフェース層は、ネットワーク内の通信機器がやりとりする情報を管理しています。OSI参照モデルの物理層とデータリンク層に相当しています。
ケーブルや端子形状、信号の形式などの物理的な決まりごとや、コンピュータ機器間のデータのやり取りについての仕様を決めています。
ネットワークインターフェース層の代表的なプロトコルには、イーサネットやPPPなどがあります。イーサネットでは、MACアドレスで端末機器を特定して通信の仕組みを提供しています。
インターネット層(レイヤー2)の役割
インターネット層は、別のネットワークの通信相手にデータを届ける情報を管理しています。OSI参照モデルのネットワーク層に該当するもので、最終的にデータをやりとりする相手との決まり事を規定しています。
インターネット層にあるIP(インターネットプロトコル)は、上位層のトランスポート層にあるTCPとともに、TCP/IPプロトコル群の基盤になるものです。
データをやり取りする相手(コンピュータや機器)を定める時には、ネットワークの住所となるIPアドレスで特定します。インターネット層のIPの主要な役割は、「IPアドレスの管理」と、どのルートでいけば良いのかを決める「経路選択(ルーティング)」です。
インターネット層には、IPプロトコル以外にもARP、ICMPなどがありますが、いずれもIPプロトコルでのやり取りを補助する役目のプロトコルです。
トランスポート層(レイヤー3)の役割
トランスポート層は、データのやり取りを問題なく送受信するための制御のプロトコルレイヤーです。このプロトコルの代表的なものには、TCPとUDPがあって、通信プログラムがデータのやり取りを始めてから終わるまでの一連の流れを行うための、仮想的な通路を作ります。
この時、どのルート(仮想的な通路)で扱うデータなのかの区別のため、それぞれの通信プログラムにポート番号(識別子)を付加します。以上は、TCPとUDPの各々で行います。
TCPには、これに加えて、データを確実に届ける役割があります。データのやり取りの確実性を高めるため、データを受け取ったことを知らせる「確認応答」機能と、一定時間待っても確認応答がない時に、同じTCPセグメントを送る「再送」機能や、やりとりのデータ毎に「シーケンス番号」を付加して、送信側と受信側で、どのデータなのかを把握できるようにします。
TCPは、UDPよりも通信品質が良いため、使用される頻度は高いですが、データのやり取りには時間を要します。そのため、転送速度を重視する場合などには、UDPが使われています。
アプリケーション層(レイヤー4)の役割
アプリケーション層は、ユーザーに一番近いレイヤーで、ソフトウェアによるユーザーにネットワークサービスを提供します。
具体的な機能には、ファイル転送(FTPサービスやダウンロードサービス)、ウェブサービスの閲覧、メールの送受信、さらにセキュリティの確保などですが、これらのプロトコルに対応したソフトウェアを用意する必要があります。
ユーザーが作成したデータの場合は、アプリケーション層のプロトコルに従って整えた後に、下位のトランスポート層に渡します。つまり、アプリケーション層はユーザーとTCP/IPの間で受け渡しをするレイヤーです。
ポイントのまとめ
実践的なプロトコル群として開発されたTCP/IPについて、従来よりも、少しだけ深い内容を紹介してきました。
TCP/IPのネットワークで実際にデータのやり取り(処理)をしているのは、ネットワークサービス用のソフトウェア(ブラウザやメールソフト)と、OSの一部として組み込まれているTCP/IPのプロトコルスタックが行っています。
なお、プロトコルスタックとは、コンピュータ上で、通信を実現するために、各レイヤーのプロトコルで決めているデータ処理を実際に行うためのプログラム群のことです。
TCP/IPのネットワークでは、レイヤー1〜3はプロトコルスタックが処理します。レイヤー4のアプリケーション層は、ネットワークサービスを提供するソフトウェアが行います。