HTTP的長連線和短連線

2021-08-28 07:24:36 字數 1382 閱讀 2771

http的長連線和短連線本質上是tcp長連線和短連線。http屬於應用層協議.

短連線:瀏覽器和伺服器每進行一次http操作,就建立一次連線,但任務結束就中斷連線。

長連線:當乙個網頁開啟完成後,客戶端和伺服器之間用於傳輸http資料的 tcp連線不會關閉,如果客戶端再次訪問這個伺服器上的網頁,會繼續使用這一條已經建立的連線。keep-alive不會永久保持連線,它有乙個保持時間,可以在不同的伺服器軟體(如apache)中設定這個時間。實現長連線要客戶端和服務端都支援長連線。

tcp短連線:client向server發起連線請求,server接到請求,然後雙方建立連線。client向server傳送訊息,server回應client,然後一次讀寫就完成了,這時候雙方任何乙個都可以發起close操作,不過一般都是client先發起 close操作。短連線一般只會在 client/server間傳遞一次讀寫操作

tcp長連線:client向server發起連線,server接受client連線,雙方建立連線。client與server完成一次讀寫之後,它們之間的連線並不會主動關閉,後續的讀寫操作會繼續使用這個連線。

tcp的保活功能主要為伺服器應用提供。如果客戶端已經消失而連線未斷開,則會使得伺服器上保留乙個半開放的連線,而伺服器又在等待來自客戶端的資料,此時伺服器將永遠等待客戶端的資料。保活功能就是試圖在服務端器端檢測到這種半開放的連線。

如果乙個給定的連線在兩小時內沒有任何動作,伺服器就向客戶傳送乙個探測報文段,根據客戶端主機響應探測4個客戶端狀態:

長連線和短連線的優點和缺點

由上可以看出,長連線可以省去較多的tcp建立和關閉的操作,減少浪費,節約時間。對於頻繁請求資源的客戶端適合使用長連線。在長連線的應用場景下,client端一般不會主動關閉連線,當client與server之間的連線一直不關閉,隨著客戶端連線越來越多,server會保持過多連線。這時候server端需要採取一些策略,如關閉一些長時間沒有請求發生的連線,這樣可以避免一些惡意連線導致server端服務受損;如果條件允許則可以限制每個客戶端的最大長連線數,這樣可以完全避免惡意的客戶端拖垮整體後端服務。

短連線對於伺服器來說管理較為簡單,存在的連線都是有用的連線,不需要額外的控制手段。但如果客戶請求頻繁,將在tcp的建立和關閉操作上浪費較多時間和頻寬。

長連線和短連線的產生在於client和server採取的關閉策略。不同的應用場景適合採用不同的策略。

資料庫的連線用長連線, 如果用短連線頻繁的通訊會造成socket錯誤,而且頻繁的socket 建立也是對資源的浪費。 而像web**的http服務一般都用短鏈結,因為長連線對於服務端來說會耗費一定的資源

HTTP 長連線和短連線

1.http協議與tcp ip協議的關係 http的長連線和短連線本質上是tcp長連線和短連線。http屬於應用層協議,在傳輸層使用tcp協議,在網路層使用ip協議。ip協議主要解決網路路由和定址問題,tcp協議主要解決如何在ip層之上可靠的傳遞資料報,使在網路上的另一端收到發端發出的所有包,並且順...

http的長連線和短連線

很久之前就聽說過長連線的說法,而且還知道http1.0協議不支援長連線,從http1.1協議以後,連線預設都是長連線。但終究覺得對於長連線一直懵懵懂懂的,有種抓不到關鍵點的感覺。今天通過一番研究,終於明白了這其中的奧秘。而之前,也看過長連線相關的內容,但一直都是雲裡霧裡的。這次之所以能在這麼短的時間...

http 長連線 短連線

http短連線 非持久連線 是指,客戶端和服務端進行一次http請求 響應之後,就關閉連線。所以,下一次的http請求 響應操作就需要重新建立連線。http長連線 持久連線 是指,客戶端和服務端建立一次連線之後,可以在這條連線上進行多次請求 響應操作。持久連線可以設定過期時間,也可以不設定。http...