天天看點

和我一起學《HTTP權威指南》——連接配接管理

幾乎所有的http通信都是由tcp/ip承載的。

浏覽網頁時用戶端執行的操作:

如浏覽<code>http://www.joes-hardware.com:80/power-tools.html</code>

浏覽器收到這個url時,會執行如下圖的步驟。

第1-3步會将伺服器的ip位址和端口号從url中分離出來

第4步建立到web伺服器的tcp連接配接,在第5步通過這條連接配接發送一條請求封包

第6步讀取響應,第7步關閉連接配接

和我一起學《HTTP權威指南》——連接配接管理

http連接配接實際上是tcp連接配接和一些使用連接配接的規則

tcp連接配接是網際網路上的可靠連接配接,tcp為http提供一條可靠的比特傳輸管道,從tcp連接配接一端以原有的順序正确的傳送出來

tcp的資料是通過ip分組的小資料塊發送的。

http就是<code>http over tcp over ip</code>這個協定棧中最頂層的協定了。而https則是在http和tcp之間插入一個(tls或ssl)的密碼加密層
和我一起學《HTTP權威指南》——連接配接管理

http傳送封包,以流的形式将封包資料的内容通過一條打開的tcp連接配接按序傳輸。tcp收到資料流後,将資料流砍成段(小資料塊),并将段封裝到ip分組中,通過網際網路傳輸。

和我一起學《HTTP權威指南》——連接配接管理

tcp通過端口号來保持tcp連接配接的正确運作

ip位址和端口号類似于公司總機号碼和分機号

tcp連接配接通過4個值來識别:

這四個值唯一确定一條連接配接。

和我一起學《HTTP權威指南》——連接配接管理

缺點:

tcp的性能時延疊加

使用者對網頁的加載速度一無所知

和我一起學《HTTP權威指南》——連接配接管理

在有限的帶寬内,并行加載多個對象,帶來的性能提升很小

打開大量連接配接會消耗很多記憶體資源

浏覽器将并行連接配接的總數限制為一個較小的數值。伺服器可随意關閉來自特定用戶端的超量連接配接。

站點本地性(site locality)

用戶端經常打開同一個站點的連接配接,初始化對某伺服器的http請求的應用程式可能在不久後對那台伺服器發起更多請求

持久連接配接

http/1.1(以及http/1.0的各種增強版本)允許http裝置在事務處理結束後将tcp連接配接保持打開狀态,以便未來的http請求重用現存的連接配接。

避免緩慢的連接配接建立階段

避免慢啟動的擁塞适應階段

易累積大量的空閑連接配接,耗費本地和伺服器的資源

持久連接配接和并行連接配接配合使用可能是最高效的方式。

和我一起學《HTTP權威指南》——連接配接管理

現在很多web應用程式:少量的并行連接配接,每個都是持久連接配接。

兩種類型:

<code>http/1.0+ "keep-alive"</code>

<code>http/1.1 "persistent"</code>

所有的用戶端、伺服器或代理都可以在任意時刻關閉一條tcp傳輸連接配接。

雙向的,每端都有一個輸入一個輸出隊列

和我一起學《HTTP權威指南》——連接配接管理
和我一起學《HTTP權威指南》——連接配接管理

關閉連接配接的輸出信道是安全的,連接配接另一端的對等實體從緩沖區讀出所有資料後收到通知,說明流結束。它就知道流關閉了。

關閉連接配接的輸入信道比較危險,向已關閉的輸入信道發送資料,作業系統會向另一端回送一條<code>tcp連接配接被重置的封包</code>

和我一起學《HTTP權威指南》——連接配接管理

原文位址:http://www.cnblogs.com/johntsai/p/5197646.html

繼續閱讀