確認応答番号(カクニンオウトウバンゴウ)とは | 意味や読み方など丁寧でわかりやすい用語解説

確認応答番号(カクニンオウトウバンゴウ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

確認応答番号 (カクニンオウトウバンゴウ)

英語表記

acknowledgement number (アクノレッジメントナンバー)

用語解説

確認応答番号(かくにんおうとうばんごう)とは、TCPプロトコルにおいて、データの受信側が送信側に対して、正常にデータを受信したことを知らせるために用いる番号のことである。ACK番号(ACK number)とも呼ばれる。

TCPは、インターネット上で信頼性の高いデータ通信を実現するためのプロトコルであり、データの損失や順序の入れ替わりを防ぐための様々な仕組みを備えている。その中でも、確認応答(acknowledgment)は、データが確実に相手に届いたことを保証するための重要なメカニズムの一つである。

TCP通信では、データを小さな単位であるセグメントに分割して送受信する。送信側はセグメントを送信した後、受信側からの確認応答を待つ。受信側がセグメントを正常に受信すると、確認応答セグメント(ACKセグメント)を送信側に送り返す。このACKセグメントに含まれるのが確認応答番号である。

確認応答番号は、受信側が次に受信したいシーケンス番号を示す。シーケンス番号とは、TCPセグメントに付与される連番であり、送信側がデータを分割して送信する際に、各セグメントに一意の番号を割り当てることで、受信側はデータの順序を正しく復元できる。

例えば、送信側がシーケンス番号100から200までの100バイトのデータを送信したとする。受信側がこのデータを正常に受信した場合、受信側は確認応答番号として201を設定したACKセグメントを送信側に送り返す。これは、受信側が次にシーケンス番号201からのデータを受信したいということを意味する。

送信側は、受信側からACKセグメントを受信すると、その確認応答番号を確認し、正常にデータが受信されたことを確認する。もしACKセグメントが一定時間内に受信されない場合、送信側は該当のセグメントを再送する。この再送メカニズムによって、ネットワークの混雑や障害によってセグメントが失われた場合でも、データが確実に相手に届くことが保証される。

確認応答番号は、累積確認応答(cumulative acknowledgment)と呼ばれる方式で用いられる。これは、受信側が正常に受信した最後のセグメントまでの全てのセグメントについて、まとめて確認応答を送る方式である。例えば、受信側がシーケンス番号100から300までのデータを連続して受信した場合、確認応答番号として301を設定したACKセグメントを一度だけ送信する。これにより、複数のセグメントに対する個別のACKセグメントを送信する手間を省き、ネットワークの負荷を軽減することができる。

ただし、累積確認応答の場合、セグメントの一部が失われた場合、送信側はどのセグメントが失われたのかを正確に特定することが難しいという問題がある。この問題を解決するために、選択的確認応答(Selective Acknowledgment, SACK)と呼ばれる拡張機能が用いられることがある。SACKは、ACKセグメントの中で、正常に受信したセグメントの範囲を複数指定することができる。これにより、送信側は失われたセグメントのみを再送することができ、効率的なデータ転送が可能になる。

確認応答番号は、TCPヘッダの32ビットのフィールドに格納される。TCPヘッダには、送信元ポート番号、宛先ポート番号、シーケンス番号、確認応答番号、制御フラグなど、TCP通信に必要な様々な情報が含まれている。これらの情報に基づいて、TCPプロトコルはデータの確実な送受信、順序の制御、輻輳制御など、様々な機能を実現している。

確認応答番号は、TCP通信の信頼性を支える重要な要素であり、ネットワークエンジニアやシステムエンジニアがTCPプロトコルを理解する上で欠かせない概念である。パケットキャプチャツールなどを用いて、実際にTCPセグメントを解析することで、確認応答番号の働きをより深く理解することができる。