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]# cat tcp_timestamps 1 [root@118 ipv4]# cat tcp_thin_linear_timeouts 0 [root@118 ipv4]# cat tcp_fin_timeout 60 [root@118 ipv4]# cat /proc/sys/net/ipv4/tcp_syncookies 1 [root@118 ipv4]# cat tcp_synack_retries 2 [root@118 ipv4]# cat tcp_syn_retries 6
一個連接的完成需要經過3次握手, 只經過了2次握手,如果第三次握手一直不完成, 服務器會怎么處理?