关于TCP连接的一些细节问题

本文详细解释了TCP的半连接队列与全连接队列的工作原理及配置参数的影响,并介绍了队列满时的不同处理方式。

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

Q: 半连接队列与全连接队列
A:

  • 半连接队列:由tcp_max_syn_backlog决定,开户syncookies时,没有上限
  • 全连接队列:由somaxconn(系统级)与backlog(listen函数参数)共同决定,取两者中的较小值

Q: 半连接队列满了如何处理?
A: 丢弃请求

Q: 全连接队列满了如何处理?

  • tcp_abort_on_overflow==1 发送reset包
  • tcp_abort_on_overflow==0 过一段时间重发syn ack包(次数由tcp_synack_retries决定)

Q: 在client发出ack之后,认为连接已经ESTAB了,可以发送数据吗?server收到数据会如何处理?
A: 可以发送数据,server端会缓存下来直至连接变成ESTABLISHED状态才传输给用户

Q: Recv-Q 与 Send-Q 的含义
A:

Recv-QSend-Q
listen已使用的全连接队列数全连接队列上限数
与非listen已收到的但被进程读取的字节数已发送但是未被远程主机确认的字节数

参考:
[1]: man 7 tcp
[2]: https://102.alibaba.com/detail?id=140
[3]: https://tools.ietf.org/html/rfc793#section-3.4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值