婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > TCP socket SYN隊列和Accept隊列區別原理解析

TCP socket SYN隊列和Accept隊列區別原理解析

熱門標簽:企業辦理400電話收費標準 百度地圖底圖標注 新鄉牧野400電話申請 智能電銷機器人真的有用么 中國地圖標注上各個省 撫州市城區地圖標注 激光標記地圖標注 高德地圖標注足跡怎么打標 電銷智能機器人試用

首先我們必須明白,處于“LISTENING”狀態的TCP socket,有兩個獨立的隊列:

  • SYN隊列(SYN Queue)
  • Accept隊列(Accept Queue)

這兩個術語有時也被稱為“reqsk_queue”,“ACK backlog”,“listen backlog”,甚至“TCP backlog”,但是這篇文章中我們使用上面兩個術語以免造成混淆。

SYN隊列

SYN隊列存儲了收到SYN包的連接(對應內核代碼的結構體:struct inet_request_sock)。它的職責是回復SYN+ACK包,并且在沒有收到ACK包時重傳,直到超時。在Linux下,重傳的次數為:

$ sysctl net.ipv4.tcp_synack_retries

net.ipv4.tcp_synack_retries = 5

文檔中對tcp_synack_retries的描述如下:

 tcp_synack_retries - int整型
 對于一個被動TCP連接,重傳SYNACKs的次數。該值不能超過255。
 默認值為5,如果初始RTO是1秒,那么對應的最后一次重傳是31秒。
 對應的最后一次超時是63秒之后。

發送完SYN+ACK之后,SYN隊列等待從客戶端發出的ACK包(也即三次握手的最后一個包)。當收到ACK包時,首先找到對應的SYN隊列,再在對應的SYN隊列中檢查相關的數據看是否匹配,如果匹配,內核將該連接相關的數據從SYN隊列中移除,創建一個完整的連接(對應內核代碼的結構體:struct inet_sock),并將這個連接加入Accept隊列。

Accept隊列

Accept隊列中存放的是已建立好的連接,也即等待被上層應用程序取走的連接。當進程調用accept(),這個socket從隊列中取出,傳遞給上層應用程序。

這就是Linux處理SYN包的一個簡單描述。順便一提,當socket開啟了TCP_DEFER_ACCEPT和TCP_FASTOPEN時,工作方式將會有細微不同,本文不做介紹。

隊列大小限制

應用程序通過調用系統調用listen(2),傳入backlog參數,來設置SYN隊列和Accept隊列的最大大小。比如下面這樣,將SYN隊列和Accept隊列的最大大小同時設置為1024:

listen(sfd, 1024)

注意,在4.3版本之前的內核,SYN隊列的大小是用另一種方式計算。

SYN隊列的最大大小以前是用net.ipv4.tcp_max_syn_backlog來配置,但是現在已經不再使用了?,F在用net.core.somaxconn來同時表示SYN隊列和Accept隊列的最大大小。在我們的服務器上,我們將它設置為16k:

$ sysctl net.core.somaxconn

net.core.somaxconn = 16384

知道了上面這些信息后,你可能會問,隊列設置為多大合適?隊列設置為多大合適

答案是:看情況。對于大多數的TCP服務來說,這并不太重要。比如,Go語言1.11版本之前,并沒有提供設置隊列大小的方法。

盡管如此,也存在一些合理的原因,需要增大隊列的大?。?/p>

  • 當建立連接的請求速度確實很大時,即使是對于一個高性能的服務來說,SYN隊列也可能需要設置的大一些。
  • SYN隊列的大小,換言之就是等待ACK包的連接數。也即與客戶端的平均往返時間越大,堆積在SYN隊列中的連接就越多。對于那些大部分客戶端都距離服務器很遠的場景,比如說往返時間幾百毫秒以上,可以將隊列大小設置的大一些。
  • TCP_DEFER_ACCEPT選項如果打開了,會導致socket在SYN-RECV狀態下維持更長的時間,也即增大了處于SYN隊列中的時間。

但是,將backlog設置的過大也會帶來不好的影響:SYN隊列中的每一個槽位都需要占用一些內存。當遇到SYN Flood攻擊時,我們沒有必要為這些發起攻擊的包浪費資源。SYN隊列中的inet_request_sock結構體,在4.14內核下,每個將占用256字節的內存。

linux下,如果想查看SYN隊列的當前狀態,我們可以使用ss命令來查詢SYN-RECV狀態的socket。比如如下執行結果,表示80端口的SYN隊列中當前有119個元素,443端口則為78。

 $ ss -n state syn-recv sport = :80 | wc -l
 119
 $ ss -n state syn-recv sport = :443 | wc -l
 78

假如程序調用accept()不夠快?還可以通過我們的SystemTap腳本來觀察這個數據:resq.stp

如果程序調用accept()不夠快會發生什么呢?

  • 后續收到的SYN包,不會被SYN隊列處理
  • 后續收到的(用于建立連接的)ACK包,不會被SYN隊列處理
  • TcpExtListenOverflows / LINUX_MIB_LISTENOVERFLOWS計數增加
  • TcpExtListenDrops / LINUX_MIB_LISTENDROPS計數增加

發生這種情況時,我們只能寄希望于程序的處理性能稍后能恢復正常,客戶端重新發送被服務端丟棄的包。

內核的這種表現對于大部分服務來說是可接受的。順便一提,可以通過調整net.ipv4.tcp_abort_on_overflow這個全局參數來修改這種表現,但是最好還是不要改這個參數。

可以通過查看nstat的計數來觀察Accept隊列溢出的狀態:

 $ nstat -az TcpExtListenDrops
 TcpExtListenDrops 49199 0.0

但是這是一個全局的計數。觀察起來不夠直觀,比如有時我們觀察到它在增長,但是所有的服務程序看起來都是正常的。此時我們可以使用ss命令來觀察單個監聽端口的Accept隊列大小:

 $ ss -plnt sport = :6443|cat
 State Recv-Q Send-Q Local Address:Port Peer Address:Port
 LISTEN 0 1024 *:6443 *:*

Recv-Q這一列顯示的是處于Accept隊列中的socket數量,Send-Q顯示的是隊列的最大大小。在上面的例子中,我們發現并沒有未被程序accept()的socket,但是我們依然發現ListenDrops計數在增長。

這是因為我們的程序只是周期性的短暫卡住不處理新的連接,而非永久性的不處理,過段時間程序又恢復了正常。這種情況下,用ss命令比較難觀察這種現象,因此我們寫了一個SystemTap腳本,它會hook進內核,把被丟棄的SYN包打印出來:

$ sudo stap -v acceptq.stp
time (us)    acceptq qmax local addr  remote_addr
1495634198449075 1025  1024 0.0.0.0:6443 10.0.1.92:28585
1495634198449253 1025  1024 0.0.0.0:6443 10.0.1.92:50500
1495634198450062 1025  1024 0.0.0.0:6443 10.0.1.92:65434
...

通過上面的操作,可以觀察到哪些SYN包被ListenDrops影響了。從而我們也就可以知道哪些程序在丟失連接。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:西安 臨汾 南通 辛集 忻州 海西 邯鄲 延安

巨人網絡通訊聲明:本文標題《TCP socket SYN隊列和Accept隊列區別原理解析》,本文關鍵詞  TCP,socket,SYN,隊列,和,Accept,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《TCP socket SYN隊列和Accept隊列區別原理解析》相關的同類信息!
  • 本頁收集關于TCP socket SYN隊列和Accept隊列區別原理解析的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩精品在线一区| 亚洲成av人综合在线观看| 久久综合九色综合欧美亚洲| 色诱亚洲精品久久久久久| 欧美一级二级在线观看| a4yy欧美一区二区三区| 欧美图区在线视频| 国产女主播在线一区二区| 99久久精品免费看| 欧美国产一区在线| 国产91丝袜在线播放九色| 日韩美女精品在线| 国产一区二区三区最好精华液| 欧美中文字幕不卡| 亚洲精品国产一区二区三区四区在线| 成人免费高清在线| 亚洲人一二三区| www.成人在线| 《视频一区视频二区| 91社区在线播放| 亚洲午夜免费电影| 欧美美女网站色| 亚洲一区二区三区四区五区黄| 欧美日韩国产首页| 国产精品66部| 亚洲日本丝袜连裤袜办公室| 日本高清视频一区二区| 亚洲一区二区三区四区在线观看 | 紧缚奴在线一区二区三区| 26uuu精品一区二区在线观看| 国产专区欧美精品| 曰韩精品一区二区| 日本一区二区三区国色天香| bt欧美亚洲午夜电影天堂| 亚洲一区二区三区四区在线免费观看 | 亚洲欧洲精品天堂一级 | 五月天精品一区二区三区| 久久久精品tv| 久久伊人中文字幕| 欧美日韩大陆在线| 色av成人天堂桃色av| 粉嫩绯色av一区二区在线观看| 日本不卡视频一二三区| 亚洲gay无套男同| 亚洲超碰97人人做人人爱| 亚洲一二三四久久| 亚洲综合激情小说| 亚洲国产中文字幕在线视频综合| 亚洲欧洲美洲综合色网| 亚洲最快最全在线视频| 亚洲黄网站在线观看| 亚洲精品乱码久久久久久日本蜜臀| 国产偷国产偷亚洲高清人白洁| 欧美一级视频精品观看| 精品国产第一区二区三区观看体验| 91麻豆精品91久久久久久清纯| 欧美日韩一本到| 制服丝袜日韩国产| 日韩亚洲欧美在线| 国产精品嫩草影院av蜜臀| 亚洲美女视频在线观看| 欧美精品日韩一本| 精品美女一区二区| 樱花影视一区二区| 丝袜诱惑制服诱惑色一区在线观看| 精品在线你懂的| 欧美伊人久久大香线蕉综合69| 日韩限制级电影在线观看| 亚洲三级电影网站| 国产在线精品一区在线观看麻豆| 91网上在线视频| 精品乱码亚洲一区二区不卡| 亚洲一区二区欧美日韩| 国产盗摄精品一区二区三区在线| 欧美妇女性影城| 在线观看日韩高清av| 国产精品国模大尺度视频| 国产精品一二三区在线| 日韩欧美黄色影院| 免费人成在线不卡| 欧美在线不卡一区| 亚洲少妇30p| 成人免费视频播放| 久久久精品tv| 成人免费高清在线观看| 国产欧美一区二区三区在线老狼| 免费av成人在线| 精品捆绑美女sm三区| 国产精品2024| 国产精品久久久久精k8| 精品视频全国免费看| 青青草国产成人av片免费| 欧美一级爆毛片| 国产成人精品一区二区三区网站观看| 日韩视频免费观看高清完整版| 国产在线视频一区二区| 亚洲视频一区二区在线| 色综合久久综合中文综合网| 亚洲成人动漫一区| 精品久久久三级丝袜| 成人性生交大片免费 | 色综合久久精品| 亚洲裸体在线观看| 欧美本精品男人aⅴ天堂| 久久精品国产77777蜜臀| 国产精品私房写真福利视频| 91丨九色丨尤物| 人禽交欧美网站| 亚洲欧美综合另类在线卡通| 欧美日韩视频第一区| 99久久亚洲一区二区三区青草| 亚洲一区二区三区四区在线免费观看| 欧美成va人片在线观看| 欧美日韩国产小视频在线观看| 91蜜桃免费观看视频| 麻豆视频观看网址久久| 亚洲国产欧美在线| 综合久久久久综合| 亚洲色图一区二区| 99久久国产综合精品麻豆| 免费观看一级特黄欧美大片| 亚洲图片激情小说| 国产精品天天摸av网| 中文成人综合网| 亚洲色图另类专区| 国产精品久久久久影院色老大| 久久综合九色综合97婷婷| 亚洲精品在线免费观看视频| 久久久久久久久一| 久久综合九色综合欧美98| 国产日韩精品一区二区三区| 国产精品美女久久久久久久久久久 | 欧美日韩一区二区欧美激情 | 一区二区三区在线视频观看58| 综合久久久久综合| 日韩电影免费在线观看网站| 免费不卡在线视频| 成a人片国产精品| 99久久精品免费观看| 欧美va亚洲va| 日韩理论电影院| 国产一区二区免费视频| 91免费视频网| 2023国产精品| 午夜精品在线视频一区| 国产一区欧美日韩| 欧美视频在线一区二区三区 | 国产一区二区三区综合| 成人高清免费观看| 日本一区二区综合亚洲| 精品在线观看免费| 欧美日韩mp4| 日韩高清一级片| 91美女片黄在线观看91美女| 国产日韩精品久久久| 美女高潮久久久| 欧美日韩你懂的| 国产精品久久久久久久久免费丝袜 | av在线不卡电影| 精品久久久久久久久久久久包黑料| 欧美一区二区高清| 亚洲欧美精品午睡沙发| 一区二区三区在线视频观看58| 天堂资源在线中文精品| 激情综合五月婷婷| 欧美成人一区二区三区片免费| 亚洲午夜日本在线观看| 色综合视频在线观看| 中文字幕精品三区| 国内精品久久久久影院薰衣草| 在线欧美日韩国产| 亚洲国产中文字幕在线视频综合| 国产91高潮流白浆在线麻豆| 91精品国产入口| 热久久国产精品| 欧美曰成人黄网| 日韩成人免费电影| 欧美在线免费观看亚洲| 日韩精品免费视频人成| 久久蜜桃一区二区| 91热门视频在线观看| 日本视频免费一区| 欧美激情艳妇裸体舞| 色婷婷综合久色| 亚洲综合丝袜美腿| 精品国产伦一区二区三区观看体验 | 亚洲国产精品一区二区久久| 日韩一区二区三区av| 91在线精品一区二区| 婷婷丁香久久五月婷婷| 国产区在线观看成人精品| 欧美在线不卡视频| 国产iv一区二区三区| 视频在线观看一区| 亚洲欧洲日韩av| 国产亚洲成av人在线观看导航| 欧美怡红院视频| caoporn国产一区二区| 裸体一区二区三区| 亚洲一卡二卡三卡四卡无卡久久|