- build reliable data-transport layers on top of unreliable lower layers.
- retransmit-on-timeout policy
- パケットが送信され、タイムアウト前に確認応答がない場合、パケットは再送信される。
- 一方の側が retransmit-on-timeout を実装するプロトコルは、ARQ(Automatic Repeat reQuest, 自動再送要求)プロトコルとして知られている。
- stop-and-wait version of retransmit-on-timeout
- 送信者は1度に1つのパケットしか送らない
- もしレスポンスがなければ、パケットは再送されるが、送信者は ACK を受け取らない限り、 次のパケットを送らない。
- 実際にパケットロスが生じていなくても、再送されることがある。
- データ転送が遅くなってしまった場合、送信者はACKを受け取れなかったと認識して再度同じデータを送ることがある。 送信者がACKを受け取ったら、次のパケット送信をスタートする。
- ネットワークがサポートできる限りの多くのパケットを転送中に保持する必要がある。このための戦略は、スライディングウィンドウとして知られる。
- エンドツーエンド原則
- 下の層に信頼性を構築することにより、信頼性の高いトランスポート層を達成しようとすると大変になる。
- 接続のエンドポイントに信頼性を実装するのが、正しい方針。
- パケットロス
- retransmit-on-duplicate
- 送信者がデータを送り、受信者がACKを返したが、送信者に届かなかった場合: 送信者は再度同じデータを送り、受信者はその同じデータに対して、ACKを再び返す。