トランスポートプロトコル
はじめに
この記事は下記の参考資料を元にした筆者の解釈の記述です。
正確さについては保証されませんので詳しくは下記の参考元をご参照ください。
トランスポートプロトコル
TCP/IPではTCP
とUDP
の二つのトランスポートプロトコルが用意されている。
トランスポートプロトコルはトランスポートモジュールにおけるプロトコルである。
トランスポートモジュールはその上のアプリケーションプログラムと下のインターネットモジュールの間に位置する。 OSI参照モデルにおけるトランスポート層に相当する。
トランスポートモジュールはホストに必要だが、ルータには必要ない。
役割
アプリケーションプログラムにデータを渡す役割をもつ。 アプリケーションはTCP
とUDP
のどちらを使用するかを選択することができる。
トランスポートプロトコルには大きく下記のような働きが期待されている。
- インターネットモジュールから受け取ったパケットを識別する。
- ホスト内の目的のアプリケーションプログラムにデータを提供する。
- アプリケーションプログラムが扱いやすい形でデータを提供する。
クライアントのアプリケーションからサーバのアプリケーションへのデータ受け渡し
インターネットモジュールから受け取ったパケットを識別する。
ホスト内の目的のアプリケーションプログラムにデータを提供する。
通信は正確にはホストの間で行われるのではなくプロセスやスレッドの間で行われる。
IPアドレスではホストの識別はできるが、プロセスやスレッドの識別はできない。 プロセスやスレッドの識別にはポート番号を使用する。
サーバに到達してIPから受け取ったパケットはクライアントアプリケーションプログラムからのリクエストを細かく分割したものである。 同一の通信であることを確認するために始点IPアドレス・始点ポート番号が必要になる。
ホストとなるコンピュータでは通常複数のプロセス(プログラム)が動いているこれらのうちどのサーバのプログラムにデータを渡すかを識別するためにポート番号が使用されている。
クライアント/サーバモデル
TCP/IPではクライアント/サーバモデルの通信を行うことができる。
このモデルでは常にクライアント起点で通信が行われる。 サーバは自発的にサービスを行うことはなく、おりクライアントからの要求に応じるのみである。
不特定多数のホストにサービスを提供するのに向いている。
ポート番号
16ビットの数値。トランスポートプロトコルに置いてアプリケーションを識別するための番号。
サーバのプログラムは使用するポート番号を開いてクライアントからの通信を待っている。
サーバで広く使われるポート番号は予め決められており、これをウェルノウンポートと呼ぶ。
httpサーバなら80番。sshなら22番などである。
TCPとUDPの違い
TCPとUDPにはデータの扱いについてそれぞれ長所と短所がある。
アプリケーションの開発者はそれぞれの特徴を踏まえてアプリケーションにとって最適なプロトコルを選択することができる。