TCPの信頼性〜再送時間(RTO)と再送回数、チェックサム〜

TCP の信頼性は、以下の記事の通り、シーケンス番号(Seq#)と応答確認番号(Ack#) で実装されます。

関連記事

TCP の通信データ単位は"セグメント"と呼ぶことが多く、ここでもそれに倣うことにします。 以下に TCP セグメントのフォーマットを示します。TCP は IPv4 の上位レイヤーとして使う場合、IPv4 のプロトコルフィールドに O[…]

データが欠けている場合、再送をしますが、再送タイマのタイムアウト時間 (RTO) は前述の RTT 値を元に計算されます。

RTT 値は、データを送ってから ACK が戻ってくるまでの時間のことで、Window サイズ毎に 1 パケットだけサンプリングされます。

さらにこの RTT 値は Smooth RTT (SRTT) 値の計算に用いられます。SRTT 値の計算式は以下の通りです。

SRTT(new) = α * SRTT(old) + (1-α) * RTT

α は 0.9 が推奨されています。

また、RTO は以下の式が利用されています。

RTO = SRTT + 4 * (平均偏差)

なお、Windows では TCP コネクション時の初期値として RTO = 3秒 がセットされ、以降は上記サンプリングが完了したタイミングで RTO 値が更新されます。

また、Windows では TCP 再送回数はレジストリにより 5 回となっています。変更したい場合は以下のように「TcpMaxDataRetransmissions」レジストリを修正します。

  1. Windowsキー+R
  2. regedit [Enter]
  3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters と辿る
  4. 右ペインで右クリックし、「新規」⇒「DWORD」で左クリック
  5. 名前を「TcpMaxDataRetransmissions」に設定する
  6. 再送回数を10回にしたい場合は16進数ならa、10進数なら10でセットする
  7. 下記のようになったら再起動

チェックサム

データが欠けるパターンとして、データが送られてこない、というパターンと、送られてきたデータが誤っている、というパターンがあります。送られてきたデータの誤りを検出する仕組みがチェックサムです。

チェックサムの計算方法は、以下の擬似 IP ヘッダフォーマットを利用します。

チェックサムの対象は擬似 IP ヘッダと TCP ヘッダ (ただしチェックサムのフィールドを 0 に置き換える)、TCP データの 3 つです。 これらを 16 bit 単位に分割し、各々で "1 の補数" を計算し、それらを合計します。さらにその合計値の "1 の補数" を取ることで、 チェックサムに入る 16 bit が決まります。

TCP であるにもかかわらず、レイヤーの低い IP ヘッダも一部ではありますがチェックしていることに注目して下さい。

IPv4 では、IP ヘッダ自身のチェックサムも行なっており、IP の上に TCP が使われる場合は IP ヘッダを重複してチェックをかけていることになります。

IPv6においては、TCP と一緒に使われる機会が多いことと、通信技術の向上により誤り率が低くなったことから、IPv6 ヘッダのチェックサムは無くなりました。その代わり、TCP 等のように、上位レイヤーでこれを実施することが望まれます。

nesukeの推薦図書

以下に該当する人なら熟読することを強く推奨します。

  • 周りのネットワークエンジニアよりも一歩抜き出た存在となり、価値を高めたい!
  • サーバエンジニアだけどネットワークも含めた総合的なセキュリティへの理解も深めていきたい!
本書は、ベストセラーの『マスタリングTCP/IP 入門編』を時代の変化に即したトピックを加え、内容を刷新した第6版として発行するものです。豊富な脚注と図版・イラストを用いたわかりやすい解説により、TCP/IPの基本をしっかりと学ぶことができます。プロトコル、インターネット、ネットワークについての理解を深める最初の一歩として活用ください。
本書は、日々更新されていくネットワークセキュリティ技術にキャッチアップしていくために必要となる基礎を体系的に網羅した「マスタリングTCP/IP シリーズ」の一冊です。基本的な暗号技術、それらのセキュリティプロトコルへの応用、認証技術、Web アプリケーションへの多様化する攻撃手法の理解と対策などを扱っています。
ブラウザにURLを入力してからWebページが表示されるまでの道筋をたどりながら、その裏側で働くTCP/IP、LAN、光ファイバなどの技術を説明していきます。インターネットを通ってサーバーまで行って帰ってくる道筋の途中には、今のネットワークの主要な技術要素が全部あります。そこでの機器やソフトウエアがどのように動き連携しているのかを探検すればネットワーク全体の動きがわかります。

IT/インフラエンジニアの地位とスキル向上のために

関連記事

IT 技術の進化はとどまることを知りません。矢継ぎ早に新たな技術が出てきたり、数年前の技術が時代遅れになったりと、IT エンジニアは勉強し続ける運命のようです。 それをどう思うかはあなた次第。 ビジネスの基本は『付加価値を与える[…]

IMG
関連記事

nesuke の考える NW エンジニアの2つの道 ネットワークエンジニアには 2 つの道があります。 1 つはネットワーク構築一筋で、L4 までをひたすらきっちりと構築していく道。 もう 1 つはネットワークを軸として深堀し[…]

IMG