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

xiaohouye 2019-11-02

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

[118 ipv4]# cat tcp_timestamps
1
[118 ipv4]# cat tcp_thin_linear_timeouts
0
[118 ipv4]# cat tcp_fin_timeout
60
[118 ipv4]# cat /proc/sys/net/ipv4/tcp_syncookies 
1
[118 ipv4]# cat tcp_synack_retries
2
[118 ipv4]# cat tcp_syn_retries
6

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

相关推荐