1. 程式人生 > >http和Tcp的長連線和短連線

http和Tcp的長連線和短連線

轉自:https://www.cnblogs.com/fubaizhaizhuren/p/7523374.html

  • http協議和tcp/ip 協議的關係

(1) http是應用層協議,tcp協議是傳輸層協議,ip協議是網路協議。
(2) IP協議主要解決網路路由和定址問題
(3) tcp協議主要解決在IP層協議之上,如何可靠的傳輸資料,即接收端收到的資料包的大小和順序,和傳送端保持一致。tcp協議是可靠的面相連線的。

  • 如何理解http協議是沒有狀態的

(1) http協議是無狀態的,指的是http協議對於事務處理沒有記憶功能,客戶端向服務端請求完資料之後,服務端不知道客戶端是什麼狀態。

  • 什麼是長連線?短連線?

http的長連線和短連線,本質上是tcp層的長連線和短連線
(1) http 1.0 預設使用短連線,就是,客戶端和服務端每進行一次http操作,就建立一次連線,任務結束就中斷連線。如果請求的html中有網路js和圖片,則需要新建連線去取。
client發起請求--建立連線--server響應請求---傳送訊息--關閉連線
建立連線--資料傳輸--關閉連線

(2) http 1.1 預設使用長連線,在使用的http協議,在響應頭會加上 Connection:keep-alive,當一個網頁開啟完成之後,連線不會馬上關閉,再次訪問這個服務時,
會繼續使用這個長連線,而是在一段時間後關閉,這個時間可以再瀏覽器設定。
建立連線--資料傳輸......保持連線......資料傳輸--關閉連線

  • TPC短連線

當網路通訊使用tcp協議時,在真正的讀寫操作前,需要完成3次握手,來建立連線。當讀寫完成時,需要四次握手來釋放連線,每個連線的建立和釋放都是需要資源和時間的,所以長連線比短連線
更節省資源,效率更高(RPC比http高效的原因)

  • RPC比HTTP請求快的原因

(1)http使用http協議,rpc使用tcp協議,比http少了應用層,表示層,會話層,這3層
(2)rpc使用長連線,當網路通訊使用tcp協議時,在真正的讀寫操作前,需要完成3次握手,來建立連線。當讀寫完成時,需要四次握手來釋放連線,每個連線的建立和釋放都是需要資源和時間的,所以長連線比短連線
更節省資源,效率更高

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

(1)長連線,可以省去較多的tpc建立和關閉操作,減少資源的浪費,節約時間。長連線多用於操作頻繁,點對點的通訊,而且連線數不能太多。資料庫的連線就是使用長連線,如果用短連線頻繁通訊會造成socke錯誤
,而且頻繁的Socket建立和銷燬也是對資源的消耗比較大。

(2)短連線,短連線對於伺服器來說管理較為簡單,存在的連線都是有用的連線,不需要額外的控制手段,web網站一般使用短連線,因為長連線對服務端來說會消耗一定資源,而像WEB網站這麼頻繁的成千上萬甚至上億客戶端的連線用短連線會更省一些資源,如果用長連線,而且同時有成千上萬的使用者,如果每個使用者都佔用一個連線的,對資源消耗過大

  • tcp的keep-alive和http人Keep-alive

(1) Tcp的keep-alive是j檢查當前tcp是否存活,表現就是當一個連線在一段時間沒有資料傳輸是,一方會發一個心跳包,果對方有回包則表明當前連線有效,繼續監控。
這個“一段時間”可以設定。
WinHttp庫的設定:
WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL
Sets the interval, in milliseconds, to send a keep-alive packet over the connection. The default interval is 30000 (30 seconds). The minimum interval is 15000 (15 seconds). Using WinHttpSetOption to set a value lower than 15000 will return with ERROR_INVALID_PARAMETER

(2) http的Keep-alive是讓一個tcp連線活久點。在瀏覽器設定