过程
- 客户端发送的一个段是 SYN 报文,这个报文只有 SYN 标记被置位。
- 握手阶段中 syn 会 +1
为什么 SYN 段不携带数据却要消耗一个序列号呢?
- 不占用序列号的段是不需要确认的. +1 是为了确认对方收到 sync
**
- 服务端收到客户端的 SYN 段以后,将 SYN 和 ACK 标记都置位
- 客户端发送三次握手最后一个 ACK 段,这个 ACK 段用来确认收到了服务端发送的 SYN 段。因为这个 ACK 段不携带任何数据,且不需要再被确认,这个 ACK 段不消耗任何序列号。
wireshark 抓包:
设置 wireshark 显示 seq 的方式:
Edit->Preferences->Protocols->TCP
交换的其它信息
- 最大段大小 MSS
- 窗口大小 Win
- 窗口缩放因子 WS
- 是否支持选择确认 SACK_PERM
初始序列号
- 初始的序列号并非从 0 开始
三次握手的状态变化
- 初始的状态是处于 CLOSED 状态。CLOSED 并不是一个真实的状态,而是一个假想的起点和终点