networking - 在 3 次握手中,服务器没有收到客户端的 ACK 消息时会发生什么?
问题描述
我了解客户端在 3 次握手期间从服务器接收到 SYN ACK 消息并将 ACK 消息发送到服务器后,客户端和服务器已连接。在它们连接之后,当客户端向服务器发送其他消息时,如果这些消息在客户端在进行 3 次握手时发送的 ACK 消息之前到达服务器会发生什么情况?
解决方案
如果这些消息在客户端在进行 3 次握手时发送的 ACK 消息之前到达服务器会发生什么?
ACK 只是 TCP 头中的标志以及最新接收到的数据的序列号。它可以包含在一个空数据包中(即没有有效负载,只是 TCP 标头),也可以包含在一个带有有效负载的数据包中。是否接收到带有 ACK 的特定数据包并不重要,只要接收到覆盖数据的 ACK 即可。
这意味着如果客户端发送的初始数据覆盖 TCP 握手的最终 ACK 就足够了。事实上,甚至根本不需要从客户端发送一个独立的 ACK(没有负载)来完成 TCP 握手,但客户端可以在客户端从服务器收到 SYN 和 ACK 后立即开始发送数据。
推荐阅读
- ruby - pg gem 中 SSL 支持的运行时检测
- odoo - 检索同一张表的多个ID
- python - 带有 db_index=False 的 Django OneToOneField 与 OneToOneField
- fiware - FIWARE Orion Docker 容器:通知订阅中的问题
- java - Spark 框架 cookie 始终为空
- java - 当软键盘在android中显示时edittext在错误的位置
- apache-kafka - IIDR CDC Kafka 消息格式
- oracle - 根据 IF 语句执行查询的变体
- javascript - 使用 for 循环的星级评分
- azure-active-directory - MS Graph API:将 keyCredentials 和 requireResourceAccess 分配给应用程序