TCPのふくそう制御
TCPはふくそうを防ぐための機能として、前述の倍数減少とスロースタートという2つの機能を使っている。TCP/IPでは、ネットワークの混雑状況を直接知る方法が用意されていないため、パケットの紛失(戻ってきた確認応答番号で判断)や再送タイムアウトの発生によって混雑状況をチェックしている。フロー制御と異なるのは、ウィンドウ制御を送信側ホストで行なうという点だ。
送信側ホストのTCPはセグメントの紛失を感知すると、ふくそうが発生したものと推測し、そのコネクションのウィンドウサイズを半分に減らす。この動作を倍数減少と呼び、データの送信量を急激に減らすとともに、ネットワークの途中に滞留しているセグメントを処理するための時間を作る。そして、ウィンドウサイズの増分を1セグメント分にして適切なウィンドウサイズを探る。この操作はふくそう回避といわれる。
一方、セグメントの紛失が続いて確認応答が届かず、再送タイムアウトが発生した場合には、ウィンドウサイズを最小の1セグメント分まで制限し、再送タイマの待ち時間を倍にした上で再送処理を続行する。
ふくそうが解消したあと、および新しく確立されたコネクションでデータ転送を行なうときには、送信ホストのTCPは最小の1セグメント分のウィンドウサイズから始めて、確認応答が到着するたびに、倍々にウィンドウサイズを増やしていく。これをスロースタートと呼ぶ。その後ウィンドウサイズが、前回再送タイムアウトが発生した時点の半分に達したら、ウィンドウサイズの増分を1セグメント分に戻すふくそう回避に入る。
TCPはスロースタートにより、ふくそう状態とデータ転送が極端に絞り込まれた状態との間を揺れ動く不安定な通信に陥ることなく、安定したサービスを上位プロトコルに提供する。
また、再送タイムアウトが何度も繰り返される場合はタイマを倍々にするが、ある値まで大きくなったら回線障害と判断して、コネクションを強制的に終了させる。
この連載の記事
-
第8回
ネットワーク
HTTP、FTP、SMTP、SIPはどう動くの? -
第6回
ネットワーク
TCPのコネクションとはなんですか? -
第5回
ネットワーク
TCPのキモはコネクションとポート番号 -
第4回
ネットワーク
ルータの向こうに広がるネットワーク -
第3回
ネットワーク
特別なIPアドレスって知っていますか? -
第2回
ネットワーク
TCP/IPはどのように普及していったの? -
第1回
ネットワーク
TCP/IPの基礎の基礎を理解していますか? -
ネットワーク
TCP/IPまるわかり - この連載の一覧へ