天天看點

計算機網絡2.2—Web和HTTP計算機網絡中的WEB和HTTP

計算機網絡中的WEB和HTTP

2.2.1 Http概況

Web的應用層協定是超文本傳輸協定(Http),它是Web的核心。Http由兩個程式實作,一個是用戶端,一個是服務端。它們運作在不同的端系統中,通過交換HTTP封包進行通信。

Web頁面是由對象組成的。一個對象隻是一個檔案(下面會舉例)。多數Web頁面會有一個HTML基本檔案以及幾個引用的對象。比如一個網頁中有一個HTML檔案和五張圖檔,則這個WEB頁面有六個對象。HTML基本檔案通過對象的URL位址引用頁面中的其他對象。每個URL由兩個部分組成:存放對象的主機名和對象在主機中的路徑名。

WEB浏覽器實作了HTTP的用戶端,使得客戶可以使用WEB應用。而WEB伺服器實作了WEB的服務端。

HTTP定義了WEB客戶向WEB伺服器請求WEB頁面的方式,以及伺服器向用戶端發送頁面的方式。當使用者請求一個WEB頁面的時候,浏覽器向伺服器發出對該頁面中所包含的對象的HTTP請求封包,伺服器接收到請求并且用包含這些對象的HTTP響應封包進行響應。

HTTP使用TCP協定作為它的支撐運輸協定。

2.2.2 非持續連接配接和持續連接配接

非持續連接配接:每個請求/響應是通過不同的TCP連接配接去發送的。其中每個TCP連接配接在伺服器發送一個對象後關閉。缺點:第一,必須為每一個請求對象建立和維護一個全新的連接配接,這給WEB伺服器帶來了嚴重的負擔;第二,每個對象經受兩倍的RTT的傳遞時延,也就是說一個RTT用于建立TCP。另一個用于請求和接收一個對象。

持續連接配接:每個請求/響應是通過同一個TCP連接配接發送的。伺服器在發送響應後保持該TCP連接配接打開,在相同的客戶和服務端之間,後續的請求和響應封包能夠通過相同的TCP連接配接進行傳送。在這種情況下,當一條TCP連接配接超過一定時間不使用(這個可以在伺服器上配置參數)則會被關閉。

在預設情況下HTTP采用持續連接配接

2.2.3 HTTP封包格式

1.HTTP請求封包

以下為請求封包示例

GET /somedir/page.html HTTP/1.1

Host: www.someschool.edu

User-agent:Mozilla/5.0

Accept-language:fr

上面第一行稱之為請求行,有三個字段,依次是:方法字段,URL字段,HTTP版本字段。方法字段包括:GET,POST,PUT,HEAD和DELETE。URL字段帶有請求對象辨別,本例中URL對象正在請求/somedir/page.html。

剩下的行稱為首部行,Host指明了對象所在的主機,User-Agent指明了向伺服器發送請求的浏覽器類型,Accept-Language指明了使用者想得到的語言版本。

一個請求封包在首部行後會有個實體體,當方法為GET的時候實體體為空。當使用POST方法的時候才會使用該實體體。當使用者送出表單時,HTTP經常會使用POST方法,比如當使用者向搜尋引擎輸入搜尋關鍵字的時候。使用POST封包,使用者仍可以向伺服器請求一個WEB頁面,但WEB頁面的特定内容依賴于使用者在表單字段中輸入的内容,比如搜尋引擎會依靠使用者輸入的表單内容顯示特定内容。

GET也可以傳輸少量使用者輸入的資訊,它将需要傳輸的内容放在了URL中,比如說www.somesite.com/animalsearch? banana&monkey。這種就傳輸了monkey和banana。這種方法傳輸的資訊很少,也不具備保密性。

PUT允許使用者上傳對象到指定的WEB伺服器上的指定路徑中

DELETE允許使用者删除指定WEB伺服器上的指定路徑中的對象

HEAD類似于GET,當伺服器收到一個HEAD方法的請求的時候,會使用一個HTTP封包進行響應但是并不傳回請求對象。多用于進行調試跟蹤的時候

2.HTTP響應封包

以下為響應封包示例

HTTP/1.1 200 OK

Connection: close

Data: Tue, 18 Aug 2015 15:44:04 GMT

Server: Apache/2.2.3 (CentOS)

Last-Modified: Tue, 18 Aug 2015 15:11:03 GMT

Content-Length: 6821

Content-Type: text/html

(data data data)

響應封包有三個部分組成:一個為初始狀态行,6個首部行,然後是實體體。

狀态行有三個字段:協定版本字段、狀态碼和相應狀态資訊

首部行中:Connection: close告訴客戶發送完封包後将關閉該TCP連接配接

Date:訓示伺服器産生并且發送該響應封包的時間和日期

Server:訓示封包是由什麼伺服器産生的,例子中是由Apache Web産生的

Last-Modified:訓示了對象建立或者最後修改的時間日期

Content-Length:訓示了被發送對象的位元組數

Content-Type:訓示實體體中的對象類型

2.2.4使用者與伺服器互動:cookie

cookie技術有四大元件:①在HTTP響應封包中的一個cookie首部行②在HTTP請求封包中的一個cookie首部行③在使用者端系統中保留有一個cookie檔案④位于Web站點的一個後端資料庫

cookie可用于辨別一個使用者,其關鍵在于cookie在無狀态的HTTP之上建立了一個使用者會話層。但是cookie可能會侵犯使用者隐私

2.2.5Web緩存

Web緩存,又稱為代理伺服器。

Web緩存器有自己的磁盤存儲空間,并且在存儲空間中儲存最近請求過的對象的副本。一旦浏覽器被配置,每個對象的浏覽器請求會首先被定向到該WEB緩存器,而不需要在向伺服器發送請求。

WEB緩存器一般由ISP購買和安裝。比如一所大學可能在它的校園網上安裝一台存儲器,并且将所有校園網上的使用者浏覽器配置為指向它。

在網際網路上部署WEB緩存器有兩個好處:①WEB緩存器可以大大減少隊客戶請求的響應時間 ②WEB緩存器可以減少一個機構接傳入連結路到網際網路的通信量,進而降低費用。

通過使用内容分發網絡(CDN),WEB緩存器正在網際網路中發揮着越來越重要的作用。CDN公司在網際網路上安裝了許多地理上分散的緩存器,因而使大量流量實作了本地化。

2.2.6條件GET方法

盡管高速緩存能夠減少使用者感受到的響應時間,但也引入了一個新問題,也就是存放在緩存器中的對象副本可能是陳舊的,也就是說儲存在緩存器器中的對象自該副本緩存在客戶上可能已經被修改了。

但是HTTP中的條件GET方法,如果請求封包是GET方法,并且在請求封包中包含一個“If-Modified-Since"首部行,則該封包為條件GET請求封包。條件GET可以檢查在緩存器中的副本是否是舊的。

繼續閱讀