HTTP 持久連線
在介紹持久連線之前,先簡單介紹一下瀏覽器與HTTP伺服器建立TCP連線的簡單過程(三次握手):
(1).客戶端向伺服器傳送一個小的冗餘訊息。
(2).伺服器向客戶端確認並響應以一個小的冗餘訊息。
(3).最後是客戶端向伺服器回確認。
往返時間(Round Trip Time,簡稱RTT)是分組從客戶主機遊動到伺服器主機再返回客戶主機所花的時間。
RTT包括分組傳播延遲、在中間路由器和交換機上的分組排隊延遲以及分組處理延遲。
前兩次握手結束所花費的時間是一個RTT,此時客戶端將HTTP請求資訊傳送到TCP連線中,客戶端同時將第三次握手確認捎帶在包含這個資訊的資料分節中傳送出去。最後,伺服器接收到請求資訊之後,會將響應內容傳送到TCP連線中,伺服器同時將早前收到的客戶請求的確認捎帶在包含該響應的資料分節中傳送出去。
圖示如下:
完成這麼一個互動,總體所花費的時間大約為2個RTT加上響應資料傳輸時間。
非持久連線和持久連線:
客戶端發出請求,伺服器端對每個請求進行響應。
對於這些請求|響應,如果每次都經過一個單獨的TCP連線,稱為非持久連線。反之,如果每次都經過相同的TCP連線進行傳送,稱為持久連線,也就是多個請求和響應可以利用同一個TCP連線,而不是每一次請求響應都要新建一個TCP連線。考慮到每次TCP(每開始一個TCP連線都是慢啟動)連線的高消耗,永續性連線好處不言而喻。
HTTP1.1協議預設開啟持久連結,截圖如下:
當然持久連線不會無限期的保持,通常,HTTP伺服器在某個連線閒置一段特定時間後關閉它,而這段時間通常是可以配置的。下面是永續性連線和非持久連線對比圖示:
上面圖示很好地展示了兩者的區別,效能的差別也就得以體現。
相關文章
- Http持久連線與HttpClient連線池HTTPclient
- Socket連線和Http連線HTTP
- HTTP長連線HTTP
- HTTP連線池HTTP
- 資料庫持久連線理解資料庫
- http的長連線和短連線HTTP
- http Socket長連線HTTP
- HTTP非持續連線和持續連線HTTP
- HTTP長連線和短連線原理淺析HTTP
- 圖解 HTTP 連線管理圖解HTTP
- HTTP 長連線問題HTTP
- HTTP長連線、短連線究竟是什麼?HTTP
- Http和Socket連線區別HTTP
- 連線Http Server的程式碼HTTPServer
- LVS(五)LVS的持久連線
- 一文讀透HTTP的長連線和短連線HTTP
- 最近學習了Http連線池HTTP
- http連線複用進化論HTTP
- HTTP代理的兩種連線方式HTTP
- GOLANG探測HTTP連線斷開GolangHTTP
- http長短連線和長短輪詢HTTP
- HTTP協議中的短輪詢、長輪詢、長連線和短連線HTTP協議
- WebSocket 是什麼原理?為什麼可以實現持久連線?Web
- WebSocket 是什麼原理?為什麼可以實現持久連線Web
- 持久化儲存與HTTP快取持久化HTTP快取
- Http 和TCP的關係,TCP長連線和短連線有什麼區別?HTTPTCP
- php curl 連線 EMQ http_api的請求PHPMQHTTPAPI
- 談談HTTP協議中的短輪詢、長輪詢、長連線和短連線HTTP協議
- HTTP客戶端連線,選擇HttpClient還是OkHttp?HTTP客戶端client
- http協議讀書筆記2-連線管理HTTP協議筆記
- gitlab兩種連線方式:ssh和http配置介紹GitlabHTTP
- HttpClient4.X 升級 入門 + http連線池使用HTTPclient
- WebSocket 是什麼原理?為什麼可以實現持久連線?有點懵!!!Web
- LVS負載均衡下session共享的實現方式-持久化連線負載Session持久化
- 例項解析外連線 內連線 自連線 全連線
- SQL的四種連線:內連線 左外連線 右外連線 全連線SQL
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- 內連線、外連線