ACK番号 【確認応答番号】 acknowledgment number
TCP(Transmission Control Protocol)はIP(Internet Protocol)と併用されるトランスポート層のプロトコルで、受信確認や再送制御などを行い信頼性の高い通信を行うことができる。Webコンテンツを伝送するHTTPのメッセージ送受信などに使われる。
TCPではHTTPなどのアプリケーション層のプロトコルから受け取ったメッセージを一定のサイズの「セグメント」に区切ってそれぞれ送信し、受信側で送信順に連結して元の状態に組み立て直す操作を行う。送信側は各セグメントがデータ全体のどの部分なのかを表す「シーケンス番号」を付与して送信する。
受信側は受け取ったセグメントのシーケンス番号に受信したデータのバイト数を加算して、ACK番号として送信側に受領確認のパケットを返信する。送信側は返信されたACK番号を次のセグメントのシーケンス番号として送信する。データ全体を送り終えるまでこのやり取りを繰り返す。
再送制御
初期のTCP実装ではセグメントを一つ送るごとに受領確認を受け取る方式だったため、途中でセグメントが欠落して届かなかった場合、送信側は一定時間(RTO:Retransmission Time Out)待っても受領確認が届かない場合に伝送に失敗したとみなして同じセグメントを再送する。
現在は伝送を効率化するためセグメントを次々に送り出す方式が採用されている。この場合、受信側ではセグメントが到着する度に正しく受領できたバイト数までのACK番号を送り返す。送信側に3回続けて同じACK番号が返送されてきた場合には、その手前に送ったセグメントが届いていないとみなして再送する。
(2023.11.10更新)