linux - 在 linux TCP 系统调用的上下文中,什么是 "incomplete connection request"?

标签 linux sockets tcp posix

listen() 的 linux 手册页说:

The behavior of the backlog argument on TCP sockets changed with Linux 2.2. Now it speci‐ fies the queue length for completely established sockets waiting to be accepted, instead of the number of incomplete connection requests. The maximum length of the queue for incomplete sockets can be set using /proc/sys/net/ipv4/tcp_max_syn_backlog. When syncook‐ ies are enabled there is no logical maximum length and this setting is ignored. See tcp(7) for more information.

在这种情况下,“完全建立的套接字”与“不完整的连接请求”是什么意思?

最佳答案

处于低电平。

有一个点可以打开连接,即A面或A点。 还有一个监听点,也就是服务器点,也就是B点。

A send to B a SYN packet
B response to A a SYN ACK packet
Then A response is a ACK packet.

现在已建立连接。

如果有步骤没有做,或者响应不是ACK,则连接不建立。

在建立连接之前,“连接”在“待定连接”列表中。

如果响应不是 ACK,则连接被取消并从挂起连接列表中删除。显然有错误。

但是假设最后一个ACK没有发送,而是有另一个新的连接。 这个挂起的连接正在等待响应,一个新的连接被添加到列表中。 它一直在列表中,直到响应到达,或达到超时。

列表中的连接数为“未完成的连接请求”,成功建立的连接数为“完全建立的套接字”

关于linux - 在 linux TCP 系统调用的上下文中,什么是 "incomplete connection request"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39706833/

相关文章:

C#:简单的TCP服务器问题

linux - 从 hdfs dfs -ls 命令的输出中打印文件名和文件修改日期

linux - 在 linux 命令行中使用低功耗蓝牙

java.lang.Object 无法转换为 java.nio.channels.SocketChannel

c - Linux: sockaddr_storage 怎么初始化呢?

Erlang 的最大同时打开端口数?

linux - 使用 'sed' 或其他类似命令捕获一组,然后仅输出该数据

linux - 在 bash 中拆分字符串时数组下标错误

c - 如何使用 gethostbyname() 检测您的 IP/名称

c++ - Qt中如何编写TLS加密的客户端和服务端?