linux连接队列,Linux 半连接队列,全连接队列

本文详细介绍了TCP/IP连接中的listen和accept API,以及三次握手的过程。listen函数的backlog参数设定全队列大小,而accept则从队列中获取连接。系统内核设置的最大backlog值可以通过/proc/sys/net/core/somaxconn查看,默认为128。此外,文章还提及了半连接队列和TCP Syn Cookies的相关配置,如/tcp_max_syn_backlog,默认值为1024。三次握手包括客户端发送SYN包,服务器回应SYN+ACK,最后客户端确认ACK。若第三次握手未完成,服务器将如何处理的问题也进行了探讨。

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

socket 中 listen api中参数backlog指定的是 全队列大小

accept api是从全队列中获取, 没有就阻塞了, 直到有新连接进来.

listen中指定的值大小,有一个最大上限,

这个上限是系统内核中设定的. 在配置文件中: /proc/sys/net/core/somaxconn

这个值默认是128.

三次握手:

客户端发一个syn包,

服务器发一个包(syn+ack),

客户端发一个ack确认包. 至此连接完成

半连接是是未完成队列:

/proc/sys/net/ipv4/tcp_syncookies  是否缓存syn

这个值操作系统内部设定的, 在 /proc/sys/net/ipv4/tcp_max_syn_backlog 文件中. 默认是1024

[root@118 ipv4]# cattcp_timestamps1[root@118 ipv4]# cattcp_thin_linear_timeouts0[root@118 ipv4]# cattcp_fin_timeout60[root@118 ipv4]# cat /proc/sys/net/ipv4/tcp_syncookies1[root@118 ipv4]# cattcp_synack_retries2[root@118 ipv4]# cattcp_syn_retries6

一个连接的完成需要经过3次握手,   只经过了2次握手,如果第三次握手一直不完成,  服务器会怎么处理?

原文:https://www.cnblogs.com/dzqdzq/p/11781340.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值