HTTP協議的運作方式

2021-04-15 18:17:34 字數 3002 閱讀 9312

http協議是基於請求/響應正規化的。乙個客戶機與伺服器建立連線後,傳送乙個請求給伺服器,請求方式的格式為,統一資源識別符號、協議版本號,後邊是mime資訊包括請求修飾符、客戶機資訊和可能的內容。伺服器接到請求後,給予相應的響應資訊,其格式為乙個狀態行包括資訊的協議版本號、乙個成功或錯誤的**,後邊是mime資訊包括伺服器資訊、實體資訊和可能的內容。

許多http通訊是由乙個使用者**初始化的並且包括乙個申請在源伺服器上資源的請求。最簡單的情況可能是在使用者**(ua)和源伺服器(o)之間通過乙個單獨的連線來完成(見圖2-1)。

圖2-1

上面的圖2-2表明了在使用者**(ua)和源伺服器(o)之間有三個中介(a,b和c)。乙個通過整個鏈的請求或響應訊息必須經過四個連線段。這個區別是重要的,因為一些http通訊選擇可能應用於最近的連線、沒有通道的鄰居,應用於鏈的終點或應用於沿鏈的所有連線。儘管圖2-2是線性的,每個參與者都可能從事多重的、併發的通訊。例如,b可能從許多客戶機接收請求而不通過a,並且/或者不通過c把請求送到a,在同時它還可能處理a的請求。

任何針對不作為通道的匯聚可能為處理請求啟用乙個內部快取。快取的效果是請求/響應鏈被縮短,條件是沿鏈的參與者之一具有乙個快取的響應作用於那個請求。下圖說明結果鏈,其條件是針對乙個未被ua或a加快取的請求,b有乙個經過c來自o的乙個前期響應的快取拷貝。

圖2-3

在internet上,http通訊通常發生在tcp/ip連線之上。預設埠是tcp80,但其它的埠也是可用的。但這並不預示著http協議在internet或其它網路的其它協議之上才能完成。http只預示著乙個可靠的傳輸。

以上簡要介紹了http協議的巨集觀運作方式,下面介紹一下http協議的內部操作過程。

首先,簡單介紹基於http協議的客戶/伺服器模式的資訊交換過程,如圖2-4所示,它分四個過程,建立連線、傳送請求資訊、傳送響應資訊、關閉連線。

圖2-4

在www中,「客戶」與「伺服器」是乙個相對的概念,只存在於乙個特定的連線期間,即在某個連線中的客戶在另乙個連線中可能作為伺服器。www伺服器執行時,一直在tcp80埠(www的預設埠)監聽,等待連線的出現。

下面,討論http協議下客戶/伺服器模式中資訊交換的實現。  1.建立連線  連線的建立是通過申請套接字(socket)實現的。客戶開啟乙個套接字並把它約束在乙個埠上,如果成功,就相當於建立了乙個虛擬檔案。以後就可以在該虛擬檔案上寫資料並通過網路向外傳送。

2.傳送請求

開啟乙個連線後,客戶機把請求訊息送到伺服器的停留埠上,完成提出請求動作。

http/1.0  請求訊息的格式為:

請求訊息=請求行(通用資訊|請求頭|實體頭)crlf[實體內容]

請求 行=方法 請求url http版本號 crlf

方  法=get|head|post|擴充套件方法

u r l=協議名稱+宿主名+目錄與檔名

請求行中的方法描述指定資源中應該執行的動作,常用的方法有get、head和post。不同的請求物件對應get的結果是不同的,對應關係如下:

物件      get的結果

檔案      檔案的內容

程式      該程式的執行結果

資料庫查詢   查詢結果

head——要求伺服器查詢某物件的元資訊,而不是物件本身。

post——從客戶機向伺服器傳送資料,在要求伺服器和cgi做進一步處理時會用到post方法。post主要用於傳送html文字中form的內容,讓cgi程式處理。

乙個請求的例子為:

頭資訊又稱為元資訊,即資訊的資訊,利用元資訊可以實現有條件的請求或應答。

請求頭——告訴伺服器怎樣解釋本次請求,主要包括使用者可以接受的資料型別、壓縮方法和語言等。

實體頭——實體資訊型別、長度、壓縮方法、最後一次修改時間、資料有效期等。

實體——請求或應答物件本身。

3.傳送響應

伺服器在處理完客戶的請求之後,要向客戶機傳送響應訊息。

http/1.0的響應訊息格式如下:

響應訊息=狀態行(通用資訊頭|響應頭|實體頭) crlf 〔實體內容〕

狀態行=http版本號 狀態碼 原因敘述

狀態碼表示響應型別

1××  保留

2××  表示請求成功地接收

3××  為完成請求客戶需進一步細化請求

4××  客戶錯誤

5××  伺服器錯誤

響應頭的資訊包括:服務程式名,通知客戶請求的url需要認證,請求的資源何時能使用。

4.關閉連線

客戶和伺服器雙方都可以通過關閉套接字來結束tcp/ip對話

協議如何運作

物件導向程式設計的一大好處就是封裝。可以使用各種行為來組建應用程式,而這些行為能分為不同但又可以起互動的元件,為這些元件建立物件。元件可能是一些介面或檢視。其他的元件可能是底層的資料或模型的一部分。還有一些事控制器,用於將檢視和資料關聯起來。但是這些區分並不足夠。當建立更多的應用程式時,你會發現自己...

HTTP協議 HTTPS協議 加密方式

超文字傳輸協議 伺服器與客戶端進行資料互動的一種形式 請求載體 瀏覽器 的身份標識 包含當前作業系統的版本 當前瀏覽器的版本 請求完畢後,是保持連線還是斷開連線 close keep alive 伺服器響應回客戶端的資料型別 常見的 格式型別如下 text html html格式 text plai...

HTTP協議的幾種請求方式method

http是超文字傳輸協議,其定義了客戶端與伺服器端之間文字傳輸的規範。http預設使用80埠,這個埠指的是服務端的埠。需要注意的是,現在大多數訪問都使用了https協議,而https的預設埠為443,如果使用80埠訪問https協議的伺服器可能會被拒絕。http協議中的請求方法 有時也叫 動作 用來...