TCP SEQ / ACK Lab
Sequence & Acknowledgment Number Walkthrough
CLOSED
Idle — まだ何も始まっていない
クライアントとサーバの間で何のセグメントも飛んでいない状態。下のボタンで
SYN
を送るところから始めよう。
CURRENT STEP
0 / 9
Sequence Diagram — Client ⇄ Server
PHASE: idle
CLIENT
SERVER
CLIENT TCB
SND.NXT
—
SND.UNA
—
RCV.NXT
—
STATE
CLOSED
SERVER TCB
SND.NXT
—
SND.UNA
—
RCV.NXT
—
STATE
LISTEN
Control Panel
click to advance
▶
SYN を送る
CLOSED → SYN-SENT
▶
SYN+ACK を返す
LISTEN → SYN-RCVD
▶
ACK で握手完了
→ ESTABLISHED
⚡
データ送信 (100B)
PSH+ACK / len=100
▶
受信側 ACK
ACK = 受信したSEQ + len
✗
パケロス発生
途中でセグメント消失
⟲
RTO で再送
同じSEQで送り直す
⏱
FIN を送る
ESTABLISHED → FIN-W1
▶
FIN への ACK
CLOSE-WAIT 経由
▶
サーバ FIN
→ LAST-ACK
▶
最後の ACK
→ TIME-WAIT / CLOSED
⟲
最初からやり直す
RESET to CLOSED
CURRENT STEP — DETAIL
Idle — まだ何も始まっていない
CLOSED
TCBもISNもまだ存在しない。
connect()
が呼ばれて初めて初期シーケンス番号
ISN
が決まり、最初の
SYN
が飛んでいく。
Realistic Output — tcpdump -nn
# 何も流れていない。SYN を送ると最初のセグメントが現れる。
Trace