HTTP協議簡介

2021-06-21 12:45:55 字數 2410 閱讀 2945

現在web發展如火如荼,web開發人員也越來越多,但有幾個對支援web的http協議有了解呢?底層協議基礎不紮實,高層應用是很難做到極致的。帶著好奇心,開始學習吧!

http(hypertext transfer protocol),即超文字傳輸協議,是瀏覽器和伺服器之間互相通訊的一種約定,通過網際網路傳送全球資訊網文件的資料傳送協議。http協議建立在tcp協議之上,是一種應用層協議。

http協議通訊的雙方分為服務端(伺服器)和客戶端(瀏覽器),通訊由客戶端發起,步驟如下:①客戶端建立到服務端的tcp連線;②客戶端向客戶端傳送請求資訊;③服務端向客戶端返回響應資訊。簡單說,http協議就是請求資訊和響應資訊所採用的格式約定。

method uri versionattribute1: value1attribute2: value2body

如上圖,客戶端向服務端發出的請求資訊包括:請求行,請求頭,空行還有可選的訊息體。請求行和請求頭必須以結尾,空行只包含,不能有其他任何字元。其中請求行由請求方法,請求uri,和協議版本組成。例如get / http/1.0表示用get方法請求uri為/(根)的資源,協議版本採用http/1.0。請求頭是一些屬性和值組成,例如host: www.baidu.com表示屬性host的值是www.baidu.com。順便提一下,這個屬性明確了要訪問哪乙個主機。在同一臺伺服器的同一埠可能執行多個web伺服器例項,可以用網域名稱(如www.baidu.com)進行區分。

下面是乙個最簡單的例子,按照字串表示慣例,用\r表示,用\n表示:

\r\n第一行是請求行,get是請求方法,/是uri,http/1.0表明所採用的協議版本;第二行是請求頭,host這個屬性的值是www.baidu.com,表明要訪問的伺服器名;第三行是乙個空行;沒有可選的訊息體。

version status-code reasonattribute1: value1attribute2: value2body

客戶端向伺服器發出乙個請求,伺服器對此進行響應,響應內容包括:狀態行,響應頭,訊息體,如上圖。第一行為狀態行,說明請求是成功了還是失敗了,包括協議版本,狀態碼和原因描述。接下來是響應頭,可以有多行,指定每個屬性的值。接下來是乙個空行。空行之後是訊息體(內容)。

下面是乙個簡化的例子:

>>> # 客戶端建立乙個tcp套接字用於通訊

可見請求是成功的:http/1.1是協議版本,200是狀態碼(正常);響應頭有多個,其中content-type: text/html; charset=utf-8表明該文件是乙個html文字,編碼採用utf-8;空行之後是訊息體,也就是文件內容。

HTTP協議 簡介

全稱為超文字傳輸協議 hypertext transfer protocol 設計之初是為了將超文字標記語言 html 文件從web伺服器傳送到客戶端的瀏覽器。現在http的作用已不侷限於html的傳輸。url url示例 解釋 scheme 指定低層使用的協議 例如 http,https,ftp ...

http協議簡介

摘要 本文 go web程式設計 一書,覺得說的比較好,特轉過來收藏。我們平時瀏覽網頁的時候,會開啟瀏覽器,輸入 後按下回車鍵,然後就會顯示出你想要瀏覽的內容。在這個看似簡單的使用者行為背後,到底隱藏了些什麼呢?對於普通的上網過程,系統其實是這樣做的 瀏覽器本身是乙個客戶端,當你輸入url的時候,首...

HTTP 協議簡介

下面是對 http 協議的一些總結 客戶端發起連線 客戶端傳送請求 伺服器響應請求 伺服器關閉連線 乙個請求訊息是由請求行 請求頭欄位 乙個空行和訊息主體構成。如 host www.google.com請求訊息的第一行就是請求行。它指明使用的請求方法 資源標示符 和 http 版本。如 請求方法用來...