首页 > 其他分享 >TCP 队列

TCP 队列

时间:2023-01-18 13:44:28浏览次数:60  
标签:队列 TCP queue RST 连接 服务端

一、TCP 队列

1、syns queue:半连接队列

TCP 三次握手(参考:TCP建立连接之三次握手),第一步,服务端接收到客户端发送的 syn 消息后,将连接信息放入 syns queue,此时,双方连接尚未建立,称之为半连接。

2、accept queue:全连接队列

TCP 三次握手,第三步,客户端接收到服务端发送的 syn + ack 消息后,向服务端发送 ack 消息,服务端接收到此消息后,将连接信息从 syns queue 拿出,放入 accept queue,此时,经过三次握手,连接已经建立,称之为全连接。

二、队列溢出

既然是队列,那就会存在队列被填满的情况,我们称之为队列溢出。

1、syns queue 满

假如某一时间段内,有大量的 syn 请求连接信息到达,如果后续连接建立处理不及时,或者有客户端方面恶意不处理后续连接,那么就会快速占满 syns queue,从而导致无法建立新的连接。

2、accept queue 满

完成三次握手,则会触发连接信息的队列转移,假如此时,accept queue 队列满,则会导致新建立的连接得不到维护保持,系统会根据设定的策略(tcp_abort_on_overflow)进行连接的直接抛弃(0)或者发送 RST 消息给客户端终止连接(1)(Connection reset by peer)。

3、查看队列溢出

命令:netstat -s | egrep "listen|LISTEN"

结果:

全连接队列溢出次数:
6 times the listen queue of a socket overflowed

半连接队列溢出次数:
6 SYNs to LISTEN sockets dropped

4、查看队列使用情况

命令:ss -lnt

结果:

State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0         128              *:22                   *:*
LISTEN 0          50             *:9090                 *:*

Send-Q:监听端口上全连接队列最大大小

Recv-Q:全连接队列当前使用量

三、关于连接错误

connection reset:已关闭的连接上执行读操作触发。
connection reset by peer:已关闭的连接上执行写操作触发。

四、关于 RST 消息

连接重置消息,用于连接的【异常关闭】。
下面简单罗列集中可能触发 RST 连接关闭的情景:
1、服务端接收到自身不存在端口的连接请求
2、主动使用 RST 关闭,替代正常的四次挥手 FIN 消息关闭(参考:TCP连接性能指标之TCP关闭过程(四次挥手)),主要用于特殊优化提升效率使用。
3、客户端或者服务端异常,无法继续正常的连接处理,发送 RST 终止连接操作。
4、处理 TCP 游离包信息。
5、长期未收到对方确认报文,经过一定时间或者重传尝试后,发送 RST 终止连接。

 

转自:https://www.cnblogs.com/niejunlei/p/13919726.html

标签:队列,TCP,queue,RST,连接,服务端
From: https://www.cnblogs.com/ylz8401/p/17059624.html

相关文章

  • 数据结构-队列
    数据结构-队列队列是一种特殊的线性表,他的性质只允许元素从最后入,从最前出,所以他也满足FIFO(FirstInFirstOut)性质,也就是先进先出。我们可以先试着使用函数在C++中定......
  • 网络分层,网络协议TCP/IP模型,OSI模型
    TCP\IP模型是多种协议的综合,4层模型(也有说5层的)。其中最重要的就是分层结构和主要协议。1.应用层(SMTP,HTTP,FTP)2.传输层(TCP,UDP)3.网络互联层(IPv4,IPv6)4.网络接口层(链路层)应......
  • ubuntu移植Tcpdump到Android平台
    方式一。手动编译参考这里https://www.jianshu.com/p/aca8345dc7fb注意要将文件复制到Ubuntu系统里的目录,不要用挂载目录执行。方式二。搜索androidtcpdumpbinary......
  • 外网测试连通率tcping
    tcping10.10.10.108081   二、tcping介绍tcping:tcping命令基于tcp协议监控,可以从较低级别的协议获得简单的,可能不可靠的数据报服务。原则上,TCP应该能够在从容硬......
  • 手写笔记10:简单回顾计算机网络(OSI七层、TCP与UDP)
    ......
  • RabbitMQ 高级消息队列协议
    https://blog.csdn.net/qq_46127735/article/details/120498245http://www.codebaoku.com/it-linux/it-linux-112105.htmlhttps://baike.baidu.com/item/rabbitmq/937214......
  • 内网Linux下安装Nginx1.23,添加stream模块实现tcp/udp代理转发
    环境:centos7.6ngx_stream_core_module这个模块在1.9.0版本后将被启用。但是并不会默认安装,需要在编译时通过指定--with-stream参数来激活这个模块,window下并不支持udp......
  • 如何设计一个消息队列?
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校......
  • 如何设计一个消息队列?
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招......
  • Modbus TCP
    ModbusTCP数据帧ModbusTCP的数据帧可分为两部分:MBAP+PDU。报文头MBAPMBAP为报文头,长度为7字节事务处理标识协议标识长度单元标识符2字节2字节2字节1字节......