HTTP協議 簡析

2022-02-15 06:20:10 字數 3851 閱讀 1636

http--超文字傳輸協議(hypertext transfer protocol)是網際網路上應用最為廣泛的一種網路協議,是所有的www檔案都必須遵守的標準。

http協議是乙個基於tcp協議,屬於應用層的,物件導向的,無狀態的,無連線的協議。

其簡單快捷,客戶向伺服器請求服務時,只需要傳送請求方法和路徑。請求的方法有 post、get、head、put等。

注意:

所謂無狀態的協議,不是指http不基於tcp連線使用udp協議,而是指對於事物的處理沒有記憶功能,伺服器不知道客戶端的狀態,同一臺伺服器上開啟不同的網頁之間是沒有任何聯絡的。

而我們常見的實現**的登入狀態,購物車等等功能的實現,是借助於cookie與session實現的,通過cookie和session記憶客戶端的狀態。

所謂無連線的含義是限制每次連線只處理乙個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。

http請求的過程:

大致可以分為七個步驟:

1. 建立tcp連線(根據瀏覽器中所輸入的url尋找目標主機建立連線)

2. 客戶端瀏覽器向伺服器傳送請求命令

3. 客戶端瀏覽器傳送請求頭資訊

4. 伺服器解析請求訊息進行應答

5. 伺服器傳送應答頭資訊

6. 伺服器向瀏覽器傳送資料

7. 伺服器關閉tcp連線

url部分:

url示例:http://localhost:8080/student/login.jsp

http://主機名:埠號/資源位址

http表示要通過http協議來定位網路資源;host表示合法的internet主機網域名稱,:後面跟的數字代表埠號,若預設則預設為80,埠號後面跟的是所請求資源的路徑

http報文:

我們常見http請求報文的組成:由請求部分和響應部分組成。

請求部分:

請求部分由三部分組成:請求行、訊息報頭、請求正文。

1.請求行組成:客戶端的請求方式/請求資源/http版本號

2.常見的請求頭如下:

accept:用於告訴伺服器,客戶機支援的資料型別

accept-charset:用於告訴伺服器,客戶機才用的編碼

accept-encoding:用於告訴伺服器,資料的壓縮格式

accept-language:客戶機的語言環境

host:告訴伺服器想訪問的主機名

if-modified-since:告訴伺服器資源的快取時間

referer:客戶機通過這個告訴伺服器,從哪個資源來訪伺服器的

user-agent:客戶機的軟體環境宣告

響應部分:

http響應也是由三個部分組成,分別是:狀態行、響應報頭、響應正文

1.狀態行組成:伺服器http協議的版本/伺服器發回的響應狀態**/狀態**的文字描述

狀態行之狀態碼部分:

200-299 成功完成處理

300-399 進一步細化請求

400-499 客戶端請求有誤

500-599 伺服器端有誤

常見狀態碼:

200 (成功) 伺服器已成功處理了請求。 通常,這表示伺服器提供了請求的網頁。

201 (已建立) 請求成功並且伺服器建立了新的資源。

202 (已接受) 伺服器已接受請求,但尚未處理。

203 (非授權資訊) 伺服器已成功處理了請求,但返回的資訊可能來自另一**。

204 (無內容) 伺服器成功處理了請求,但沒有返回任何內容。

205 (重置內容) 伺服器成功處理了請求,但沒有返回任何內容。

206 (部分內容) 伺服器成功處理了部分 get 請求。

300 (多種選擇) 針對請求,伺服器可執行多種操作。 伺服器可根據請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇。

301 (永久移動) 請求的網頁已永久移動到新位置。 伺服器返回此響應(對 get 或 head 請求的響應)時,會自動將請求者轉到新位置。

302 (臨時移動) 伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

303 (檢視其他位置) 請求者應當對不同的位置使用單獨的 get 請求來檢索響應時,伺服器返回此**。

304 (未修改) 自從上次請求後,請求的網頁未修改過。 伺服器返回此響應時,不會返回網頁內容。

305 (使用**) 請求者只能使用**訪問請求的網頁。 如果伺服器返回此響應,還表示請求者應使用**。

307 (臨時重定向) 伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

400 (錯誤請求) 伺服器不理解請求的語法。

401 (未授權) 請求要求身份驗證。 對於需要登入的網頁,伺服器可能返回此響應。

403 (禁止) 伺服器拒絕請求。

404 (未找到) 伺服器找不到請求的網頁。

405 (方法禁用) 禁用請求中指定的方法。

406 (不接受) 無法使用請求的內容特性響應請求的網頁。

407 (需要**授權) 此狀態**與 401(未授權)類似,但指定請求者應當授權使用**。

408 (請求超時) 伺服器等候請求時發生超時。

409 (衝突) 伺服器在完成請求時發生衝突。 伺服器必須在響應中包含有關衝突的資訊。

410 (已刪除) 如果請求的資源已永久刪除,伺服器就會返回此響應。

411 (需要有效長度) 伺服器不接受不含有效內容長度標頭字段的請求。

412 (未滿足前提條件) 伺服器未滿足請求者在請求中設定的其中乙個前提條件。

413 (請求實體過大) 伺服器無法處理請求,因為請求實體過大,超出伺服器的處理能力。

414 (請求的 uri 過長) 請求的 uri(通常為**)過長,伺服器無法處理。

415 (不支援的**型別) 請求的格式不受請求頁面的支援。

416 (請求範圍不符合要求) 如果頁面無法提供請求的範圍,則伺服器會返回此狀態**。

417 (未滿足期望值) 伺服器未滿足"期望"請求標頭字段的要求。

500 (伺服器內部錯誤) 伺服器遇到錯誤,無法完成請求。

501 (尚未實施) 伺服器不具備完成請求的功能。 例如,伺服器無法識別請求方法時可能會返回此**。

502 (錯誤閘道器) 伺服器作為閘道器或**,從上游伺服器收到無效響應。

503 (服務不可用) 伺服器目前無法使用(由於超載或停機維護)。 通常,這只是暫時狀態。

504 (閘道器超時) 伺服器作為閘道器或**,但是沒有及時從上游伺服器收到請求。

505 (http 版本不受支援) 伺服器不支援請求中所用的 http 協議版本。

2.常見訊息報頭如下:

3.響應正文即是伺服器返回的資源的內容 

後記:目前我們所使用的http協議多是1.1版

下面列舉一些1.1版和1.0版的部分差異

在1.1版本中所有連線都預設被保持,除非在請求頭或者響應頭中指明要關閉,當請求了伺服器上的某個資源後,一段時間之內用於傳輸http資料的tcp連線不會關閉,如果客戶端還需要繼續請求資料,則會繼續使用這個已經建立好的連線。

關於狀態響應碼:

狀態響應碼:http/1.0中只定義了16個狀態響應碼,對於錯誤報告的不夠具體。在http1.1版本中新增了24個狀態響應碼。

關於host頭域:

在http1.0中認為每台伺服器都繫結唯一乙個ip定製,因此url並無傳遞的主機名,但隨著虛擬主機的技術和發展,在一台http1.1的請求訊息和響應訊息都支援hsot頭域,如果請求訊息中沒有host頭域會報告乙個400錯誤

HTTP 協議簡析

http是乙個屬於應用層的面向兌現的協議,由於其簡捷 快速的方式,適用於分布式超 資訊系統。它與1990年提出。目前使用的版本是http 1.1版本。http協議 協議是指兩台計算機之間進行通訊必須共同遵守的規定或者規則。超文字傳輸協議是一種通訊協議,它允許將超文字標記語言文件從web伺服器傳送到客...

簡析HTTP協議(一)

首先說說協議 協議就是要通訊的雙方制定的,都需要用到的規定。比如南方人和北方人,各說各的家鄉話,雙方都聽不懂,無法交流,但如果他們約定好都說普通話,那交流就不成問題了。說普通話 就是這兩個人制定的協議。百科裡的說法 協議是用來描述程序之間資訊交換資料時的規則術語。其實就是網路上的各台計算機之間進行通...

http協議簡析(一)

http hype text transfer protocol,超文字傳輸協議,超文字 html 在網路間 電腦與電腦之間 傳輸過程中所遵循的一些規則。兩台電腦之間要實現資料傳輸的條件 1.兩台電腦必須要互聯 通過網線 tcp ip 2.資料的傳輸要遵循http協議。b s結構的系統 http協議...