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協議...