tcp 的连接队列

本文详细解释了TCP连接过程中的两种关键队列:半连接队列与完全连接队列的作用及区别。半连接队列存储正在三次握手过程中的连接请求,而完全连接队列则存放已完成三次握手的连接。文章还介绍了如何通过调整内核参数来优化队列大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连接队列

  它指的就是tcp状态节点的队列。tcp 状态分俩种,一种是完全连接状态即(established) , 一种是半连接状态(SYN_SEND 或 SYN_RECV)。
  对于服务器来说,listen状态的节点当收到syn同步报文段后,会进行三次握手,当三次握手完成后,就生成一个 established 节点放到完全连接队列中,本质上 listen状态的节点是不负责具体的通信的,它并不接受具体的数据报文段,它只负责监听。(这就是为什么accept 系统函数,执行完毕后并不是listensocket去通信,而是accept返回的socket去通信。

完全连接队列与半连接队列

  半连接队列都是处于SYN_SEND/SYN_RCVD状态的节点,它的大小由系统参数确定,/proc/sys/net/ipv4/tcp_max_syn_backlog来决定默认32位下512,64位下2048,最大8192。(测试环境是 Centos 6.5 32/64位)
  完全连接队列是由listen 函数中的backlog参数决定的。它的大小在 0~/proc/sys/net/core/somaxconn之间(我的默认该值是128)。

修改内核参数

  sudo sysctl -w net.core.somaxconn=2048 即可生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值