TCP はどのように機能しますか?
アドレス解決:
- クライアント アプリケーションが別のアプリケーションにデータを送信する場合、最初のステップとして宛先サーバーの IP アドレスを取得します。これは、アドレス解決プロトコル (ARP) を通じて実現されます。
TCP 接続の確立 (スリーウェイ ハンドシェイク):
- 接続の確立中、TCP は 3 ウェイ ハンドシェイク プロセスに従います。
1. クライアントは SYN (同期) パケットをサーバーに送信します。このパケットには、クライアントがデータ セグメントに使用する最初のシーケンス番号が含まれています。
2. サーバーは SYN-ACK (同期確認) パケットで応答します。これにはクライアントの SYN が確認され、サーバーの初期シーケンス番号も含まれます。
3. クライアントは、ACK (確認応答) パケットを送信することで、サーバーの応答を確認します。
データの送信と確認:
- TCP 接続が確立されると、クライアントとサーバーはデータの交換を開始できます。
- TCP は、データを適切なサイズのセグメントに分割し、各セグメントにシーケンス番号を割り当てることにより、信頼性の高いデータ送信を保証します。
- 受信側は、受信したデータ セグメントごとに確認応答 (ACK) パケットを送信側に送り返します。送信側は未確認データのバッファを保持し、すべてのセグメントが確認されるまでさらにセグメントを送信し続けます。
- 指定されたタイムアウト期間内に確認応答が受信されない場合、送信者はセグメントを再送信します。このメカニズムは、データの信頼性の高い配信を保証するのに役立ちます。
フロー制御 (スライディング ウィンドウ プロトコル):
- 送信者が受信者を圧倒することを防ぐために、TCP はフロー制御と呼ばれるメカニズムを採用しています。
- スライディング ウィンドウ プロトコルを使用し、一度に確認応答できないデータの最大量を定義します。これにより、受信側でのバッファ オーバーフローが防止されます。
渋滞制御 (スロースタートと渋滞回避):
- TCP は、利用可能なネットワーク リソースに基づいて送信速度を調整する輻輳制御メカニズムを実装します。
1. スロー スタート:これにより、送信者がネットワークに突然輻輳を引き起こすのを防ぎます。最初は少量のデータを送信し、確認応答が受信される限り徐々に送信速度を上げます。
2. 輻輳回避:送信側がネットワークの容量に達すると、輻輳回避フェーズに入ります。このフェーズでは、ネットワークの過負荷を避けるために、送信速度の増加が制御されます。
接続の終了 (4 ウェイ ハンドシェイク):
- データの交換が完了すると、TCP 接続は 4 ウェイ ハンドシェイク プロセスを通じて終了します。
1. クライアントは FIN (終了) パケットをサーバーに送信します。
2. サーバーは FIN を確認し、FIN-ACK パケットで送信するデータがまだあることを示します。
3. クライアントは、ACK パケットでサーバーの FIN-ACK を確認します。
4. サーバーは最終 ACK をクライアントに送信し、両端が接続を閉じます。
TCP は、接続全体を通じて、データ セグメント、確認応答、フロー制御、輻輳制御を管理することにより、クライアントとサーバー間の信頼性の高い制御された通信を保証します。これにより、アプリケーションはネットワーク上で効率的かつ確実にデータを交換できるようになります。