自動再送要求(ARQ:Automatic Repeat reQuest)
フレーム誤りの検知の仕組みについて
コリジョンが発生するとフレームのデータが壊れるので受信側にて問題ないか検知する仕組みが必要となる。これをFCSでチェックするが、その結果フレームに誤りが見つかった場合、受信側は送信側に再送を要求することが必要になる。
フレームを受け取る受信側は、受信したフレームの中にあるFCSの値を見て、受信したフレームにデータ誤りが含まれているか否かを検査する。誤りが見つからなければそのままデータを受け入れ、データを受け入れた旨の通知を送信側に返す。誤りが発見されたときはそのデータを破棄し、送信側に対して同じデータフレームをもう一度送りなおすように要求するパケットを送る。これが自動再送要求(ARQ)
データを受け入れたことを示すパケットのことを
ACK(Acknowledgment)(肯定応答)
再送要求を、
NAK(NegativeAcknowledgment)(再送要求)という。
ARQには以下の三種類がある。
<Stop & Wait>
・1パケットごとに応答確認
・もっとも単純
・遅延が大きいと非常に遅い
⇒1パケットごとにACKとNAKを返し、送信者はACKかNAKが返ってきたら次のパケットを送信する。
<Go Back N>
・数個まとめて先送り
・誤りがあるとそこから送り直し
・受信側はバッファ不要
・送信側は先送り分のバッファが必要
⇒受信側の操作が簡単だが、送信側は先送りした分の再送が必要なためバッファメモリが必要となる
<Selective Repeat>
・数個まとめて先送り
・誤りがあるとそれだけ送り直し
・送受信両側にバッファが必要
・受信側は順序入れ替えが必要
⇒通信効率は高くなるが、受信側の順序入れ替えなどの動作が多少複雑となる。
イーサネットのフレームには順序番号を表す部分が無く、ARQを用いた高信頼化の機能はイーサネットには存在しない。
FCSのチェックだけは受信側で行い、フレーム内に誤りを発見するとそのフレームを破棄する機能は備わっている。
つまり、コネクション指向のプロトコルでシーケンス番号などの情報が必要となるため、トランスポート層(TCP)においてこれが行われる。
※間違った解釈をしている場合はご指摘いただければと思います。