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次握手,如果第三次握手一直不完成, 服务器会怎么处理?