更新日:01/12/02 23:04:48

インターネットでトランスポート層のプロトコルといえば,TCP(Transmission Control Protocol),またはUDP( User Datagram Protocol)です.これらは,いずれもアプリケーションの規定しに従って,IP層以下の下位層のサービスを受けながら,相互に離れた場所にあるホストのプロセス間でのデータ伝送を行うプロトコルです.
これらのうち,TCPは,送受信ホストのプロセス間に信頼性のあるコネクションを形成します.コネクションを形成するといっても,IPによる論理的コネクションですから,こういうタイプのそれをバーチャルコネクションと言います.TCPは送受信ホスト間にコネクションを確立した上で一連のデータがIP層やアプリケーション層でフラグメントされていようとも一つのものとして時間的に連続的に処理します.それゆえこういうタイプの処理をストリーム型といいます.
これに対し,UDPはデータをアプリケーション間に送受信するだけのコネクションレス通信で,信頼性はアプリケーションに委ねます.それだけ能率がよいのですが,TCPに比べて信頼性では劣ります.そして,送受信ホスト間で送受されるデータはそれだけが一つのものとして処理されますから,こういうタイプの処理をデータグラム型といいます.Voice over IPや動画映像のような多少信頼に欠けても時間的な流れが重要な通信ではUDPが用いられます.(音声や映像は多少の欠落があっても,人間の目や耳はそれを補正してくれます.)

![]()
1. ポート番号
3. TCPセグメントの構造
5. 輻輳制御

図1.1 TCP/UDPインターフェース

図2.1 UDPデータグラム

図3.1 TCPセグメントフォーマット

図3.2 フラッグコードビット
1.応答確認
2.再送
3.コネクション管理
4.ウィンドウ制御
5.チェックサム
6.フロー制御
以上でコネクションの確立が終了しました.このように合計3回のやり取りによってコネクション確立手順を取りますが,これを三方向シェイクハンド(Three Way Handshake)と言います.

図4.2.1 コネクション確立手順

図4.3.1 正常な通信の場合

図4.4.2 Window制御

図5.4.1 コネクションの開放

図5.5.1 TCPの流れ
上の図では,D,E,Fのパケットは無事に着いていたのに,再度Cのパケットに戻って再送信しているように描かれています.これでは折角の成果が無駄になります.そこで誤ったパケットCだけを再送して,D,E,Fは受信ホストのバッファーに格納しておいて,全パケットの送信が終えたところでアプリケーションに渡すようなシステムも使われています.
しかし,いずれにしてもTCPはストリーム型通信ですから,全パケットが受信されてはじめてアプリケーションに転送されるという仕組みは同じです.TCPが信頼性を担保しているのはこの仕組みによるのです.
上の例は,パケットエラーはあったがたまたまのエラーであった場合です.そうではなくてネットワークが遮断したり,Node2のサーバーがクラッシュして動作不能に陥ったような致命的な事故の場合を考えてみましょう.インターネットでは常に存在するケースです.
このような場合には,Node2は何時まで待っていてもACKが帰ってくることはありません.そのような場合には,下の図のように最後のACKが届いた時刻から時計を動かして一定の時間以上経過した時点で送信を中止します.この時間をタイムアウト時間(Retransmission Time Out)RTOといいます.

図5.2.1再送タイムアウト時間