SYN/ACK 数据包(s?)在 TCP 连接初始化中作为一个或两个数据包发送?

网络工程 通讯协议
2021-07-16 20:36:45

当 TCP 连接的接收端发送其 SYN/ACK 数据包时,它们是分开发送的吗?就像接收方发送一个控制位为SYN的数据包,接收端是ISN,然后一个控制位设置为ACK的数据包及其对发送方下一个序列号的预测?或者一个数据包是否可以同时包含 SYN 和 ACK 控制位以及 ISN 和确认号?

1个回答

三向握手

1. 步骤

客户端通过发送带有同步序列号 (SYN) 控制标志设置的段开始三向握手,该标志指示序列号字段中的初始值。该值称为初始序列号 (ISN)。ISN 是随机选择的,从客户端发送到服务器的数据每字节增加 1。
ACK : not set | SYN : set

2. 步骤

服务器必须确认收到 SYN 段,因此它会发送一个带有 ACK 标志设置的段。客户端将此识别为服务器收到来自客户端的 SYN 的确认。ACK 编号字段的值是 ISN + 1。
服务器还必须向客户端发起响应。为了实现这一点,服务器以与客户端相同的方式使用 SYN 标志。(所以是一段)
ACK : set | SYN : set

3. 步骤

客户端用一个包含 ACK 的段进行响应,该段是对服务器发送的 SYN 的响应。该细分市场中没有用户数据。ACK 字段比从服务器收到的 ISN 多一个。
在客户端和服务器之间建立两个会话后,所有交换的段都将设置 ACK 标志。
ACK : set | SYN : not set

(注:整个客户端和服务端的会话实际上是两个单向会话)

Cisco ICND1章节7.2.1.3的三向握手图片