8月27日(木)1コマ目

 今日、やったこと

  • TCPのシーケンス番号初期値
  • TCPのフロー制御


今日のホワイトボード

キャプチャパケットの解析

解析するパケットは以下。

図 パケット①、パケット②

図 パケット③、パケット④

図 パケット⑤、パケット⑥

図 パケット⑦、パケット⑧

図 パケット⑨、パケット⑩

図 パケット⑪、パケット⑫

図 パケット⑬、パケット⑭

図 パケット⑮、パケット⑯


パケットの解析をすると

コネクション確立要求のシーケンス番号が0ではない

パケット①、②でそれぞれコネクション確立要求(SYN=1)を送信しています。

以前解析したときは、これらのパケットのシーケンス番号は0でした。

が、今回のパケットは

 パケット①(172.16.4.253=>172.16.8.11)シーケンス番号:70668

 パケット②(172.16.8.11=>172.16.4.253)シーケンス番号:92019

とともに0ではありません。

そもそもシーケンス番号は0でスタートせずに、乱数で生成された値を0相当として使います

よって、コネクション確立要求のパケットで送信するシーケンス番号が0相当の値になります。

 172.16.4.253のシーケンス番号0相当の値:70668(パケット①より)

 172.16.8.11のシーケンス番号0相当の値:92019(パケット②より)


そのあとに送信されるパケットのシーケンス番号も

 172.16.4.253発なら、①のシーケンス番号(70668)を引いた値

 172.16.8.11発なら、②のシーケンス番号(92019)を引いた値

が何バイト目かを表します。

図 シーケンス番号初期値(0相当に値)


受信応答なしで連続してデータ送信している

パケット④、⑤ともに172.16.4.253=>172.16.8.11のデータ送信パケットです。

パケット④でMSS(最大受信セグメント長:1460バイト)まで、パケット⑤で残りを送信しています。

本来ならパケット④を送信後、受信応答をもらって、パケット⑤を送信ですが、なぜか受信応答を待たずに連続してデータを送信しています。

実は、データを受信すると、バッファと呼ばれるメモリ上のエリアに一時的に保存し、順に処理を行います。(受信、即処理ではない)

このバッファがオーバーフローするまでは、受信応答を待たずに送信できるはずです。

そこで、空きバッファサイズをTCPヘッダのウィンドウサイズで相手に通知しています。相手は直近に受信したウィンドウサイズ未満なら、受信応答を待たずに連続してデータ送信を行います。

図 バッファサイズ未満なら受信応答を待たずに送信


次回は

テストをやります。




コメント

このブログの人気の投稿

6月25日(木)1コマ目(A班)、2コマ目(B班)

5月29日(金)2コマ目(B班)、3コマ目(A班)

9月3日(木)1コマ目