1. 程式人生 > >HTTP協議中的長連線與短連線

HTTP協議中的長連線與短連線

長連線與短連線

  • 長連線:client方與server方先建立連線,連線建立後不斷開,然後再進行報文傳送和接收。這種方式下由於通訊連線一直存在。此種方式常用於P2P通訊。
  • 短連線:Client方與server每進行一次報文收發交易時才進行通訊連線,交易完畢後立即斷開連線。此方式常用於一點對多點通訊。C/S通訊。

長連線與短連線的操作過程

短連線的操作步驟是:

建立連線——資料傳輸——關閉連線...建立連線——資料傳輸——關閉連線

長連線的操作步驟是:

建立連線——資料傳輸...(保持連線)...資料傳輸——關閉連線

長連線與短連線的使用時機

短連線多用於操作頻繁,點對點的通訊,而且連線數不能太多的情況。每個TCP連線的建立都需要三次握手,每個TCP連線的斷開要四次握手。

如果每次操作都要建立連線然後再操作的話處理速度會降低,所以每次操作後,下次操作時直接傳送資料就可以了,不用再建立TCP連線。例如:資料庫的連線用長連線,如果用短連線頻繁的通訊會造成socket錯誤,頻繁的socket建立也是對資源的浪費。

Web網站的http服務一般都用短連線,因為長連線對於伺服器來說要耗費一定的資源。像web網站這麼頻繁的成千上萬甚至上億客戶端的連線用短連線更省一些資源。試想如果都用長連線,而且同時用成千上萬的使用者,每個使用者都佔有一個連線的話,可想而知伺服器的壓力有多大。所以併發量大,但是每個使用者又不需頻繁操作的情況下需要短連線。

總之:長連線和短連線的選擇要根據需求而定。

長連線和短連線的產生在於client和server採取的關閉策略,具體的應用場景採用具體的策略,沒有十全十美的選擇,只有合適的選擇。

HTTP協議長連線、短連線總結

長連線與短連線的不同主要在於client和server採取的關閉策略不同。短連線在建立連線以後只進行一次資料傳輸就關閉連線,而長連線在建立連線以後會進行多次資料資料傳輸直至關閉連線(長連線中關閉連線通過Connection:closed頭部欄位)。

二者關閉策略的不同,就產生了長連線的優點:

  • 通過開啟、關閉更少的TCP連線,節約CPU時間和記憶體
  • 通過減少TCP開啟引起的包的數目,降低網路阻塞。

二者所應用的具體場景不同。短連線多用於操作頻繁、點對點的通訊,且連線數不能太多的情況。資料庫的連線則採用長連線。