摘要
- 同时打开发生在双方都主动打开、发送 SYN,并在 SYN-SENT 状态收到不带确认号的 SYN 时。
- 双方进入 SYN-RECEIVED,确认对方的序列空间,随后进入 ESTABLISHED;结果是一条连接,而不是两条。
- RFC 9293 要求实现支持这一过程,并记住 SYN-RECEIVED 源于主动打开还是被动打开。
角色之前的握手
TCP 常被讲成客户端向监听中的服务器发起请求。但 RFC 793 首先把三次握手描述为连接同步过程。一个发起者和一个响应者是通常情形,却不是传输层的硬性角色。客户端和服务器更多是应用及部署上的约定。
SYN 如何交叉
两个端点都执行主动 OPEN,各自选择初始序列号并发送 SYN。报文在网络中交叉时,双方都处于 SYN-SENT。每一方收到不带确认的 SYN,记录对方的初始序列号,进入 SYN-RECEIVED,并发送 SYN+ACK。收到对自己 SYN 的有效确认后,双方进入 ESTABLISHED。交叉的发起最终合并为一条连接。
SYN 会占用一个序列号,因此确认号向前推进一位。
对称仍然需要记忆
RFC 9293 要求支持同时打开,并要求记录 SYN-RECEIVED 是由主动还是被动 OPEN 导致的。这个来源会影响之后的复位和错误处理。状态机可以对称,但本地历史不能被抹去。
看似敲门的旧 SYN
旧的重复 SYN 可能看起来像同时发起。序列号验证和复位处理仍然必要;在 SYN-SENT 收到 SYN,并不自动意味着它是合法的同时打开。
标准没有承诺什么
规范说明的是:当报文抵达两个 TCP 端点时,状态机如何运行。它并不证明路由、防火墙、NAT 映射、套接字 API 或应用一定允许这种交换。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
