網絡協議:HTTP

本文將討論:

1、HTTP的基礎概念

2、HTTP的連接

3、HTTP的高速緩存

 

HTTP的基礎概念

 

早期的Internet,主要用的是FTP。後來,web飛速發展,佔據市場主體。所以,大多數公司都會有web站點。對於大多數用戶來說,web和internet是難以區分的。web由一個很大的文檔組成,稱爲web頁。用過internet能夠訪問這些文檔。用戶在使用web瀏覽器的時候,應用程序訪問並顯示web頁,聯絡web服務器並獲得頁的副本。由於給定的服務器(比如www.csdn.com)管理着多個web頁(淘寶店鋪),所以瀏覽的時候一定要說清楚。

 

每一個web頁都有唯一的名稱用來標示。這個名稱被統稱爲URL。URL的形式如下

 

以本人博客爲例,http://blog.csdn.net/qq_33225741。我們可以知道他的服務器是blog.csdn.net,文檔的名稱是/qq_33225741,使用的http協議。

 

瀏覽器和web服務器之間通信用的協議是HTTP,HTTP有以下特點:

 

1:HTTP在應用層操作,採用穩定的、面向連接的傳輸協議。但是又不具備可靠性和重傳機制(與TCP有一定區別);

2:請求相應機制,通常是瀏覽器像服務器發送http請求;

3:雙向傳輸:瀏覽器請求服務器,服務器傳回web頁,同時瀏覽器能夠對web頁修改並再傳回給服務器。

4:支持高速緩存爲了減少相應時間,瀏覽器將接受的所有web頁放入高速緩存。再次訪問的時候會詢問服務器該頁是否被修改,如果沒有,就從緩存中直接獲取。

5:支持代理。

 

 

HTTP的連接

 

要說HTTP的連接,就需要從HTTP的GET請求開始說起。

還是回到http://blog.csdn.net/qq_33225741。當我們輸入這個URL之後,瀏覽器會向blog.csdn.net這個服務器發送一個GET請求。但是,服務器都是以IP地址來命名的,怎麼辦呢?系統會先把這個服務器地址通過DNS翻譯成對應的IP地址,然後再向服務器發送請求。這樣就建立起連接了。建立連接之後,會發送路徑/qq_33225741。由於已經建立連接,所以此時就不需要再發送絕對地址了,發送相對地址即可。服務器收到請求之後會把相應的web頁返回回來,這樣我們就能夠瀏覽相應的內容了。

 

HTTP協議在經過發展之後由原來的短連接模式變成了長連接。我們可能會想:短連接多好,不擠佔服務器的資源。這種想法是錯誤的,下面來具體討論一下。

 

我們知道,TCP在處理糊塗窗口多數情況下是用的delay ack的方式。即使在建立連接的過程還是使用了這種方法。很明顯,當訪問量到達一定程度,這將佔掉不小的時間。接下來,如果你有剖析過linux關於套接字通信的源碼,你就會發現,在建立連接的過程中會使用相當一部分的資源,不管是服務器端還是客戶端都是如此。這又佔用了一部分資源。

 

我們再來看一下HTTP默認的帶有流水線的長連接:在建立連接之後,每遇到一個對象(比如新的link,或者是多媒體文件等),就會向服務器發送一個請求。服務器就將所屬對象返回回來。link可以放到緩存裏,當前頁面的多媒體文件就一流水線的方式一個個返回。在一定時間沒有收到請求後,自動斷開連接。長短連接一比較,就不難做出選擇了。

 

HTTP的高速緩存

 

高速緩存的目的是提高效率,通過消除不必要的傳輸,減少等待時間和工作量。高速緩存最明顯的就是存儲。在訪問web頁的時候,瀏覽器或者代理服務器將副本存在磁盤上,以後請求同一頁的時候可以縮短查找過程。接下來就是從緩存裏獲得頁面副本。所以高速緩存的重點在於數據項保留在緩存的時間。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章