HTTP訪問流程分析

http協議,每天都要接觸的一個協議。
也叫超文本傳輸協議,http協議就是萬維網的傳輸機制,允許瀏覽器通過Web服務器來瀏覽網頁,同時http也是web最核心的內容,它是web服務器和客戶端之間進行數據傳輸的規則。web也就是網站是信息內容發佈者,而最常見的客戶端就是瀏覽器,用於接收web服務器發送的信息。
http遵循的是請求與應答的模型,客戶端向服務器發送請求,服務器處理請求並且返回適當的應答,所有的http連接都被構造爲一套請求和應答。這過程中需要經歷四個階段,也就是:建立建立、發送請求信息、發送響應信息、關閉連接。

這裏值得注意的一點是http需要使用tcp的三次握手建立連接,那麼在使用wiresharek進行http數據包篩選時就要加上tcp這個篩選條件。

訪問web的過程:
在客戶端與服務端建立tcp三次握手完成之後,客戶端就像服務器發送http請求,服務器收到客戶端的http請求之後,將回應的響應數據包,面向客戶端發送輸出,之後客戶端通過tcp的四次握手斷開連接。

網站的傳輸方式有兩種,一種是GET一種是POST。打開wiresharek開始抓包,隨便訪問一個網頁,觸發流量。
在這裏插入圖片描述在打開瀏覽器時的首頁信息,其實已經觸發了很多流量了。瀏覽網頁會使用GET方法,所以可以在篩選器中添加過濾規則找出GET方法
這裏要用到的過濾規則是:http.request.mothed eq GET
在這裏插入圖片描述
過濾出響應的數據包之後再右鍵數據包給第一個http請求包着色,顏色可以隨意,這列我選擇的是color1也就是粉色,再清空篩選欄的過濾規則就可以看到已經將相應的數據包全部着色了,就可以看到完整的http連接了
在這裏插入圖片描述
從上圖的粉色數據包可以看出先是完成了tcp三次握手。
建立三次握手之後,第一個標記爲http的數據包就是從客戶端通過tcp傳輸到服務器的80端口,也就是http的標準端口,但要注意一點有時候8080端口也會給http使用,展開http可以看到它請求的方法就是GET,以及綠框中的請求的URI爲 / 請求的http版本爲1.1等等
在這裏插入圖片描述
從上圖的http數據包可得知,它所請求的是http1.1版本,下載Web服務器的跟目錄也就是 /。這裏面還包含了客戶端向服務端發送的自己的信息,包含了用戶代理user-Agent,瀏覽器所接收的語言Accept -Language,以及訪問的網址。

在服務器收到4587號數據包的請求後就會響應一個tcp的ack用於數據包的確認 ,從開始的http請求數據包,並且在中間所請求的數據包傳輸所請求的數據,最後的傳輸完成。http只是被用來發布客戶端與服務端的應用層命令,這些數據流除了在開始和結尾的傳輸時,是看不到應用層的執行信息的。
在這裏插入圖片描述
在上圖紅框的下方以及籃框的下方的tcp_ack是來自客戶端的確認,中間的則是服務器發給數據包的數據,儘管http任然附和其傳輸但傳輸數據包在wiresharek中都被顯示爲tcp分片而不是http的數據包,當數據傳輸完成後數據的重組裝流就已經發送完了,於是就到了最後的一個數據包。
在這裏插入圖片描述
在上圖可以看到http使用了預定義的響應碼來表示請求方法的結果,在紅框中可以看到一個帶有200響應碼的數據包,這是一個表示成功的響應碼。這個數據包還包含了請求時間戳以及web服務器的編碼和配置參數的額外信息,當客戶端接收到這個數據包之後,那麼這次請求的處理就完成了。

上文研究的是從web服務器下載內容,下文不妨來試一下上傳數據,在網站上上傳表單活或者提交數據時往往就能捕獲含有POST的數據包,這個數據包是在網上提交評論時所捕獲的流量,使用的依舊是tcp的三次握手
在這裏插入圖片描述
在下圖可以看到客戶端使用POST向服務器發送了一個數據包展開可以看到,這個數據包使用的是POST方法來向Web服務器上傳數據,以供處理,同時也指明瞭相應的URI
在這裏插入圖片描述

總結:
在觸發響應流量的時候,找對應的數據包找不到,過濾規則沒有熟練。且觸發POST找到對應的數據包時沒有進行導出處理,導致後續的POST數據包找不到提交數據的那個包。無法進行後續的展開html,展示更多的信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章