双方向通信では、フレームを受信するたびに、受信側は待機し、制御フレーム (確認応答またはACK ) を送信側にすぐには返しません。受信側は、ネットワーク層が次のデータ パケットを渡すまで待機します。遅延された確認応答は、この送信データ フレームに添付されます。確認応答を一時的に遅延させて、次の送信データ フレームにフックできるようにするこの手法は、ピギーバックと呼ばれます。
動作原理
ピギーバック データは、 OSI モデルで使用されるスライディング ウィンドウ プロトコルとは少し異なります。データ フレーム自体に、確認応答 (ACK) 用の追加フィールドを 1 つ組み込みます。
パーティ A がパーティ B にデータを送信する場合は常に、PUSHで追加の ACK 情報も伝送されます。
たとえば、A が B から 5 バイトを受信し、シーケンス番号が 12340 から始まる (12344 まで) 場合、A は現在の PUSH パケットに「ACK 12345」も配置して、シーケンス番号 12344 までのバイトを受信したこと、次回は 12345 が表示されることを B に通知します。(ACK 番号は、相手側がプッシュするデータの次のシーケンス番号です。)
ピギーバックデータ転送には 3 つのルールが適用されます。
- ステーション A がデータと確認応答の両方を送信する場合、両方のフィールドをそこに保持します。
- ステーション A が確認応答を送信する場合、まずデータ フレームを送信する必要があるかどうかを確認するために短時間待機し、次に ACK フレームのみを送信するか、データ フレームを添付して送信するかを決定します。
- ステーション A がデータのみを送信する場合、前の確認応答フィールドがデータとともに送信されます。ステーション B は、受信時にこの重複した ACK フレームを無視します。
利点と欠点
利点:
- 効率を向上
- 使用コスト削減
- データ転送のレイテンシを改善
- 利用可能なチャネル帯域幅をより有効に活用する。[1]
デメリット: 受信側は送信するものがない場合、サービスを妨害する可能性があります。これは、データ フレームの受信時にカウンター (受信側タイムアウト) を有効にすることで解決できます。カウントが終了し、送信するデータ フレームがない場合、受信側は ACK 制御フレームを送信します。送信側もカウンター (送信側タイムアウト) を追加します。確認を受信せずにカウンターが終了した場合、送信側はパケット損失を想定し、フレームを再送信します。ピギーバックにより、個別の確認応答では発生しない複雑さが生じます。データ リンク層は、確認応答をピギーバックするパケットをどのくらい待機する必要がありますか。データ リンク層が送信側のタイムアウト期間よりも長く待機すると、フレームが再送信され、確認応答を持つことの目的全体が無効になります。
参考文献
- ^ Tanenbaum, Andrew & Wetherall, David. Computer Networks, 5th Edition, Pearson Education Limited, , 2014, p 226.
