網絡協議分析

網絡協議分析chrome

1.基於Fiddler的HTTP/HTTPS協議分析

關於Fiddler: Fiddler是一款由C#開發的免費http調試代理軟件,有.net 2和.net 4兩種版本。Fiddler可以記錄全部的電腦和互聯網之間的http通信,Fiddler 能夠也能夠檢查全部的http通信,設置斷點,以及Fiddle 全部的」進出」的數據。express

優勢:segmentfault

a.Firebug雖然能夠抓包,可是對於分析http請求的詳細信息,不夠強大。模擬http請求的功能也不夠,且firebug經常是須要」無刷新修改」,若是刷新了頁面,全部的修改都不會保存;b.Wireshark是通用的抓包工具,可是比較龐大,對於只須要抓取http請求的應用來講,彷佛有些大材小用。且Wireshark沒法解密HTTPS故而選擇使用fiddler來對HTTP協議進行分析; c.Httpwatch也是比較經常使用的http抓包工具,可是隻支持IE和firefox瀏覽器(其餘瀏覽器可能會有相應的插件),對於想要調試chrome瀏覽器的http請求,彷佛稍顯無力,而Fiddler2 是一個使用本地 127.0.0.1:8888 的 HTTP 代理,任何可以設置 HTTP 代理爲 127.0.0.1:8888 的瀏覽器和應用程序均可以使用 Fiddler。瀏覽器

這裏爲體現我的特點,選擇在本地服務器運行觀察抓包結果,如圖: 緩存

實際上,Wireshark抓不到本地服務器發送報文,這也是Fiddler更利於開發調試的緣由之一。 HTTP協議分析(1):因爲以前本地測試過,因此第一次抓到的包返回的狀態碼是304,清除緩存後變爲正常的200,圖中咱們能夠看到返回的數據:」譚繼臻FiddlerHTTP協議測試」,這裏咱們經過請求頭報文能夠看到請求站點(localhost:81),請求方式(XMLHttpReQuest)等信息。因爲Fiddler只能抓到HTTP/HTTPS的包,關於HTTP協議的深刻分析咱們使用Wireshark進行。、服務器

2.基於Wireshark的TCP/HTTP協議深刻分析

關於Wireshark: Wireshark(前稱Ethereal)是一個網絡封包分析軟件。網絡封包分析軟件的功能是擷取網絡封包,並儘量顯示出最爲詳細的網絡封包資料。Wireshark使用WinPCAP做爲接口,直接與網卡進行數據報文交換。 優勢:網絡

a.使用操做很是簡單,對於初級和中級網絡學習者來講是一款完美的抓包軟件。工具

b.有不少小工具和小技巧能夠幫助咱們更快更好的瞭解網絡,例如filter,expression,statistics等等。學習

c.界面設計很簡潔,給使用者一種很是清新的感受。測試

d.與Fiddler相比可抓取的包更廣,更多,而且軟件開源,用着放心。

實例分析TCP三次握手過程:

這裏咱們打開嗶哩嗶哩網站首頁觀察抓包狀況(http://www.bilibili.com/);

  • 第一次握手數據包

客戶端發送一個TCP,標誌位爲SYN,序列號爲0, 表明客戶端請求創建鏈接。以下圖: 

  • 第二次握手的數據包

服務器發回確認包, 標誌位爲 SYN,ACK. 將確認序號(Acknowledgement Number)設置爲客戶的I S N加1以.即0+1=1, 以下圖: 

  • 第三次握手的數據包

客戶端再次發送確認包(ACK) SYN標誌位爲0,ACK標誌位爲1.而且把服務器發來ACK的序號字段+1,放在肯定字段中發送給對方.而且在數據段放寫ISN的+1,以下圖: 

就這樣經過了TCP三次握手,創建了鏈接,三次握手基本結束,開始真正的數據傳送階段: 創建了三次握手後,咱們就開始利用這個連接來傳送信息了。下面咱們看看通過三次握手後的第四個TCP報文段。這是服務器返回來的報文段: 

咱們驚奇的發現服務器返回了ack=557,即請求第557Byte的數據,而這557Bytes是何時發出去的呢,咱們想到了在第三次握手的時候,客戶端發送的TCP是可以攜帶數據的。怎麼驗證是否攜帶了557Bytes數據呢,咱們想到了HTTP協議封裝的報文,咱們來驗證一下是不是557Bytes,打開HTTP協議以下:

咱們看到,HTTP協議封裝的報文,長度爲Bytes in flight:556。表示已經發送了557Bytes,因此,服務器理應返回一個ack=554的確認,以表示接收到了556Bytes之前的數據,但願接受557bytes以及之後的數據。而上面的第四個報文也正是這麼作的。 服務端返回了ack=557以後,服務端沒有繼續停下,而是繼續向客戶端發送了兩個報文段。咱們來看下第5、六個報文段:

第五個報文段發送了seq=557,ack=1203告訴服務端,請求你的1203數據,我這是第557個數據。發完後服務端又發送了第六個報文,以下:

服務端發送了seq=1113,ack=2400,這表示:我請求第2400Bytes,這是個人第1113Bytes,這個報文以後,服務端會繼續給客戶端傳送數據,這裏就不一一列出了。

斷開鏈接: 斷開鏈接時,要發送FIN=1,而且對方要回復ACK=1。咱們來看下截取的報文段。

咱們看到FIN=1。

返回了ACK=1,結束鏈接。

到這裏HTTP協議就算分析結束了,咱們能夠看到HTTP傳輸數據確實是靠TCP協議來完成的,因爲嗶哩嗶哩網站內容不少,因此看起來很亂…這點沒有考慮周全。

3.使用Wireshark分析ARP協議

在顯示篩選編輯框中輸入」arp」,回車,分組列表窗口將只顯示ARP消息。點擊第一行查看具體數據:

能夠看出硬件類型(hardware type)是以太網(1),協議類型(protocol type)爲0x0800,表示使用ARP的協議類型爲IPV4。硬件地址長度(hardware size)爲6。協議地址長度(protocol size)爲4。 發送方硬件地址(sender MAC address):bc:30:7d:97:c8:08 發送方協議地址(Sender IP address):192.168.1.5 目的硬件地址(target MAC address)爲00:00:00:00:00:00,表示是廣播地址。 目的協議地址(target IP address)爲192.168.1.1,定義目的設備的協議地址。

4.使用Wireshark分析ICMP協議

在cmder(也能夠是通常的命令行窗口)中以www.damonare.cn(我的網站)爲目標主機,在命令行窗口執行Ping命令,要求ping通10次;

中止截獲報文,抓包結果:(只顯示ping的數據包) 在顯示篩選編輯框中輸入」icmpv6」,回車,分組列表窗口將只顯示icmp消息。點擊第一行查看具體數據:

5.使用Wireshark分析IP協議

在顯示篩選編輯框中輸入」ip」,回車,分組列表窗口將只顯示IP消息。選取一個有IP協議的數據報:

相關文章
相關標籤/搜索