• 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を再び返す。