(一)http相關(guān)知識

前言

關(guān)于HTTP這個主題,可能大家馬上就會想到HTTP協(xié)議,確實今天要講的也就是HTTP協(xié)議,因為我們面對的接口測試,大部分其實是基于HTTP協(xié)議的Web接口,所以今天就想將HTTP協(xié)議相關(guān)知識來梳理一下。

HTTP概念理解

1、什么是HTTP?

HTTP是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫。它的發(fā)展是萬維網(wǎng)協(xié)會(World Wide Web Consortium)和Internet工作小組IETF(Internet Engineering Task Force)合作的結(jié)果,(他們)最終發(fā)布了一系列的RFC,RFC 1945定義了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定義了今天普遍使用的一個版本——HTTP 1.1。

HTTP協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議)是用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。它不僅保證計算機(jī)正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。

HTTP是一個應(yīng)用層協(xié)議,由請求和響應(yīng)構(gòu)成,是一個標(biāo)準(zhǔn)的客戶端服務(wù)器模型。HTTP是一個無狀態(tài)的協(xié)議。

2、在TCP/IP協(xié)議棧中的位置

HTTP協(xié)議通常承載于TCP協(xié)議之上,有時也承載于TLS或SSL協(xié)議層之上,這個時候,就成了我們常說的HTTPS。如下圖所示:

默認(rèn)HTTP的端口號為80,HTTPS的端口號為443。劃重點(diǎn),這個很重要得記住

工作流程

在說工作流程之前,我們得先了解HTTP協(xié)議的是如何在瀏覽器和Web服務(wù)器之前交互的。

1、HTTP的請求響應(yīng)模型

HTTP協(xié)議永遠(yuǎn)都是客戶端發(fā)起請求,服務(wù)器返回響應(yīng)結(jié)果的,看圖更好理解,見下圖:

這樣模型就限制了使用HTTP協(xié)議,無法實現(xiàn)在客戶端沒有發(fā)起請求的時候,服務(wù)器將消息推送給客戶端(這里暫時只考慮短連接,鑒于篇幅關(guān)系不擴(kuò)展長連接了,有興趣的童鞋可以自己搜索了解HTTP長連接相關(guān)知識)。另外,HTTP協(xié)議是一個無狀態(tài)的協(xié)議,同一個客戶端的這次請求和上次請求是沒有對應(yīng)關(guān)系的。

2、工作過程

一次HTTP操作稱為一個事務(wù),其工作過程可分為下面幾步:

(1)客戶端連接到Web服務(wù)器

一個HTTP客戶端,通常是瀏覽器,與Web服務(wù)器的HTTP端口(默認(rèn)為80)建立一個TCP套接字連接。

(2)發(fā)送HTTP請求

通過TCP套接字,客戶端向Web服務(wù)器發(fā)送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數(shù)據(jù)4部分組成。

(3)服務(wù)器接受請求并返回HTTP響應(yīng)

Web服務(wù)器解析請求,定位請求資源。服務(wù)器將資源復(fù)本寫到TCP套接字,由客戶端讀取。一個響應(yīng)由狀態(tài)行、響應(yīng)頭部、空行和響應(yīng)數(shù)據(jù)4部分組成。

(4)釋放連接TCP連接

Web服務(wù)器主動關(guān)閉TCP套接字,釋放TCP連接;客戶端被動關(guān)閉TCP套接字,釋放TCP連接。

(5)客戶端瀏覽器解析HTML內(nèi)容

客戶端瀏覽器首先解析狀態(tài)行,查看表明請求是否成功的狀態(tài)代碼。然后解析每一個響應(yīng)頭,響應(yīng)頭告知以下為若干字節(jié)的HTML文檔和文檔的字符集??蛻舳藶g覽器讀取響應(yīng)數(shù)據(jù)HTML,根據(jù)HTML的語法對其進(jìn)行格式化,并在瀏覽器窗口中顯示。

例如,下圖就是在瀏覽器地址欄輸入google搜索的地址后按下回車的過程:

HTTP狀態(tài)碼

請求成功后,不管結(jié)果如何瀏覽器都會收到一個返回的HTTP狀態(tài)碼,我們可以根據(jù)這個狀態(tài)碼來判斷本次請求成功與否,下面是常見的HTTP狀態(tài)碼:

200- 請求成功

301- 資源(網(wǎng)頁等)被永久轉(zhuǎn)移到其它URL

404- 請求的資源(網(wǎng)頁等)不存在

500- 內(nèi)部服務(wù)器錯誤

HTTP狀態(tài)碼分類:

HTTP狀態(tài)碼由三個十進(jìn)制數(shù)字組成,第一個十進(jìn)制數(shù)字定義了狀態(tài)碼的類型,后兩個數(shù)字沒有分類的作用,HTTP狀態(tài)碼共分為5種類型(劃重點(diǎn),這個也很重要得知道):

注:鑒于篇幅關(guān)系,全部的狀態(tài)碼列表就不貼了,百度搜一下就出來了。給個鏈接參考:http://tool.oschina.net/commons?type=5

作者:測試開發(fā)棧

鏈接:http://www.itdecent.cn/p/d2b649078bc9

來源:簡書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容