7月11日(月)2コマ目
今日、やったこと
パケット解析(前回のつづき)
今日のホワイトボード
前回は
①~⑦まで解析をしました。
詳しくは前回のおたすけサイトをご確認ください。
パケット解析
⑧~⑩ データ送受信
⑧は172.16.8.11から172.16.4.253へ811バイトのデータを送信。
シーケンス番号2020(下4桁のみ)から1バイト目のデータであることがわかる。
=>172.16.8.11のシーケンス番号初期値は2019(②のパケットより)からわかる。
確認応答番号2300から1632バイト目から送ってと通知している。
=>172.16.4.253から送信したデータで直近のパケットは⑤。
シーケンス番号が2129(1461バイト目)、データサイズ171バイト(1460バイト目)。
これを受信したため、1461バイト目から送信してもらいたいので、確認応答番号は2300。
⑨は172.16.4.253から172.16.8.11へ723バイトのデータを送信。さらに⑧の受信応答でもある。
シーケンス番号2300から1461バイト目から723バイトのデータ(2454バイト目)のデータを送信。
さらに、確認応答番号2831は⑧のシーケンス番号2020(1バイト目)+⑧のデータサイズ(811バイト)となっているため、⑧のデータ(1バイト目から723バイト目まで)を受信したので、812バイト目から送信してほしいとリクエストしていることがわかる。
このパケットは⑧の受信応答+723バイトのデータ送信と2つの仕事をしている。このような受信応答+データ送信をピギーバックと呼んだりする。
⑩は172.16.8.11から172.16.4.253へ⑨の受信応答。
確認応答番号3023は⑨のシーケンス番号2300(1632バイト目)+⑨のデータサイズ(723バイト、2454バイト目まで)から⑨の723バイトのデータは受信できたことを表している。
![]() |
| 図 ⑧~⑩データ送受信 |
⑪~⑬データ送受信
ここも⑨~⑩と同じような展開。特に細かく説明はしませんが、シーケンス番号、確認応答番号、データサイズから流れを追いかけてください。
![]() |
| 図 ⑪~⑬データ送受信 |
⑭~⑯データ送信、受信応答
⑭、⑮で172.16.8.11から172.16.4.253へ連続してデータを送信。
これは送信データがMSS(1460バイト)より多かったため、分割して送信している。
⑭は1450バイト目から2909バイト目まで。
⑮は2910バイト目から3221バイト目まで。
⑯は⑭、⑮の受信応答を1つのパケットで行っている。
本来なら、⑭を受信したら受信応答送信、受信応答を受信したら⑮を送信、⑯の受信応答の順ですが、2つの受信応答を1つにまとめて送信している。
このように受信したらすぐに受信応答を送信せず、まとめて受信応答を送信する仕組みを遅延応答と呼ぶ。
![]() |
| 図 ⑭⑮データ送信、⑯受信応答 |
このパケット解析のまとめ
コネクション確立時(SYN=1のパケット)にシーケンス番号初期値(0相当の値)、MSSを通知する。
なお、MSSは少ないほうを採用する。
1つのパケットでデータ送信+受信応答をすることもある(ピギーバック)。
データを受信しても即受信応答を送信せず、まとめて1つのパケットで送信することもある(遅延応答)。
次回は
ウィンドウサイズについてやります。
また、ここまでの確認テスト(シーケンス番号、確認応答番号等の推測)を行います。


