超哥帶你半小時學會http協議和抓包,幹就完了!(中)

目錄

一、HTTP簡介

二、HTTPS簡介

三、主要特點

四、HTTP之URL

五、URI和URL的區別

六、HTTP工作原理

七、HTTP之請求——訊息Request

八、HTTP之響應——訊息Response

九、HTTP之狀態碼

十、HTTP請求方法

十一、GET和POST請求的區別

超哥帶你半小時學會http協議和抓包,幹就完了!(中)

必讀:閱讀前先點關注否則只能看這一篇咯

上次我們介紹了前四節,今天我們介紹更重要的請求和協議內容,學會了再也不害怕介面測試和抓包,搞起來。

五、URI和URL的區別

URI,是uniform resource identifier,統一資源識別符號,用來唯一的標識一個資源。

Web上可用的每種資源如HTML文件、影象、影片片段、程式等都是一個來URI來定位的

URI一般由三部組成:

①訪問資源的命名機制

②存放資源的主機名

③資源自身的名稱,由路徑表示,著重強調於資源。

URL是uniform resource locator,統一資源定位器,它是一種具體的URI,即URL可以用來標識一個資源,而且還指明瞭如何locate這個資源。

URL是Internet上用來描述資訊資源的字串,主要用在各種WWW客戶程式和伺服器程式上,特別是著名的Mosaic。

採用URL可以用一種統一的格式來描述各種資訊資源,包括檔案、伺服器的地址和目錄等。URL一般由三部組成:

①協議(或稱為服務方式)

②存有該資源的主機IP地址(有時也包括埠號)

③主機資源的具體地址。如目錄和檔名等

URN,uniform resource name,統一資源命名,是透過名字來標識資源,比如mailto:[email protected]

URI是以一種抽象的,高層次概念定義統一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。籠統地說,每個 URL 都是 URI,但不一定每個 URI 都是 URL。這是因為 URI 還包括一個子類,即統一資源名稱 (URN),它命名資源但不指定如何定位資源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。

在Java的URI中,一個URI例項可以代表絕對的,也可以是相對的,只要它符合URI的語法規則。而URL類則不僅符合語義,還包含了定位該資源的資訊,因此它不能是相對的。

在Java類庫中,URI類不包含任何訪問資源的方法,它唯一的作用就是解析。

相反的是,URL類可以開啟一個到達資源的流。

說了這麼多是不是已經暈了,莫急,其實上面的東西都可以做個瞭解,重點我都用紅色標註出來了,接下來才是重中之重,對於http協議內容其實就兩部分,一部分時請求request(就是你傳送給伺服器介面的內容),一部分是響應response(就是伺服器返回給你的內容),接下來挨個講解

超哥帶你半小時學會http協議和抓包,幹就完了!(中)

六、HTTP工作原理

要想知道http的請求和響應是什麼玩意,那我們先來了解下HTTP的工作原理

,HTTP協議定義Web客戶端如何從Web伺服器請求Web頁面,以及伺服器如何把Web頁面傳送給客戶端。HTTP協議採用了請求/響應模型。客戶端向伺服器傳送一個請求報文,請求報文包含請求的方法、URL、協議版本、請求頭部和請求資料。伺服器以一個狀態行作為響應,響應的內容包括協議的版本、成功或者錯誤程式碼、伺服器資訊、響應頭部和響應資料。

以下是 HTTP 請求/響應的步驟:

1、客戶端連線到Web伺服器

一個HTTP客戶端,通常是瀏覽器,與Web伺服器的HTTP埠(預設為80)建立一個TCP套接字連線。例如,

http://www。oakcms。cn。

2、傳送HTTP請求

透過TCP套接字,客戶端向Web伺服器傳送一個文字的請求報文,一個請求報文由請求行、請求頭部、空行和請求資料4部分組成。

3、伺服器接受請求並返回HTTP響應

Web伺服器解析請求,定位請求資源。伺服器將資源複本寫到TCP套接字,由客戶端讀取。一個響應由狀態行、響應頭部、空行和響應資料4部分組成。

4、釋放連線TCP連線

若connection 模式為close,則伺服器主動關閉

TCP連線

,客戶端被動關閉連線,釋放

TCP連線

;若connection 模式為keepalive,則該連線會保持一段時間,在該時間內可以繼續接收請求;

5、客戶端瀏覽器解析HTML內容

客戶端瀏覽器首先解析狀態行,查看錶明請求是否成功的狀態程式碼。然後解析每一個響應頭,響應頭告知以下為若干位元組的HTML文件和文件的字符集。客戶端瀏覽器讀取響應資料HTML,根據HTML的語法對其進行格式化,並在瀏覽器視窗中顯示。

例如:在瀏覽器位址列鍵入URL,按下回車之後會經歷以下流程:

1、瀏覽器向 DNS 伺服器請求解析該 URL 中的域名所對應的 IP 地址;

2、解析出 IP 地址後,根據該 IP 地址和預設埠 80,和伺服器建立

TCP連線

3、瀏覽器發出讀取檔案(URL 中域名後面部分對應的檔案)的HTTP 請求,該請求報文作為

TCP 三次握手

的第三個報文的資料傳送給伺服器;

4、伺服器對瀏覽器請求作出響應,並把對應的 html 文字傳送給瀏覽器;

5、釋放

TCP連線

6、瀏覽器將該 html 文字並顯示內容;

七、HTTP之請求——訊息Request

客戶端傳送一個HTTP請求到伺服器的請求訊息包括以下格式:

請求行(request line)、請求頭部(header)、空行和請求資料四個部分組成。

超哥帶你半小時學會http協議和抓包,幹就完了!(中)

Http請求訊息結構

請求行以一個方法符號開頭,以空格分開,後面跟著請求的URI和協議的版本。

超哥帶你半小時學會http協議和抓包,幹就完了!(中)

超哥帶你半小時學會http協議和抓包,幹就完了!(中)

八、HTTP之響應——訊息Response

一般情況下,伺服器接收並處理客戶端發過來的請求後會返回一個HTTP的響應訊息。

HTTP響應也由四個部分組成,分別是:狀態行、訊息報頭、空行和響應正文。

超哥帶你半小時學會http協議和抓包,幹就完了!(中)

http響應訊息格式

例子

HTTP/1。1 200 OK

Date: Fri, 22 May 2009 06:07:21 GMT

Content-Type: text/html; charset=UTF-8

第一部分:狀態行,由HTTP協議版本號, 狀態碼, 狀態訊息 三部分組成。

第一行為狀態行,(HTTP/1。1)表明HTTP版本為1。1版本,狀態碼為200,狀態訊息為(ok)

第二部分:訊息報頭,用來說明客戶端要使用的一些附加資訊

第二行和第三行為訊息報頭,

Date:生成響應的日期和時間;Content-Type:指定了MIME型別的HTML(text/html),編碼型別是UTF-8

第三部分:空行,訊息報頭後面的空行是必須的

第四部分:響應正文,伺服器返回給客戶端的文字資訊。

空行後面的html部分為響應正文。

九、HTTP之狀態碼

狀態程式碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別:

1xx:指示資訊--表示請求已接收,繼續處理

2xx:成功--表示請求已被成功接收、理解、接受

3xx:重定向--要完成請求必須進行更進一步的操作

4xx:客戶端錯誤--請求有語法錯誤或請求無法實現

5xx:伺服器端錯誤--伺服器未能實現合法的請求

常見狀態碼:

200 OK

//客戶端請求成功

400 Bad Request //客戶端請求有語法錯誤,不能被伺服器所理解

403 Forbidden //伺服器收到請求,但是拒絕提供服務

404 Not Found //請求資源不存在,eg:輸入了錯誤的URL

500 Internal Server Error //伺服器發生不可預期的錯誤

503 Server Unavailable //伺服器當前不能處理客戶端的請求,一段時間後可能恢復正常

注意:這裡有時候會出面試題,尤其狀態碼200,比如面試官可能會問假如我現在訪問登入介面,http響應狀態碼返回200,請問是否代表登入成功?如果你很自信的說:是的,那就掉坑了,因為200只代表介面時通的,不代表這個介面內部的業務邏輯是否正確,其實登入的密碼錯誤,也是返回200,如圖:

超哥帶你半小時學會http協議和抓包,幹就完了!(中)

超哥帶你半小時學會http協議和抓包,幹就完了!(中)

今天我們講了4-9章節,

如果需要PDF版本的同學可以分享該文章到朋友圈,私聊超哥傳送截圖領取。

本期就分享到這裡,剩下第十和十一章節咱們明天繼續,記得關注不迷路,下次還能找到我!

功能測試想要轉型測試開發請關注私信:

真實案例:

一個月薪8K的北漂小姑娘,逆襲之路!

功能測試轉型測試開發課程介紹

一個專科小姐姐8k薪水,學完漲薪多少?就像做夢

5。18日收到3個offer,提升前12K,你猜提升後offer多少K?