http協議,即超文字傳輸協議(hypertext transfer protlcol)。是一種詳細規定了全球資訊網(www=world wide web)伺服器之間互相通訊的規則,通過網際網路傳送全球資訊網文件的資料傳送協議。
http協議為tcp/ip模型中的應用層的協議。http協議通常承載於tcp協議之上,有時也承載於tls/ssl協議層之上,即https。如下圖:
http是乙個應用層協議,由請求和響應構成,是乙個標準的cs(客戶端伺服器)模型,http是乙個無狀態的協議。
http協議預設的埠號為80,https協議的埠號為443。
瀏覽網頁是http的主要應用,但是這並不代表http就只能應用於網頁的瀏覽。http是一種協議,只要通訊的雙方都遵守這個協議,就可以使用http協議。
http協議定義web客戶端如何從web伺服器請求web頁面,以及伺服器如何把web頁面傳送給客戶端。http協議採用了請求/響應模型。客戶端向伺服器傳送乙個請求報文,請求報文包含請求的方法、url、協議版本、請求頭部和請求資料。伺服器以乙個狀態行作為響應,響應的內容包括協議的版本、成功或者錯誤**、伺服器資訊、響應頭部和響應資料。
以下是 http 請求/響應的步驟:
1、客戶端連線到web伺服器
乙個http客戶端,通常是瀏覽器,與web伺服器的http埠(預設為80)建立乙個tcp套接字連線。
2、傳送http請求
通過tcp套接字,客戶端向web伺服器傳送乙個文字的請求報文,乙個請求報文由請求行、請求頭部、空行和請求資料4部分組成。
3、伺服器接受請求並返回http響應
web伺服器解析請求,定位請求資源。伺服器將資源複本寫到tcp套接字,由客戶端讀取。乙個響應由狀態行、響應頭部、空行和響應資料4部分組成。
4、釋放連線
tcp連線
若connection 模式為close,則伺服器主動關閉tcp連線
,客戶端被動關閉連線,釋放tcp連線
;若connection 模式為keepalive,則該連線會保持一段時間,在該時間內可以繼續接收請求;
5、客戶端瀏覽器解析html內容
客戶端瀏覽器首先解析狀態行,檢視表明請求是否成功的狀態**。然後解析每乙個響應頭,響應頭告知以下為若干位元組的html文件和文件的字符集。客戶端瀏覽器讀取響應資料html,根據html的語法對其進行格式化,並在瀏覽器視窗中顯示。
在http連線中報文分為請求(request)和響應(response)兩種。每種報文在http首部都有不同的字段來標識不同的用途,報文組成如下圖所示:
圖:http報文結構圖
客戶端傳送乙個http請求到伺服器的請求訊息包括以下格式:請求行、請求頭部、空行和請求資料四個部分組成。
get請求例子
圖:http請求訊息request get請求報文
第一部分:請求行,用來說明請求型別,要訪問的資源以及所使用的http版本。
get說明請求型別為get,該行的最後一部分說明使用的是http1.1版本。
第二部分:請求頭部,緊接著請求行(即第一行)之後的部分,用來說明伺服器要使用的附加資訊
從第二行起為請求頭部,host將指出請求的目的地.user-agent,伺服器端和客戶端指令碼都能訪問它,它是瀏覽器型別檢測邏輯的重要基礎.該資訊由你的瀏覽器來定義,並且在每個請求中自動傳送等等
第三部分:空行,請求頭部後面的空行是必須的
即使第四部分的請求資料為空,也必須有空行。
第四部分:請求資料也叫主體,可以新增任意的其他資料。
這個例子的請求資料為空。
(2)post請求
圖:http請求訊息request post請求報文
第一部分:請求行
請求行,第一行明了是post請求,圖中的「/」表示伺服器的根目錄,以及http1.1版本。
第二部分:請求頭部
請求行之後是請求首部。首部常見的部分有如下幾個:
accept:請求的物件型別。如果是「/」表示任意型別,如果是指定的型別,則會變成「type/」。
accept-language:使用的語言種類。
accept-encording:頁面編碼種類。
accept-charset:頁面字符集。
user-agent:提供了客戶端瀏覽器的型別和版本。
host:連線的目標主機,如果連線的伺服器是非標準埠,在這裡會出現使用的非標準埠。
第三部分:空行
第四部分:請求資料
該例子中的資料報括登入頁面的賬號及密碼。
一般情況下,伺服器接收並處理客戶端發過來的請求後會返回乙個http的響應訊息。
http響應也由四個部分組成,分別是:狀態行、訊息報頭、空行和響應正文。
(1)response響應例子
圖:http響應訊息response報文
第一部分:狀態行,由http協議版本號, 狀態碼, 狀態訊息 三部分組成。
第一行為狀態行,(http/1.1)表明http版本為1.1版本,狀態碼為200,狀態訊息為(ok)
第二部分:訊息報頭,用來說明客戶端要使用的一些附加資訊
date:生成響應的日期和時間;
content-type:指定了mime型別的html(text/html),編碼型別是iso-8859-1
第三部分:空行,訊息報頭後面的空行是必須的
第四部分:響應正文,伺服器返回給客戶端的文字資訊。
空行後面的html部分為響應正文。
http請求報文及響應報文
一 http報文格式 http報文分為兩類 請求報文request,響應報文response 二 http請求報文 ascii文字 易於人讀格式 user agent mozilla 4.0 該 型別的物件版本 connection close 不使用持久連線 accept language zh ...
Http工作原理
http1.1 與 http1.0向後相容,執行1.1版本的web伺服器可以與執行1.0版本的瀏覽器 對話 執行1.1版本的瀏覽器也可以與執行1.0版本的web伺服器對話。http和tcp的關係 雖然http1.1和http1.0協議本身沒有規定支援其傳輸的底層協議是哪種協議,但通常情況下都是架構在...
http工作原理
客戶機與伺服器建立連線後,傳送乙個請求給伺服器,請求格式為 統一資源識別符號 協議版本號。伺服器收到請求的資訊 包括請求行,請求頭,請求體 伺服器接收到請求後,給予相應的響應資訊,格式為乙個狀態行 包括響應行,響應頭,響應體 在internet上,http通訊通常發生在tcp ip連線之上。預設埠是...