HTTP權威指南之連線管理

2022-01-19 21:57:47 字數 2829 閱讀 2702

tcp連線

世界上幾乎所有的 http 通訊都是由 tcp/ip 承載的, tcp/ip 是全球計算機及網路

裝置都在使用的一種常用的分組交換網路分層協議集。 客戶端應用程式可以開啟一

條 tcp/ip 連線, 連線到可能執行在世界任何地方的伺服器應用程式。 一旦連線建

立起來了, 在客戶 端和伺服器的計算機之間 交換的報文就永遠不會丟失、 受損或

失序。儘管報文不會丟失或受損, 但如果計算機或網路崩潰了, 客戶端和伺服器之間的通訊仍然會被斷開。

在這種情況下, 會通知客戶端和伺服器通訊中斷了。

tcp 為 http 提供了一條可靠 的位元傳輸管道。 從 tcp 連線一端填入的位元組會從另

一端以原有的順序、 正確地傳送出來

http 要傳送一條報文時, 會以流的形式將報文資料的內容通過一條開啟的 tcp 連

接按序傳輸。 tcp 收到資料流之後, 會將資料流砍成被稱作段的小資料塊, 並將段

封裝在 ip 分組中, 通過網際網路進行傳輸所有這些工作都是由 tcp/

ip 軟體來處理的, http 程式設計師什麼都看不到。

每個 tcp 段都是由 ip 分組承載, 從乙個 ip 位址傳送到另乙個 ip 位址的。 每個 ip

分組中都包括:

• 乙個 ip 分組首部(通常為 20 位元組) ;

• 乙個 tcp 段首部(通常為 20 位元組) ;

• 乙個 tcp 資料塊( 0 個或多個位元組)。

ip 首部包含了源和目 的 ip 位址、 長度和其他一些標記。 tcp 段的首部包含了 tcp

埠 號、 tcp 控制標記, 以及用於資料排序和完整性檢查的一些數字值。

保持tcp連線的正確執行

在任意時刻計算機都可以有幾條 tcp 連線處於開啟狀態。 tcp 是通過埠 號來保持

所有這些連線的正確執行的。

埠 號和雇員使用的**分機號很類似。 就像公司的總機號碼能將你接到前台, 而

分機號可以將你接到正確的雇員 位置一樣, ip 位址可以將你連線到正確的計算機,

而埠 號則可以將你連線到正確的應用程式上去。 tcp 連線是通過 4 個值來識別的:

< 源 ip 位址、 源埠 號、 目 的 ip 位址、 目 的埠 號 >

這 4 個值一起唯一地定義了一條連線。 兩條不同的 tcp 連線不能擁有 4 個完全相同

的位址元件值(但不同連線的部分元件 可以擁有相同的值)

http事務的時延有以下幾種主要原因。

(1 ) 客戶端首先需要根據 uri 確定 web 伺服器的 ip 位址和埠 號。 如果最近沒有對

uri 中的主機名進行訪問, 通過 dns 解析系統將 uri 中的主機名轉換成乙個 ip

位址可能要花費數十秒的時間 3。

(2) 接下來, 客戶端會向 伺服器傳送一條 tcp 連線請求, 並等待伺服器回 送乙個請

求接受應答。 每條新的 tcp 連線都會有連線建立時延。 這個值通常最多只有一

兩秒鐘, 但如果有數百個 http 事務的話, 這個值會快速地疊加上去。

(3) 一旦連線建立起來了, 客戶 端就會通過新建立的 tcp 管道來傳送 http 請求。

資料到達時, web 伺服器會從 tcp 連線中 讀取請求報文, 並對請求進行處理。網際網路傳輸請求報文,

以及伺服器處理請求報文都需要時間。

(4) 然後, web 伺服器會回送 http 響應, 這也需要花費時間。

這些 tcp 網路時延的大小取決於硬體速度、 網路和伺服器的負載, 請求和響應報文

的尺寸, 以及客戶端和伺服器之間的距離。 tcp 協議的技術複雜性也會對時延產生

巨大的影響。

最常見的tcp相關時延,

其中包括:

• tcp 連線建立握手;

• tcp 慢啟動擁塞控制;

• 資料聚集的 nagle 演算法;

• 用於捎帶確認的 tcp 延遲確認演算法;

• time_wait 時延和埠 耗盡。

tcp 連線握手需要經過以下幾個步驟。

(1) 請求新的 tcp 連線時, 客戶端要向伺服器傳送乙個小的 tcp 分組(通常是 40 ~

60 個位元組)。 這個分組中設定了乙個特殊的 syn 標記, 說明這是乙個連線請求。

(2) 如果伺服器接受了 連線, 就會對一些連線引數進行計算, 並向 客戶端回 送乙個

tcp 分組, 這個分組中 的 syn 和 ack 標記都被置位, 說明連線請求已被接受。

(3) 最後, 客戶端向伺服器回送一條確認資訊, 通知它連線已成功建立。

現代的 tcp 棧都允許客戶端在這個確認分組中傳送資料。

程式設計師永遠不會看到這些分組——這些分組都由 tcp/ip 軟體管理, 對其是不

可見的。 http 程式設計師看到的只是建立 tcp 連線時存在的時延。

通常 http 事務都不會交換太多 資料, 此時, syn/syn+ack 握手會產生乙個可測量的時延。

tcp 連線的 ack 分組通常都足夠大, 可以承載整個 http 請求報文,而且很多 http 伺服器響應報文都可

以放入乙個 ip 分組中 去( 比如, 響應是包含了裝飾性圖 片的小型 html 檔案, 或

者是對瀏覽器快取記憶體請求產生的 304 not modified 響應)。

HTTP權威指南 連線管理(2)

知識點 特點 連線時延的重疊 並行連線讓使用者感覺 更快 了 因為多個元件物件同時出現在螢幕上時,使用者能夠看到載入的進展 http 1.1 以及 http 1.0 的各種增強版本 允許 http 裝置在事務處理結束 之後將 tcp 連線保持在開啟狀態,以便為未來的 http 請求重用現存的連線。在...

HTTP權威指南閱讀筆記四 連線管理

http通訊是由tcp ip承載的,http緊挨著tcp,位於其上層,所以http事務的效能很大程度上取決於底層tcp通道的效能。http事務的時延 如圖 http事務的時延有以下幾種主要原因。1 客戶端首先需要根據uri確定web伺服器的ip位址和埠號。如果最近沒有對uri中的主機名進行訪問,通過...

HTTP權威指南閱讀筆記四 連線管理

http通訊是由tcp ip承載的,http緊挨著tcp,位於其上層,所以http事務的效能很大程度上取決於底層tcp通道的效能。http事務的時延 如圖 http事務的時延有以下幾種主要原因。1 客戶端首先需要根據uri確定web伺服器的ip位址和埠號。如果最近沒有對uri中的主機名進行訪問,通過...