什么是HTTP長連接、短連接?誰更能抗DoS攻擊?

想象你在快餐店點餐:

  1. 你:“一個漢堡”
  2. 收銀員:“好的,15元”
  3. 交易結束,你離開隊伍
  4. 你想加杯可樂,重新排隊
  5. 你:“一杯可樂”
  6. 收銀員:“好的,8元”
  7. 再次離開…

這種每次溝通后立即斷開的模式,就是HTTP短連接的日常寫照。

1. 短連接:頻繁握手的代價

短連接工作流程:

  1. 建立TCP連接(三次握手)
  2. 發送HTTP請求
  3. 接收HTTP響應
  4. 立即斷開連接(四次揮手)

致命痛點:加載一個含20張圖片的網頁時,瀏覽器需重復20次握手揮手流程!

2. 長連接:咖啡店會員的智慧

現在換到熟悉的咖啡店:

  1. 你:“我是會員小明”
  2. 店員:“歡迎!今天需要什么?”
  3. 你:“一杯拿鐵”
  4. 店員:“好的,馬上做”
  5. 你:“再加個牛角包”
  6. 店員:“已記錄,稍等”
  7. 你繼續點單直到說"結賬"

這種持續會話復用通道的模式,正是HTTP長連接的精髓。

HTTP長連接時序圖

3. 技術實現揭秘

HTTP版本與長短連接支持情況

核心機制

  • 協議協商:通過HTTP頭部控制(HTTP/1.0、HTTP/1.1)

    GET / HTTP/1.1
    Host: www.example.com
    Connection: keep-alive  # 請求長連接HTTP/1.1 200 OK
    Keep-Alive: timeout=30, max=100  # 服務器聲明超時30秒,最多100請求
    

    HTTP長連接工作機制

  • 請求復用:同一TCP連接傳輸多個HTTP事務

    HTTP/2在長連接基礎上實現多請求并行

  • 應用層超時:Nginx等服務器控制(如30秒空閑關閉)

4. 性能視角:長連接完勝

對比項短連接長連接
加載含50資源的網頁50次握手+50次揮手1次握手+1次揮手
延遲消耗高(數百ms級)極低(ms級)
服務器壓力CPU占用高連接數減少80%
適用場景低頻請求場景現代Web應用標配

案例:某電商網站在啟用HTTP/2長連接后:

  • 頁面加載時間從3.2s → 1.4s
  • 服務器CPU使用率下降40%

長連接的管理

長連接并非永久保持,服務器通過精妙機制控制資源:

# Nginx配置示例
http {keepalive_timeout 30s;  # 超時自動關閉keepalive_requests 100; # 最多服務100請求
}

當遇到以下情況時連接終止:

  1. 超時(如30秒無活動)
  2. 達到最大請求數
  3. 客戶端主動關閉
  4. 傳輸錯誤

5. 安全視角:長連接完敗

連接維持資源消耗

資源類型長連接占用短連接占用
內存30-50KB/連接瞬時占用后釋放
文件描述符長期占用短暫占用
CPU心跳包持續消耗僅握手時消耗

實驗數據:Apache服務器維持10,000長連接需消耗 500MB內存,而同等短連接攻擊僅消耗 50MB

防御策略

# 使用iptables限制單IP連接數
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 50 -j DROP

攻擊面對比

攻擊類型長連接表現短連接表現
SYN Flood高危(需多次握手)高危(每次請求都握手)
HTTP Flood極高危(單連接多請求)中危(需頻繁重建連接)
Slowloris極高危(長期占用連接)免疫(連接立即釋放)
資源耗盡攻擊高危(內存/描述符占用)中危(瞬時壓力大)

6. HTTP長連接 vs TCP長連接

HTTP長連接是建立在TCP連接的基礎上,HTTP/2 基于 TCP,但HTTP/3 基于 QUIC(UDP)。

HTTP長連接依賴TCP長連接

關鍵差異維度對比

特性TCP長連接HTTP長連接
協議層級傳輸層(OSI第4層)應用層(OSI第7層)
控制主體操作系統內核Web服務器/客戶端
維持機制TCP Keepalive探針HTTP報文傳輸
超時時間小時級(默認2小時)秒級(通常30-60秒)
數據傳輸純ACK包(無應用數據)攜帶實際HTTP請求/響應
配置位置操作系統內核參數Web服務器配置文件
連接復用對象任意應用層協議僅HTTP協議

TCP長連接時序圖

7. 結語:連接的藝術

當你在微信聊天時持續發送消息,當股票軟件實時刷新數據,背后都是長連接在默默支撐。而瀏覽靜態宣傳頁時,短連接仍在發揮余熱。

技術選擇啟示

  • 移動端APP/實時系統:必用長連接(WebSocket基于此)
  • 靜態內容/CDN分發:智能組合兩種模式
  • 安全防護:長連接需配套限流策略

關注我,帶你看懂技術本質!用最接地氣的"人話"拆解硬核知識,讓復雜概念變得簡單易懂 🔥

每周更新

  • 💡 技術原理圖解:一圖勝千言,直觀呈現技術架構
  • 🛠? 實戰案例解析:結合真實項目經驗,分享避坑指南
  • 🤖 前沿技術追蹤:第一時間解讀AI、區塊鏈等新興領域

適合人群

  • ? 技術小白想系統入門
  • ? 開發者想提升技術深度
  • ? 產品經理需要技術洞察
  • ? 所有對科技充滿好奇的人

在這里你能獲得

  • ? 復雜技術簡單化
  • ? 抽象概念具象化
  • ? 理論知識實用化
  • ? 學習路徑清晰化

點擊關注,開啟你的技術認知升級之旅! 🚀

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

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

相關文章

微軟徽標認證是什么?如何快速獲取驅動簽名?

在Windows系統中安裝硬件驅動時,是否遇到過“無法驗證發布者”的警告?這正是驅動數字簽名在背后發揮作用。對于軟件開發者而言,驅動數字簽名不僅是系統兼容性的保障,更是企業品牌信任度的核心。一、驅動數字簽名的核心作用驅動數字…

Apache Ignite緩存基本操作

這段內容主要講解了 Apache Ignite 中緩存(IgniteCache)的基本操作,包括獲取緩存、創建緩存、銷毀緩存、執行原子操作以及異步操作等。下面我將用中文對這些內容進行詳細解釋,幫助你更好地理解。一、獲取緩存實例(Gett…

最新基于R語言結構方程模型分析與實踐技術應用

現代統計學理論和方法的不斷完善,使科研工作對統計方法的要求也越來越高,面對紛繁復雜的數據,如何選擇最為合適的數據分析方法已成為科研工作者,尤其是廣大剛處于科研生涯起步階段的研究生們最為棘手問題。隨著科學的發展&#xf…

物聯網_TDengine_EMQX_性能測試

一、Tdengine接口開發文檔 1、數據庫 1.創建數據庫 URL /dp/createdb/ method post 請求示例 {"db_name":"demo01" // 必填 }響應示例 // 成功 {"code": 1,"data": {"成功創建數據庫": "demo04"},"error…

從分析到優化:Amazon Q CLI 助力 EKS 網絡調用鏈剖析與運維實踐

1. 引言 在 Amazon EKS(Elastic Kubernetes Service)環境中,理解從 ALB(Application Load Balancer)到 Pod 的完整網絡調用鏈對運維人員至關重要。本文將展示如何利用 Amazon Q CLI 這一 AI 助手工具,通過…

Class10簡潔實現

Class10簡潔實現 import torch from torch import nn from d2l import torch as d2l# 輸入為28*28,輸出為10類,第1、2隱藏層256神經元 num_inputs, num_outputs, num_hiddens1, num_hiddens2 784, 10, 256, 256 # 第1個隱藏層丟棄率為0.2,第…

【多線程篇22】:ConcurrentHashMap的并發安全原理剖析

文章目錄一、HashMap 的“不安全”:問題的根源1. 數據結構回顧 (JDK 1.8)2. 并發下的致命缺陷:put 操作二、ConcurrentHashMap 的安全之道 (JDK 1.8)1. 核心數據結構2. 安全的 put 操作:分場景精細化加鎖3. 安全的 size() 計算:并…

【Java + Vue 實現圖片上傳后 導出圖片及Excel 并壓縮為zip壓縮包】

系統環境: Java JDK:1.8.0_202 Node.js:v12.2.0 Npm:6.9.0 Java后端實現 Controller /*** xxxx-導出* param response 返回信息體* param files 上傳的圖片文件* param param1 參數1* param param2 參數2*/PostMapping("/ex…

安科瑞:能源微電網助力工業園區“綠色”發展

朱以真近日,廈門市工業和信息化局印發工業園區綠色智慧微電網建設,擬開展全市工業園區綠色智慧微電網試點通知,那么對于如何實現綠色園區的建設是今天的話題。對工業園區綠色智慧微電網建設需求,其核心價值體現在“源-網-荷-儲-充…

VUE2 學習筆記3 v-on、事件修飾符、鍵盤事件

事件處理v-on用于事件交互。語法:v-on:要綁定的事件“事件觸發時執行的函數” (函數這里可以寫括號,也可以不寫,沒有影響)簡寫::事件觸發時要執行的函數,在Vue配置參數中,通過method…

變換域通訊系統CCSK的matlab仿真

CCSK(Cyclic Code Shift Keying)通信系統的MATLAB仿真。實現完整的CCSK調制、AWGN信道傳輸和解調過程,并計算了誤碼率(BER)。 % CCSK通信系統仿真 clear; clc; close all;% 參數設置 L 31; % m序列…

技術演進中的開發沉思-40 MFC系列:多線程協作

今天說說MFC的線程,當年用它實現中間件消息得心應手之時,可以實現一邊實時接收數據,一邊更新界面圖表圖文信息,順滑得讓人想吹聲口哨。 MFC 多線程它像給程序裝上了分身術,讓原本只能 “單任務跑腿” 的代碼&#xff0…

高速公路自動化安全監測主要內容

近年來,隨著社會經濟的快速發展,高速公路的通車里程不斷增加,交通流量日益增大。與此同時,高速公路交通事故數量也呈現出一定的增長趨勢。這些事故不僅造成了大量的人員傷亡和財產損失,還嚴重影響了社會的穩定和經濟的…

完美解決 Ubuntu 中自定義啟動器圖標重復的問題(以 MATLAB 為例)

如果你在 Ubuntu 上為 MATLAB、PyCharm、Android Studio 或其他第三方應用創建了自定義啟動器,并把它固定到了左側的 Dock 欄,你很可能遇到過這個令人抓狂的場景: 當你滿心歡喜地點擊固定的圖標啟動程序后,Dock 欄上竟然“憑空”冒…

一文讀懂深度模型優化器,掌握煉丹工具

深度模型優化器是訓練神經網絡的核心工具,其目標是高效地找到損失函數的最小值。從基礎的隨機梯度下降(SGD)到結合一階動量修正與兩階段更新的Ranger,優化器的發展始終圍繞著加速收斂、提升穩定性、適應參數差異和增強泛化能力四大…

關于虛擬機部署的k8s集群calico組件在開機恢復快照時的問題

在恢復虛擬機開機快照的時候總會出現各種的網絡問題,連接不到自己的443端口,集群狀態異常等等,繞一圈都發現不了問題,其實根本就沒問題。虛擬機環境再現,恢復快照后的k8s環境,nfs莫名宕掉提示此報錯&#x…

從感知到決策:虛擬仿真系統與視覺算法融合下的多路RTSP視頻接入技術探究

1?? 背景概述 隨著國防信息化和智能化進程的不斷加快,虛擬仿真系統 與 智能視覺算法平臺 正逐步成為現代化裝備研發、測試驗證與戰術訓練的重要技術支撐。相比傳統的靜態建模或離線推演,新一代作戰仿真與智能系統更強調 實時性、感知能力與動態交互&a…

Android app如果不適配Android 15會怎么樣

深度思考完成 用時49秒 首先,用戶的問題是:“Android app如果不適配Android 15會怎么樣?”我需要基于搜索結果來回答。 讓我回顧搜索結果: ?1:標題是“Android 15應用適配指南”,內容強調了不適配Androi…

Vue-21-利用Vue3的axios+Python的flask實現前后端交互功能

文章目錄 1 任務需求 2 前端 2.1 模板template 2.2 JS代碼script 2.3 Calculate.vue(子組件) 2.4 App.vue(根組件) 3 后端 3.1 導入模塊 3.2 創建應用實例 3.3 配置CORS 3.4 定義路由 3.5 處理請求 3.6 main.py 4 附錄 4.1 CORS 4.1.1 全局啟用CORS 4.1.2 限制允許的域名(更安…

動態規劃之最長回文子串

題目:最長回文子串 給你一個字符串 s,找到 s 中最長的 回文 子串。 示例 1: 輸入:s “babad” 輸出:“bab” 解釋:“aba” 同樣是符合題意的答案。 示例 2: 輸入:s “cbbd” 輸…