【介面測試】介面測試之HTTP協議一
HTTP協議是HyperTextTransferProtocol(超文字傳輸協議)的縮寫,是用於全球資訊網(WWW:World Wide Web)伺服器傳輸超文字到本地瀏覽器的傳送協議。
HTTP是一個基於TCP/IP通訊協議來傳送資料(HTML文字,圖檔案,查詢結果等)。
HTTP協議工作於客戶端-服務端架構上,瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB伺服器傳送所有請求。
WEB伺服器有:Apache伺服器,IIS(Internet Information Services)等。
WEB伺服器根據接收到的請求後,向客戶端傳送相應資訊。
HTTP預設埠為80,但是你也可以改為8080或其他埠。
HTTP1.0三點注意事項:
• HTTP是無連線:無連線的含義是限制每次只處理一個請求。伺服器處完客戶的請求,並接收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。
• HTTP是媒體獨立的:這意味著,只要客戶端和伺服器知道如何處理資料內容,任何型別的資料都可以通過HTTP傳送,客戶端以及伺服器指定使用適合的MIME-type內容型別。
• HTTP是無狀態:HTTP協議是無狀態協議,無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味如果後續處理需要前面的資訊,則必須重傳,這樣可能導致每次連線傳遞的資料量增大,另一方面,在伺服器不需要先前資訊時它的應答就較快。
HTTP1.1
• 複用連線,一個連線可以傳送多個請求。
• HTTP怎麼樣保持狀態,可以通過cookie保持資料。
以下圖表展示了HTTP協議通訊流程:
HTTP是基於客戶端/服務端(C/S)的架構模型,通過一個可靠的連結來交換資訊,是一個無狀態的而請求/響應協議。
一個HTTP“客戶端”是一個應用程式(Web瀏覽器或其他任何客戶端),通過連線到伺服器達到向伺服器傳送一個或多個HTTP的請求的目的。
一個HTTP“伺服器”同樣也是一個應用程式(通常一個Web服務,如Apache Web伺服器或IIS伺服器等),通過接收客戶端的請求並向客戶端傳送HTTP響應資料
HTTP使用統一資源識別符號(Uniform ResourceIdentifiers, URI)來傳輸資料和建立連線。
一旦建立連線後,資料訊息就通過類似Internet郵件所使用的格式[RFC5322]和多用途Internet郵件擴充套件(MIME)[RFC2045]來傳送。
4.客戶端請求訊息
客戶端傳送一個HTTP請求到伺服器的請求訊息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求資料4個部分組成,下圖給出了請求報文的一般格式。
請求方法 |
空格 |
URL |
空格 |
協議版本 |
回車符 |
換行符 |
|||||||
頭部欄位名 |
: |
值 |
回車符 |
換行符 |
|||||||||
... |
|||||||||||||
頭部欄位名 |
: |
值 |
回車符 |
換行符 |
|||||||||
回車符 |
換行符 |
請求行
請求頭部
請求資料
HTTP通訊機制是在一次完整的HTTP通訊過程中,web瀏覽器與web伺服器之間將完成下列7個步驟:
(1)建立TCP連線
在HTTP工作開始之前,web瀏覽器首先要通過網路與web伺服器建立連線,該連結是通過TCP來完成的,該協議與IP協議共同構建,Internet,即著名的TCP/IP協議族,因此Internet又被稱為是TCP/IP網路。HTTP是比TCP更高層次的應用層協議,根據規則,只有低層協議建立之後才能,才能進行更層次協議的連線,因此,首先要建立TCP連線,一般TCP連線的埠號是80
(2)web瀏覽器向web伺服器傳送請求命令
一旦建立了TCP連線,web瀏覽器就會向web伺服器傳送請求命令
例如:GET/sample/hello.jspHTTP/1.1
(3)web瀏覽器傳送請求頭資訊
瀏覽器傳送其請求命令之後,還要以頭資訊的形式向web伺服器傳送一些別的資訊,之後瀏覽器傳送了一空白行來通知伺服器,它已經結束了該頭資訊的傳送。
(4)web伺服器應答
客戶機向伺服器發出請求後,伺服器會客戶機回送應答
HTTP/1.1 200 OK
應答的第一部分是協議的版本號和應答狀態碼