HTTP連線管理的那些事兒

2021-07-11 18:39:28 字數 1445 閱讀 8499

http連線實際上就是tcp連線和一些使用連線的規則。tcp為http提供了一條可靠的位元傳輸管道。從tcp連線一端填入的位元組會從另一端以原有的順序、正確地傳送出來。

e.g.

1. 瀏覽器解析出主機名blog.csdn.net

2. 瀏覽器查詢這個主機的ip位址(dns)101.200.96.31

3. 瀏覽器獲得埠號(80)

4. 瀏覽器發起到101.200.96.31埠80的連線

5. 瀏覽器向伺服器傳送一條http get報文

6. 瀏覽器從伺服器讀取http響應報文

7. 瀏覽器關閉連線

tcp連線通過4個值《源ip、源埠、目的ip、目的埠》來識別每一條連線。

todo: 新增常見套接字api的說明

更詳細的說明可參見 unix網路程式設計:套接字程式設計

用於捎帶確定的tcp延遲確定演算法

time_wait時延和埠耗盡

在事務處理結束之後仍然保持在開啟狀態的tcp連線被稱為持久連線。重用已對目標伺服器開啟的空閒持久連線,就可以避開緩慢的連線建立階段。而且,已經開啟的連線還可以避免慢啟動的擁塞適應階段,以便更快速地進行資料的傳輸。

持久連線與並行連線配合使用可能是最高效的方式。持久連線有兩種型別:http/1.0+的keep-alive連線,以及現代的http/1.1的persistent連線。

keep-alive連線:

通過形如

connection : keep-alive

keep-alive: max=5, timeout=120

來指定持久連線。上述例子還說明伺服器最多還會為另外5個事務保持連線的開啟狀態,或者將開啟狀態保持到連線空閒了2分鐘之後。

2. keep-alive和(不理解connection首部的)**一起使用時,會引發請求被忽略的情況,所以現代的**都不**connection首部和所有名字出現在connection值中的首部。可通過插入proxy-connection來解決。

http/1.1 持久連線:

與http/1.0+的keep-alive連線不同,http/1.1持久連線在預設情況下是啟用的。若要在事務處理結束之後將連線關閉,http/1.1應用程式必須向報文中顯示新增乙個connection:close首部。

持久連線的限制和規則

http/1.1允許在持久連線上可選的使用請求管道。在響應到達之前,可以將多條請求放入佇列。

http權威指南

HTTP連線管理

http通訊是由tcp ip承載的,tcp ip是全球計算機及網路裝置都在使用的一種常用的分組交換網路分層協議集。http連線實際上就是tcp連線和一些使用連線的規則。tcp的資料是通過名為ip分組 或ip資料報 的小資料塊來傳送的。http要傳送一條報文時,會以流的形式將報文資料的內容通過一條開啟...

http學習 http的連線管理

http 協議最初 0.9 1.0 是個非常簡單的協議,通訊過程也採用了簡單的 請求 應答 方式。它底層的資料傳輸基於 tcp ip,每次傳送請求前需要先與伺服器建立連線,收到響應報文後會立即關閉連線。因為客戶端與伺服器的整個連線過程很短暫,不會與伺服器保持長時間的連線狀態,所以就被稱為 短連線 s...

日常 HTTP連線管理

http連線管理 1.誤解的connection首部 當http報文經過中間客戶端到服務端中間的各種 裝置時,對標籤中列出的頭資訊進行刪除,close是事務結束後關掉此條連線 2.消除序列化的時延 並行連線 多條tcp連線發起併發的http請求 持久連線 重用tcp連線,消除連線和關閉時延 管道化連...