7月10日(水)1コマ目

今日、やったこと

パケットからTCPの処理のながれを確認 その2

今日のホワイトボード

パケットからTCPの処理のながれを確認 その2

前回配布したTCPパケットキャプチャ結果を使って、パケットのやり取りを特にTCPに注目して確認。

コネクション確立

①172.164.253->172.16.8.11 コネクション確立1

シーケンス番号が0でない点に注目。

シーケンス番号は0でスタートしません。乱数生成した値を使います。

172.16.4.253のシーケンス番号0相当の値は70668です。


②172.16.8.11->172.16.4.253 コネクション確立2

こちらもシーケンス番号が0でない点に注目。

172.16.8.11のシーケンス番号0相当の値は92019です。


③172.16.4.253->172.16.8.11 コネクション確立3

ここまでがコネクション確立です。

 

図 ①~③ コネクション確立

データ連続送信

④172.16.4.253->172.16.8.11 データ送信

1460バイトのデータ(1バイト目~1460バイト目)を送信。

①、②のコネクション確立でMSSを通知し、1460より大きなデータは1460バイトに分割して送信することになりました。

シーケンス番号70669から送信元のシーケンス番号初期値を引くと1。1バイト目のデータです。1バイト目から1460バイト目までの1460バイトのデータを送信。


⑤172.16.4.253->172.16.8.1 データ送信

シーケンス番号72129から送信元のシーケンス番号初期値を引くと1461。1461バイト目のデータです。1461バイト目から1631バイト目までの171バイトのデータを送信。

④の続きと思われます。

図 ④、⑤ データ送信

④、⑤と連続してデータを送信していますが、これはTCPの基本動作(データ送信->受信応答受信->データ送信)と異なります。大丈夫なんでしょうか?

受信応答

⑥172.16.8.11->172.16.4.253 ④の受信応答

確認応答番号72129から宛先のシーケンス番号初期値を引くと1461。これは1461バイト目をリクエストしています。
④(1~1460バイト目まで)受信で1460バイト目まで受信しているので、④の受信応答だとわかります。

⑦172.16.8.11->172.16.4.253 ⑤の受信応答

確認応答番号72300から宛先のシーケンス番号初期値を引くと1632。これは1632バイト目をリクエストしています。
⑤(1461~1631バイト目まで)受信で1631バイト目まで受信しているので、⑤の受信応答だとわかります。
図 ⑥、⑦ データ受信応答

データ送信、受信応答+データ送信

⑧172.16.8.11->172.16.4.253 データ送信

シーケンス番号92020から送信元のシーケンス番号初期値を引くと1。1バイト目のデータです。1バイト目から811バイト目までの171バイトのデータを送信。


⑨172.16.4.253->172.16.8.11 ⑧の受信応答+データ送信

確認応答番92831から宛先のシーケンス番号初期値を引くと812。これは812バイト目をリクエストしています。
⑧(1~811バイト目まで)受信で8111バイト目まで受信しているので、⑧の受信応答だとわかります。

さらに、723バイトのデータ(1632バイト目~2354バイト目)も送信しています。

⑩172.16.8.11->172.16.4.253 ⑨の受信応答

確認応答番73023から宛先のシーケンス番号初期値を引くと2355。これは2355バイト目をリクエストしています。
⑨(1632~2354バイト目まで)受信で2354バイト目まで受信しているので、⑨の受信応答だとわかります。

図 ⑧~⑩ データ送信、受信応答

⑨は受信応答をしつつ、データも送信しています。これをピギーバックを呼びます。

データ送信、受信応答+データ送信

⑪172.16.8.11->172.16.4.253 データ送信

シーケンス番号92831から送信元のシーケンス番号初期値を引くと812。812バイト目のデータです。812バイト目から1449バイト目までの638バイトのデータを送信。


⑫172.16.4.253->172.16.8.11 ⑪の受信応答+データ送信

確認応答番93469から宛先のシーケンス番号初期値を引くと1450。これは1450バイト目をリクエストしています。
⑪(812~1449バイト目まで)受信で638バイト目まで受信しているので、⑪の受信応答だとわかります。

さらに、1041バイトのデータ(2355バイト目~3395バイト目)も送信しています。

⑬172.16.8.11->172.16.4.253 ⑫の受信応答

確認応答番74064から宛先のシーケンス番号初期値を引くと3396。これは3396バイト目をリクエストしています。
⑫(2355~3395バイト目まで)受信で3396バイト目まで受信しているので、⑫の受信応答だとわかります。
図 ⑪~⑬ データ送信、受信応答

データ連続送信、まとめて受信応答

⑭172.16.8.11->172.16.4.253 データ送信

シーケンス番号93469から送信元のシーケンス番号初期値を引くと1450。1450バイト目のデータです。1450バイト目から2909バイト目までの1460バイトのデータを送信。


⑮172.16.8.11->172.16.4.253 データ送信

シーケンス番号94929から送信元のシーケンス番号初期値を引くと2910。2910バイト目のデータです。2910バイト目から3221バイト目までの312バイトのデータを送信。

⑯172.16.3.254->172.16.8.11 ⑭、⑮の受信応答

確認応答番95241から宛先のシーケンス番号初期値を引くと3222。これは3222バイト目をリクエストしています。
⑭(1450~2909バイト目まで)受信で2909バイト目まで受信している。
⑮(2910~3221バイト目まで)受信で3221バイト目まで受信している。
⑭と⑮の受信応答をこの1つのパケットでしています。
図 ⑭~⑯ データ送信、受信応答


受信応答を待たずに連続してデータを送信したり、複数のパケットの受信応答を1つのパケットでしてしまうなど、謎の動きがありました。次回はこのあたりを確認します。

次回は

データの連続送信について。
テストはまだしません。



このブログの人気の投稿

7月16日(火)4コマ目

6月10日(月)1コマ目

6月5日(水)1コマ目