过程

image.png

  1. 客户端发送的一个段是 SYN 报文,这个报文只有 SYN 标记被置位。
    1. 握手阶段中 syn 会 +1

image.png

为什么 SYN 段不携带数据却要消耗一个序列号呢?

  • 不占用序列号的段是不需要确认的. +1 是为了确认对方收到 sync

**

  1. 服务端收到客户端的 SYN 段以后,将 SYN 和 ACK 标记都置位

image.png

  1. 客户端发送三次握手最后一个 ACK 段,这个 ACK 段用来确认收到了服务端发送的 SYN 段。因为这个 ACK 段不携带任何数据,且不需要再被确认,这个 ACK 段不消耗任何序列号。

wireshark 抓包:

image.png

设置 wireshark 显示 seq 的方式:

  • Edit->Preferences->Protocols->TCP

image.png

交换的其它信息

  • 最大段大小 MSS
  • 窗口大小 Win
  • 窗口缩放因子 WS
  • 是否支持选择确认 SACK_PERM

image.png

初始序列号

  • 初始的序列号并非从 0 开始

三次握手的状态变化

image.png

  • 初始的状态是处于 CLOSED 状态。CLOSED 并不是一个真实的状态,而是一个假想的起点和终点