TCP - 半連接隊列和全連接隊列

目錄

一、半連接隊列和全連接隊列的概念

二、全連接隊列溢出

三、半連接隊列溢出


一、半連接隊列和全連接隊列的概念

1. 半連接隊列:服務端收到客戶端發送的 SYN 包時,內核會將該連接加入半連接 SYN 隊列,并向客戶端返回響應

2. 全連接隊列:服務端收到客戶端發送的 ACK + SYN 包時,會從半連接隊列中移除該連接,創建一個新的完全連接,加入全連接 accept 隊列,等待進程調用 accept 函數取出全連接

二、全連接隊列溢出

1. 查看全連接隊列情況:ss 命令

  • Recv-Q:當前全連接隊列的大小
  • Send-Q:允許的全連接隊列最大大小

2. 全連接隊列溢出:大量請求打到服務器,如果請求數量超過 TCP 全連接隊列的大小,就會丟棄后面的連接(默認策略,可以修改策略為向客戶端發送 RST 復位報文,告訴客戶端連接建立失敗),導致服務器請求數量上不去

3. 查看全連接隊列是否溢出:netstat -s 可以查看丟掉的 TCP 連接,如果丟棄數量在變大說明某段時間內發生了全連接隊列溢出(是個累計值,不是大于 0 就代表當前全連接隊列溢出了,持續變大有上升趨勢才能說明溢出,半連接隊列查看溢出情況也是如此)

4. 調大全連接隊列的大小:修改 Linux 內核參數 somaxconn 和 backlog(全連接隊列大小是兩者的最小值)

5. 丟棄策略

  • tcp_abort_on_overflow = 0:丟棄連接,客戶端會重發帶有 ACK 的請求,收不到服務端的 ACK 就會重發,如果服務端只是暫時繁忙,忙完就會收到大量客戶端重發的帶有 ACK 的請求,還可以繼續處理(全連接隊列有空位時),繼續建立完全連接
  • tcp_abort_on_overflow = 1:給客戶端響應 RST 復位報文,報告連接建立失敗,只有肯定全連接隊列會長時間溢出時才將策略設置為 1,盡快通知客戶端,否則就 設置為 0,可以增大連接建立的成功率

三、半連接隊列溢出

1. 查看半連接隊列情況:沒有命令可以直接查看,但是可以通過查看服務端處于 SYN_RECV 狀態的 TCP 連接,就是 TCP 的半連接數量

2. 半連接隊列溢出:客戶端發送大量 SYN 請求,但是一直不回復 ACK,服務端就會出現大量處于 SYN_RECV 的 TCP 導致半連接隊列溢出,無法處理后續的正常的請求,也就是 SYN 洪泛、SYN 攻擊、DDos 攻擊

3. 調大半連接隊列的大小 TODO

4. 如何防止洪泛攻擊?

  • 增大半連接隊列:同時增大全連接隊列,因為半連接隊列的大小會受到全連接的隊列大小的影響(半連接隊列的大小具體要看源碼)
  • 開啟 tcp_syncookies 功能,在發生溢出時不會丟棄連接,而是根據 syncookies 判斷連接是否建立成功
  • 減少 SYN+ACK 重傳次數:收到 SYN 攻擊時,就會有大量處于 SYN_RECV 狀態的 TCP 連接,處于這個狀態的 TCP 連接會重傳 SYN+ACK 報文,當重傳次數達到上限就會斷開連接,減少重傳次數,加快斷開連接的速度

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14579.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14579.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14579.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CSS基礎(第二天)

Emmet語法 快速生成HTML結構語法 1. 生成標簽 直接輸入標簽名 按tab鍵即可 比如 div 然后tab 鍵&#xff0c; 就可以生成 <div></div> 2. 如果想要生成多個相同標簽 加上 * 就可以了 比如 div*3 就可以快速生成3個div 3. 如果有父子級關系的標簽&#xff0c;可以…

算法刷題筆記 數的范圍(C++實現)(二分法重要例題)

文章目錄 題目描述題目思路題目代碼&#xff08;C&#xff09;題目感想 題目描述 給定一個按照升序排列的長度為n的整數數組&#xff0c;以及q個查詢。對于每個查詢&#xff0c;返回一個元素k的起始位置和終止位置&#xff08;位置從0開始計數&#xff09;。如果數組中不存在該…

Docker【2】iptables 錯誤解決

iptables 錯誤解決 問題說明問題分析解決步驟1. 確保 iptables 模塊已加載2. 檢查和重啟 docker 服務3. 檢查 firewalld 狀態4. 重置 iptables 規則5. 查看和更新 Docker 配置 總結 問題說明 執行的 docker 命令如下&#xff0c;啟動 nginx 并設置宿主機端口 (8080) 與容器端口…

學習Uni-app開發小程序Day25

這一章學習了觸底加載更多阻止無效的網絡請求、分類列表存入Storage在預覽頁面讀取緩存展示、通過swiper的事件實現真正的壁紙預覽及切換 觸底加載更多阻止無效的網絡請求、load-more樣式的展現 前面已經學習了當列表觸底后&#xff0c;會繼續加載&#xff0c;當到最后一層后…

自動化測試--利用pytest實現整條業務鏈路測試

? 概述 前面一章講解了單個接口的測試&#xff0c;但是實際項目中&#xff0c;因為權限和登錄狀態的限制&#xff0c;大部分接口沒辦法直接訪問到&#xff0c;這時候我們想訪問到一個系統的接口&#xff0c;就需要模擬用戶登錄拿到用戶的token和所擁有的權限之后再將這些信息…

vivado2020.2創建hls仿真工程實現led閃爍

下載vivado2020.2后會有這個出現在桌面 點擊進入創建工程&#xff0c;這里注意不要有前面的\我再復制的時候復制錯了導致創建失敗 按f光標就會跳轉到下一個f開頭的函數處&#xff0c;要查找其他函數也同理 生成了一個synthesis summary文件 找到目錄下生成的.v文件 an 點…

Pod進階——資源限制以及探針檢查

目錄 一、資源限制 1、資源限制定義&#xff1a; 2、資源限制request和limit資源約束 3、Pod和容器的資源請求和限制 4、官方文檔示例 5、CPU資源單位 6、內存資源單位 7、資源限制實例 ①編寫yaml資源配置清單 ②釋放內存&#xff08;node節點&#xff0c;以node01為…

【知識蒸餾】多任務模型 logit-based 知識蒸餾實戰

一、什么是邏輯&#xff08;logit&#xff09;知識蒸餾 Feature-based蒸餾原理是知識蒸餾中的一種重要方法&#xff0c;其關鍵在于利用教師模型的隱藏層特征來指導學生模型的學習過程。這種蒸餾方式旨在使學生模型能夠學習到教師模型在特征提取和表示方面的能力&#xff0c;從…

有些錯誤,常犯常新、常新常犯:記錄一個使用element-plus的tooltip組件的錯誤

使用element-plus的tooltip組件&#xff0c;最開始的寫法是這樣的&#xff1a; <el-tooltipclass"box-item"effect"dark"content"tooltip content" ><el-button v-if"isDisabled" :underline"false" type"pr…

持續總結中!2024年面試必問 20 道 Redis面試題(五)

上一篇地址&#xff1a;持續總結中&#xff01;2024年面試必問 20 道 Redis面試題&#xff08;四&#xff09;-CSDN博客 九、Redis的同步機制了解么&#xff1f; Redis 的同步機制是其復制策略的核心部分&#xff0c;確保數據在主節點&#xff08;master&#xff09;和從節點…

【C語言】程序員自我修養之文件操作

【C語言】程序員自我修養之文件操作 &#x1f525;個人主頁&#xff1a;大白的編程日記 &#x1f525;專欄&#xff1a;C語言學習之路 文章目錄 【C語言】程序員自我修養之文件操作前言一.文件介紹1.1為什么使用文件1.2文件分類1.3二進制文件和文本文件 二.文件的打開和關閉2.…

桌面藏線大法

1有線改無線&#xff1a; 藍牙鼠標 藍牙鍵盤 藍牙耳機 2將排插貼到桌子底下 購物軟件上搜 3斷舍離 不要的電子產品統統扔掉 4 洞洞板和掛鉤 這個不用介紹了

爬蟲基本原理及requests庫用法

文章目錄 一、爬蟲基本原理1、什么是爬蟲2、爬蟲的分類3、網址的構成4、爬蟲的基本步驟5、動態【異步】頁面和靜態【同步】頁面6、請求頭 二、requests基本原理及使用1、chrome 抓包按鈕詳解1.1 Elements1.2 元素定位器1.3 Network1.4 All1.5 XHR1.6 Preserve log1.7 手機模式1…

暴雨信息液冷計算解決方案亮相CCIG 2024

5月24日&#xff0c;2024中國圖象圖形大會&#xff08;CCIG&#xff09;在陜西西安正式開幕。作為涵蓋圖像圖形各專業領域的綜合性的全國性學術會議&#xff0c;CCIG面向開放創新、交叉融合的發展趨勢&#xff0c;為圖像圖形相關領域的專家學者和產業界的同仁&#xff0c;搭建了…

Java+Spring+ MySQL + MyCat云HIS有哪些優勢?智慧醫療云(HIS)低成本與安全保障的完美結合

JavaSpring MySQL MyCat云HIS有哪些優勢&#xff1f;智慧醫療云(HIS)低成本與安全保障的完美結合 云HIS的優點包括節省成本、便捷高效、穩妥安全等。通過云HIS&#xff0c;醫療機構無需在本地建立機房、購買服務器和應用軟件&#xff0c;降低了硬件和人力成本。同時&#xff0…

虛擬化介紹

虛擬化介紹 概述概念特點優勢實現手段 虛擬化架構概述寄居虛擬化架構裸金屬虛擬化架構操作系統虛擬化架構混合虛擬化架構幾種虛擬化架構的比較虛擬化架構與虛擬化技術的關系 虛擬化技術分類服務器虛擬化技術分類 存儲虛擬化技術分類網絡虛擬化技術分類 服務器虛擬化技術處理器虛…

開源軟件 | 一文徹底搞懂許可證的定義、起源、分類及八大主流許可證,讓你選型不再頭疼

為什么開源軟件會存在許可證&#xff0c;許可證的起源與產生目的是為了解決什么問題&#xff1f;許可證的定義又是怎樣的&#xff1f;什么是Copyleft&#xff0c;與Copyright有何區別&#xff1f;開源軟件常見的許可證有哪些&#xff1f;這些許可證都有什么特點&#xff1f;接下…

[c++] 小游戲 能量1.0.1 版本 zty出品

大家好 緊急修改&#xff0c;發現判斷游戲是否結束部分有問題&#xff0c;緊急修改bug&#xff0c;對大家造成的不便我深感歉意&#xff0c;對不起 先贊后看 養成習慣 code&#xff1a; #include<bits/stdc.h> #include<windows.h> using namespace std; int rg…

Zabbix實現7x24小時架構監控

上篇&#xff1a;https://blog.csdn.net/Lzcsfg/article/details/138774511 文章目錄 Zabbix功能介紹Zabbix平臺選擇安裝Zabbix監控端部署MySQL數據庫Zabbix參數介紹登錄Zabbix WEBWEB界面概覽修改WEB界面語言添加被控主機導入監控模板主機綁定模板查看主機狀態查看監控數據解…

6.封裝讀寫游戲數據的功能

前置知識&#xff1a;5.模仿CheatEngine實現鎖血無敵功能&#xff08;封裝它的代碼&#xff09; 封裝功能.cpp文件 #include "封裝功能.h"GAMECheat::GAMECheat(unsigned pid, unsigned _baseAdr, unsigned _readTime) {readTime _readTime;baseAdr _baseAdr;hPr…