当前位置:   article > 正文

TCP 全连接队列满了会发生什么?又该如何应对?_我如果服务器只能接受20个tcp链接,如果同时有100个连接请求链接会发生什么

我如果服务器只能接受20个tcp链接,如果同时有100个连接请求链接会发生什么

什么是 TCP 半连接队列和全连接队列?
.半连接队列,也称 SYN 队列;
.全连接队列,也称 accepet 队列;
服务端收到客户端发起的 SYN 请求后,内核会把该连接存储到半连接队列,并向客户端响应 SYN+ACK,接着客户端会返回 ACK,服务端收到第三次握手的 ACK 后,内核会把连接从半连接队列移除,然后创建新的完全的连接,并将其添加到 accept 队列,等待进程调用 accept 函数时把连接取出来。
在这里插入图片描述
不管是半连接队列还是全连接队列,都有最大长度限制,超过限制时,内核会直接丢弃,或返回 RST 包。

实战 - TCP 全连接队列溢出
如何知道应用程序的 TCP 全连接队列大小?
在服务端可以使用 ss 命令,来查看 TCP 全连接队列的情况:
但需要注意的是 ss 命令获取的 Recv-Q/Send-Q 在「LISTEN 状态」和「非 LISTEN 状态」所表达的含义是不同的。
在「LISTEN 状态」时,Recv-Q/Send-Q 表示的含义如下:
在这里插入图片描述
Recv-Q:当前全连接队列的大小,也就是当前已完成三次握手并等待服务端 accept() 的 TCP 连接个数;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/1018339
推荐阅读
相关标签
  

闽ICP备14008679号