一次Http請求中都發生了什麼
本博文是博主心血,嚴禁複製和轉發,轉發必舉報,舉報必封號!!
博主個人部落格魏大王學程式設計,歡迎蒞臨!!
一次Http請求中都做了什麼
在驗證這個之前,我們需要一個工具,一個名為Wireshark
的抓包工具。
下載地址: https://www.wireshark.org/download.html
安裝: 按照預設提示,一路next, 安裝完畢需要重啟電腦。
Http介紹
超文字傳輸協議(Hyper Text Transfer Protocol,HTTP)是一個簡單的請求-響應協議,它通常執行在TCP之上。
以上是百度百科對Http的定義,可能不準確,但是足夠說明問題了。
首先超文字傳輸協議
裡面的超文字,我們先不解釋,下面我們會介紹到。但是我們應該能明顯的看出它是一種在網路中負責資料傳遞的一種格式協議。
請求-響應協議
是指客戶端發起一個獲取資料的請求,服務端針對這個請求給出一定的反饋資訊。這裡有層隱含的意思,你客戶端沒有主動發起,我伺服器不會主動給你的。
TCP
是Http協議的底層支援協議,也就是在Http的傳送和響應的過程中會用到TCP
。TCP
也是一種協議,這種協議我們以後會介紹到,今天我們先看一次Http請求幹了哪些事情。
實驗
第一步: windows 環境下,開啟CMD命令視窗,輸入:
ping www.baidu.com
並記下其中的IP地址:110.242.68.4
第二步: 開啟Wireshark
,選擇自己的網絡卡資訊,如果電腦連線的是WIFI,請選擇無限網絡卡。如果自己是插網線,請選擇本地連線。
並在輸入框中輸入:
ip.addr == 110.242.68.4
第三步: CMD視窗,輸入:
curl www.baidu.com
然後你就會在抓包軟體中看到如下結果:
分析
抓個包結果主要分為三部分:建立連線;傳送請求和接受響應;斷開連線。
建立連線:
這個階段,你會發現總共三次資料包的交換,分別是:
客戶端56103埠 -> 伺服器80埠
伺服器80埠 -> 客戶端56103埠
客戶端56103埠 -> 伺服器80埠
傳送和響應階段:
這個階段,你明顯發現,有一個是GET請求和一個結果為200 OK的響應。
客戶端56103埠 -> 伺服器80埠 伺服器80埠 -> 客戶端56103埠
斷開連線階段:
在這個階段總共有四次資料包的互動,分別是:
客戶端56103埠 -> 伺服器80埠
伺服器80埠 -> 客戶端56103埠
伺服器80埠 -> 客戶端56103埠
客戶端56103埠 -> 伺服器80埠
總結
-
在http一次互動中,主要經歷三個階段,分別是:建立連線、傳送請求和接受響應、斷開連線。
-
建立連線需要客戶端和伺服器互動三次,傳送和響應互動兩次,斷開連線需要四次互動。
拓展
- 我們使用的是www.baidu.com,那
110.242.68.4
是哪裡來的? - 在這三個階段中,分別都做了什麼?為啥連線交換三次,斷開需要四次呢?
- 咱們上面提到的埠56103和埠80是什麼東西?
- Http定義裡面提到的TCP和我們截圖結果中顯示的Protocol列中的TCP有什麼關係呢?