計算機網路 應用層 HTTP協議

2022-05-05 11:51:09 字數 3966 閱讀 1187

1.http概況

web的應用層協議是超文字傳輸協議(http),它是web的核心。

http由兩部分程式實現:乙個客戶機程式和乙個伺服器程式,它們執行在不同的端系統中,通過交換http報文進行對話。http定義了這些報文的格式以及客戶機和伺服器是如何進行報文交換的。下圖是其基本思想:

當使用者請求乙個web頁面(如點選乙個超連結)時,瀏覽器向伺服器發出對該頁面中所包含物件的http請求報文,伺服器接受請求並用包含這些物件的http響應報文進行響應。

http使用tcp(而不是udp)作為它的支撐運輸層協議。http客戶機發起乙個與伺服器的tcp連線,一旦連線建立,瀏覽器和伺服器程序就可以通過套接字介面訪問tcp。同時要注意到一點,http伺服器不儲存關於客戶機的任何資訊,所以我們說http是乙個無狀態協議

2.非持久連線和持久連線

非持久連線:至多乙個物件經過乙個tcp連線傳送。

持久連線:

多個物件能夠經過客戶機和伺服器之間的單個tcp連線傳送。

http既可以使用非持久連線,也可以使用持久連線,預設方式下http使用持久連線。

·非持久連線

首先明確乙個定義rtt(往返時延):從客戶機到伺服器傳送乙個小分組並返回所經歷的時間。下面可以對響應時間建模:

(1)乙個rtt發起tcp連線(2)對http請求和返回的http響應的乙個rtt(3)檔案傳輸時間

總計:2rtt + 傳輸時間

缺點:(1)必須為每乙個請求的物件建立和維護乙個全新的連線。對每個這樣的連線,在客戶機和伺服器都要分配tcp的緩衝區和變數,給伺服器帶來了嚴重負擔。

(2)每乙個物件的傳輸時延為兩個rtt,即乙個rtt用於建立tcp,另乙個rtt用於請求和接收乙個物件。

·持久連線

伺服器在傳送響應後保持該tcp連線開啟。在相同的客戶機與伺服器之間的後續請求和響應報文可通過相同的連線進行傳送。如果乙個連線經過一定時間間隔(乙個可配置的超時間隔)仍未被使用,http伺服器就關閉該連線。

持久連線還分為有無流水線兩種。

無流水線的持久連線:僅當前面的響應已經收到,客戶機發出新的請求。對每個引用物件乙個rtt。

有流水線的持久連線:只要客戶機遇到乙個引用物件,它就傳送請求。對於所有引用的物件花費乙個rtt時間。

3.http報文格式

·http請求報文

首先來看一下http請求報文的ascii格式:

下面是請求報文的通用格式:

可以看到兩者是密切相關的,在首部行(和附加的回車換行符cr、lf)後有乙個「實體主體」(entity body)。

使用get方法時實體主體為空,而使用post方法時,使用者仍可以向伺服器請求乙個web頁面,但web頁面的特定內容依賴使用者在表單字段中輸入的內容。當方法欄位的值為post時,實體主體中包含的就是使用者在表單字段中輸入的值。

注:用表單生成的請求報文不需要使用post方法,html表單經常使用get方法,將輸入資料(在表單字段中)傳送到正確的url。

head方法類似於get方法。當伺服器收到使用的head方法的請求時,會用乙個http報文進行響應,但是並不返回請求物件。---可用於故障跟蹤。

put方法也被應用程式用來向web伺服器上傳物件。

運用delete方法,使用者或者應用程式可以刪除web伺服器上的物件。

·http響應報文

下面來看一下常用的http響應狀態碼:

200 ok

請求成功,請求的物件在這個報文後面

301 moved permanently

請求的物件已轉移,新的url在響應報文的location:首部行中指定

400 bad request

請求報文不為伺服器理解

404 not found

請求的文件沒有在該伺服器上發現

伺服器不支援請求報文使用的http協議版本

4.使用者與伺服器的互動:cookie

前面提到了http是無狀態的,這簡化了伺服器的設計。然而乙個web站點通常希望能夠識別使用者,既可能是因為伺服器想限制使用者的訪問,又可能是因為它想把內容和使用者身份聯絡起來。為此,http使用了cookie。

cookie由四個部分組成:

1)在http響應報文中的cookie 首部行

2)在http請求報文中的cookie 首部行

3)保持在使用者主機中的 cookie 檔案並由使用者瀏覽器管理

4)位於web站點的後端資料庫

總結:cookie可以標識使用者。使用者首次訪問站點時,可能需要提供乙個使用者標識(可能是名字)。在後繼訪問中,瀏覽器向伺服器傳遞乙個cookie首部,供伺服器識別該使用者。因此,cookie可以在無狀態的http上建立乙個使用者會話層。

5.web快取(**伺服器)

假設瀏覽器正在請求物件:則會發生如下情況:

(1)瀏覽器建立乙個到web快取器的tcp連線,並向web快取器中的物件傳送乙個http請求。

(2)web快取器檢查本地是否儲存了該物件拷貝,如果有,web快取器就用http響應報文向客戶機瀏覽器返回該物件。(客戶機2)

(3)如果web快取器沒有該物件,它就與該物件的初始伺服器(如www.someschool.edu)開啟乙個tcp連線。web快取器則在該tcp連線上傳送獲取該物件的http請求。收到該請求後,初始伺服器向web快取器傳送具有該物件的http響應。

(4)當web快取器接收該物件時,它在本地儲存空間儲存了乙份拷貝,並用http響應報文向客戶機的瀏覽器傳送該拷貝(通過已經建立在客戶機瀏覽器和web快取器之間的tcp連線)。

因此,web快取器(**伺服器)既是伺服器又是客戶機。

快取器通常由isp(大學,公司和住宅isp)安裝。

使用web快取器的好處:

·減小客戶機請求的響應時間

·減小機構訪問鏈路的流量

·網際網路密集安裝快取使得內容提供商能有效地交付內容(對p2p檔案共享也是這樣)

下面是乙個web快取的例子:

該圖顯示了兩個網路,即機構內部網路和公共網際網路的一部分。機構內部網路是乙個高速區域網。

6.條件get方法

儘管快取記憶體能減少使用者感受到的響應時間。但也引入了乙個新問題,即存放在快取器中的物件拷貝可能是陳舊的。因此http有一種機制,允許快取器證明它的物件是最新的,這種機制就是條件get方法。

目的:如果快取中有最新快取版本,就不傳送該物件。

快取器: 在http請求if-modified-since: 中,指定快取版本的日期。

伺服器:如果快取的拷貝是最新的,響應不包含物件: http/1.0 304 not modified,否則將最新的物件傳送給快取器。

計算機網路 應用層 HTTP協議

是七層osi模型的第七層。應用層直接和應用程式介面並提供常見的網路應用服務。應用層也向表示層發出請求。應用層是開放系統的最高層,是直接為應用程序提供服務的。其作用是在實現多個系統應用程序相互通訊的同時,完成一系列業務處理所需的服務。超文字傳輸協議,是乙個屬於應用層的物件導向的協議,由於其簡捷 快速的...

計算機網路 應用層 HTTP

狀態碼request請求頭 response請求頭 參考 啞服務 連線上時不會回顯,要有其他行為時 url 協議 hosts 主機 埠 uri 路徑 1.0 時每乙個http都要建立一次tcp,1.0後可設定connection keep alive來讓tcp持續 客戶端傳送request,服務端回...

計算機網路應用層之HTTP協議

一 什麼是http協議 http是hypertext transfer protocol即超文字傳輸協議的縮寫,是web應用層協議之一。http協議由兩部分程式實現 乙個客戶機程式和乙個伺服器程式,它們執行在不同的端系統中,通過交換http報文執行會話。http定義了web客戶機是如何向web伺服器...