Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

ARQ(アーキュー)とは | 意味や読み方など丁寧でわかりやすい用語解説

ARQ(アーキュー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

自動再送要求 (ジドウサイソウヨウキュウ)

英語表記

ARQ (エーアールキュー)

用語解説

ARQ(Automatic Repeat reQuest)とは、データ通信において、データの信頼性を確保するためのエラー制御プロトコルの一つである。データは物理的な伝送路を介して送られるため、途中でノイズや干渉によって内容が破損したり、パケット自体が失われたりすることがある。ARQは、このような通信路の不確実性に対応し、送信側が送ったデータが受信側で確実に正しく受け取られることを保証する仕組みである。その基本的な考え方は、送信側がデータを送った後、受信側からの確認応答(Acknowledgement, ACK)を待つという点にある。もし受信側からデータが正しく届いたことを示すACKが返ってこない場合、あるいはデータにエラーがあったことを示す否定応答(Negative Acknowledgement, NACK)が返ってきた場合、送信側は自動的にそのデータを再送する。これにより、通信路の品質が悪くても、最終的に正確なデータを受信側に届けることが可能となる。この「自動的に再送を要求する」という一連の動作が、その名の由来である。

ARQが果たす役割は極めて重要である。もしデータに少しでも誤りがあれば、ウェブページは表示されず、ファイルは破損し、オンライン会議は途切れてしまうだろう。ARQはこのような事態を防ぎ、アプリケーション層に信頼できるデータ転送サービスを提供することで、円滑なデジタルコミュニケーションを実現している。ARQは主にデータリンク層やトランスポート層で実装されることが多く、例えばTCP(Transmission Control Protocol)はこのARQの原理を高度に実装したプロトコルの一つである。

ARQには、主に三つの基本的な方式がある。それぞれ異なる効率と複雑性を持つ。

一つ目は「Stop-and-Wait ARQ(停止再送方式)」である。この方式はARQの中でも最もシンプルである。送信側は一つのデータフレームを送信すると、受信側からのACKが返ってくるまで、次のフレームの送信を停止して待機する。ACKが受信されれば、次のフレームを送信する。もし一定時間内にACKが返ってこない場合(タイムアウト)、送信側は前のフレームが失われたか、ACKが失われたと判断し、同じフレームを再送する。この方式の利点は、その単純さにある。しかし、送信側は一つのフレームを送るたびに受信側からの応答を待つため、ネットワークの遅延が大きい場合、通信路の帯域を十分に活用できず、データ転送効率(スループット)が非常に低くなるという欠点がある。

二つ目は「Go-Back-N ARQ(後退N方式)」である。Stop-and-Wait ARQの効率の悪さを改善するために考案された。Go-Back-N ARQでは、送信側は複数のデータフレームを連続して送信することができる。送信できるフレームの最大数(送信ウィンドウサイズ)が決まっており、送信側はこのウィンドウ内にあるフレームについては、ACKを待たずに次々と送信していく。各フレームにはシーケンス番号が付与されており、受信側はこれによってフレームの順序を管理する。もし受信側でエラーのあるフレームを検出した場合や、期待するシーケンス番号のフレームが届かなかった場合、受信側はエラーを通知するNACKを送信するか、あるいは単純に期待する次のシーケンス番号のACKを送信しない。送信側がNACKを受け取った場合、または一定時間内にACKが届かない場合、送信側はエラーが検出されたフレーム以降のすべてのフレームを再送する。この方式は、Stop-and-Wait ARQよりもスループットが高いという利点があるが、エラー発生時には、実際には正しく届いているフレームも再送してしまうため、無駄な再送が発生する可能性があるという欠点がある。

三つ目は「Selective Repeat ARQ(選択再送方式)」である。Go-Back-N ARQの無駄な再送をさらに改善するために開発された。Selective Repeat ARQもGo-Back-N ARQと同様に、送信側は複数のデータフレームを連続して送信する。しかし、エラーが発生した場合の再送処理が大きく異なる。Selective Repeat ARQでは、エラーが検出されたフレーム、または失われたフレームのみを再送する。受信側は、エラーのあるフレームは破棄するものの、それ以降に正しく届いたフレームは一時的にバッファリングしておく。そして、再送されてきたエラーフレームが正常に受信され、全てのフレームのシーケンス番号が揃った時点で、バッファリングしていたフレームを含めて上位層に順序よく渡す。この方式の最大の利点は、再送されるデータ量が最小限に抑えられるため、Go-Back-N ARQよりもさらに高いスループットを実現できる点である。しかし、欠点としては、受信側でフレームを一時的に保存するためのバッファが必要となり、プロトコルの実装が最も複雑になる点が挙げられる。

これらのARQ方式は、シーケンス番号、タイマー、送信ウィンドウ、受信ウィンドウといった共通の要素を利用して動作する。シーケンス番号は各データフレームに一意に割り当てられ、フレームの順序や重複を検出するために使われる。タイマーは、送信したフレームのACKが期待される時間内に届かなかった場合にタイムアウトを発生させ、再送をトリガーする。送信ウィンドウと受信ウィンドウは、それぞれ送信側と受信側が、ACKを待たずに送受信できるフレームの範囲を示すもので、Go-Back-N ARQやSelective Repeat ARQの効率を高める重要な要素である。

ARQは、現代のネットワーク通信の基盤を支える技術であり、ファイル転送やWebブラウジングなど、信頼性が必要なあらゆるデータ通信において不可欠な役割を果たしている。通信路の品質が完璧ではない現実世界において、ARQはデータを確実に目的地へ届けるための番人として機能し、ユーザーが意識することなくスムーズなデジタル体験を享受できるよう貢献している。

関連コンテンツ