日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

backlog配置_TCP/IP协议中backlog参数

發布時間:2024/7/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 backlog配置_TCP/IP协议中backlog参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TCP建立連接是要進行三次握手,但是否完成三次握手后,服務器就處理(accept)呢?

backlog其實是一個連接隊列,在Linux內核2.2之前,backlog大小包括半連接狀態和全連接狀態兩種隊列大小。

半連接狀態為:服務器處于Listen狀態時收到客戶端SYN報文時放入半連接隊列中,即SYN queue(服務器端口狀態為:SYN_RCVD)。

全連接狀態為:TCP的連接狀態從服務器(SYN+ACK)響應客戶端后,到客戶端的ACK報文到達服務器之前,則一直保留在半連接狀態中;當服務器接收到客戶端的ACK報文后,該條目將從半連接隊列搬到全連接隊列尾部,即 accept queue (服務器端口狀態為:ESTABLISHED)。

在Linux內核2.2之后,分離為兩個backlog來分別限制半連接(SYN_RCVD狀態)隊列大小和全連接(ESTABLISHED狀態)隊列大小。

SYN queue 隊列長度由?/proc/sys/net/ipv4/tcp_max_syn_backlog?指定,默認為2048。

Accept queue 隊列長度由?/proc/sys/net/core/somaxconn?和使用listen函數時傳入的參數,二者取最小值。默認為128。在Linux內核2.4.25之前,是寫死在代碼常量?SOMAXCONN?,在Linux內核2.4.25之后,在配置文件?/proc/sys/net/core/somaxconn?中直接修改,或者在 /etc/sysctl.conf 中配置?net.core.somaxconn = 128?。

可以通過ss命令來顯示

[root@localhost ~]# ss -l

State Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN0 128 *:http *:*LISTEN0 128 :::ssh :::*LISTEN0 128 *:ssh *:*LISTEN0 100 ::1:smtp :::*LISTEN0 100 127.0.0.1:smtp *:*

在LISTEN狀態,其中 Send-Q 即為Accept queue的最大值,Recv-Q 則表示Accept queue中等待被服務器accept()。

另外客戶端connect()返回不代表TCP連接建立成功,有可能此時accept queue 已滿,系統會直接丟棄后續ACK請求;客戶端誤以為連接已建立,開始調用等待至超時;服務器則等待ACK超時,會重傳SYN+ACK 給客戶端,重傳次數受限?net.ipv4.tcp_synack_retries?,默認為5,表示重發5次,每次等待30~40秒,即半連接默認時間大約為180秒,該參數可以在tcp被洪水攻擊是臨時啟用這個參數。

查看SYN queue 溢出

[root@localhost ~]# netstat -s | grepLISTEN102324 SYNs to LISTEN sockets dropped

查看Accept queue 溢出

[root@localhost ~]# netstat -s | grepTCPBacklogDrop

TCPBacklogDrop:2334

參考資料:

總結

以上是生活随笔為你收集整理的backlog配置_TCP/IP协议中backlog参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。