TCP は信頼性のある順序付きバイトストリーム転送です。各バイトを 32 ビットのシーケンス番号で識別し、これらの番号の算術は 2^32 を法として行われます。
3 ウェイハンドシェイク #
接続を開始するため、クライアントは初期シーケンス番号 x を付けた SYN を送信します。
サーバーは SYN+ACK で応答し、自身の初期シーケンス番号 y を選び、x + 1 を確認応答します。
クライアントは y + 1 を確認する ACK を送信します。SYN はアプリケーションデータを含まないにもかかわらず、
シーケンス番号を 1 つ消費します。
データ転送と切断 #
各 ACK は次に期待するシーケンス番号を示すため、それより前のすべてのバイトを累積的に確認します。 TCP は確認されていないデータを再送し、受信側が通知するウィンドウによって送信量を調整し、 輻輳制御によってネットワークの過負荷を防ぎます。正常な切断では各方向に FIN セグメントを使用します。 リセット(RST)は通常の順序立った終了処理を行わずに接続を中断します。
コメント
GitHub で閲覧・コメントする(投稿にはログインが必要です)