TCP の再送制御のRFCについて
こんにちは、 @kz_morita です。
ラムダノートの Vol.1, No.1 をみて TCP の再送制御を見てとてもおもしろかったので,将来の自分用にRFCのリンクをまとめておきます.
n月刊ラムダノート Vol.1, No.1(2019) TCP の再送制御の課題 トランスポート層のTCPのミッションは,通信相手にパケットを届けることだが,インターネットの経路にてパケットが失われてしまうことが多々あり,そのパケットの喪失を検出する必要があります. パケットの無事に届いたことを確認するためには,パケットの受信者からの確認応答を受け取ることで実現できるので,一定時間経っても確認応答が帰ってこないパケットを喪失したとみなすことができ,再送することができます.
この「一定時間」を 再送タイムアウト時間 といい, いかに効率の良い再送タイムアウト時間を設定するかというのが,TCPの再送制御の課題なのかなと思います.
再送タイムアウト時間が短ければ,パケットの喪失を見逃す機会は減りますが,不要な再送が増えネットワーク上に無駄なパケットが大量に流れてしまうことになります.逆に再送タイムアウトがながければパケットの喪失を検知出来ない可能性があります.
書籍の中で,RFCがいくつか紹介されていたので,ざっと目を通しつつまとめておきます.
RFC RFC 7323 - TCP Extensions for High Performance RFC 7323 RFC 7323 (日本語訳版) 3. TCP TImestamps Option の内容が書籍内でも記載されていました.
TCP ヘッダの拡張オプションのタイムスタンプオプションを利用して,RTT (ラウンドトリップタイム) つまりパケットを送信してから確認応答が帰ってくるまでの時間を計測する内容についてです.
RFC 6298 - Computing TCP’s Retransmission Timer RFC 6298 RFC 6298 (日本語訳版) 計測した,RTT値から再送タイムアウト値を計算する方法について書かれています.