Chapter 10 -- TCP(Transmission Control Protocol)

Prev Chapter 9 -- ICMP(internet control message protocol)
INDEX

高信頼のトランスポート

 信頼性はトランスポートプロトコルの役割である。 TCP/IP suiteにおいて転送制御プロトコル(Transmission Conrol Protocol:TCP)は 高信頼トランスポートサービスを提供する。


TCPの提供するサービス

 TCPが提供するサービスには主に次の7つの特徴がある。


終端間(end-to-end)プロトコル

 TCPは、アプリケーションへのコネクションを提供するので、 end-to-end protocolと呼ばれる。 TCPで提供されるコネクションは、ソフトウェアによって実現されるので、 仮想コネクション(virtual connection)と呼ばれる。IPによって TCPのデータを運ぶが、IPはTCPのデータを読んだり、解釈したりすることはない。 つまり、TCPは終端の2点おいてのみ必要である。(ルータには必要ない)


パケット紛失と確認通知

 TCPは再送(retransmission)によって、パケット紛失(packet loss)に対応する。 TCPはデータを受信すると、確認通知メッセージ(acknowledgenment)を送信元に 返送する。送信者はデータ送信時にタイマを起動し、確認通知が返ってこなかった 場合は再送信する。


適応型再送

 TCPのタイムアウト時間は最初、固定値が使われたが、これはうまく動かないこと が分かった。そこで、TCPは適応型(adaptive)のタイムアウト時間を用いる。 TCPは応答を伴うメッセージを送信することによって、往復時間を計測し、 往復遅延時間(round-trip delay)を推定する。
 分散値を用いることで、パケットのバーストによって遅延時間が増大する場合に、 TCPが迅速に適応することを助けている。また、加重平均を用いることで、 一時的なバーストの後に遅延時間が小さく戻る時に、TCPが再送タイマを再セット することを助けている。
 当然、LANにおいてはタイムアウト時間は短く、長距離通信においてはタイムアウト時間は長い。


ウィンドウとフロー制御

 TCPデータ受信者は、データを受信すると、残りバッファ量を送信者へ 送り返す。このバッファサイズ通知をウィンドウ広告(window advertisement)という。 0のサイズを受け取った送信者は、データの送信を一時中断する。 そして、正のサイズを受信すると再び送信を開始する。

最大セグメントサイズ1000オクテットのTCPフロー制御


3方向ハンドシェーク

 TCPはコネクションの生成、終結時に3方向ハンドシェーク法(3-way handshake)を 使用している。

 3ハンドシェーク時に各終端は32ビット乱数の順序番号(sequence number)を発生する。 コンピュータのリブート時にはTCPは新しい乱数を選択する。 これにより各コネクションは一対の通信を可能とする。


輻輳制御 (congestion control)

 現代のインターネットワークにおいて、パケット紛失はハードウェアの 故障よりも、輻輳によって引き起こされることが多い。 輻輳によってデータ送信が失敗した場合は、データを再送信するため、 さらにネットワークの渋滞を大きくすることになりかねない(→輻輳破壊 congestion collapse)。
 この問題に対処するため、TCPは輻輳の測度としてパケット紛失を用い、 再送の時は一時的にデータ量を小さくして輻輳に対応する。 送信者は、受信したウィンドウサイズの半分に達するまで、データサイズを 指数関数的に大きくしていく。半分に達すると、増加率を減少させる。


TCPセグメントの形式

flagfield namedescription
000001URG urgent pointer(緊急ポインタ)が有効である。
000010ACK Acknowledgement Number(確認応答番号)が有効である。
000100PSH 転送強制機能。
001000RST コネクションのリセットを要求。
010000SYN sequence numberの同期を要求。
100000FIN 送信の終了を示す。

Prev Chapter 9 -- ICMP(internet control message protocol)
INDEX