古詩詞大全網 - 藝術簽名 - 網絡抓包原理

網絡抓包原理

本文以App作為例子,實際應用不限於App範圍。

大部分場合都可以通過程序調試來定位問題,但有些場景使用抓包來定位接口問題更準確、更方便,如以下場景:

要實現對App的網絡數據抓包,需要監控App與服務器交互之間的網絡節點,監控其中任意壹個網絡節點(網卡),獲取所有經過網卡中的數據,對這些數據按照網絡協議進行解析,這就是抓包的基本原理。

但是中間網絡節點,不受我們控制,所以基本無法實現抓包的,只能在客戶端和服務端進行抓包。

通常我們監控本地網卡數據,如下圖:

本地網絡 指的是WIFI的路由,如果直接抓路由器的包還是比較麻煩的,因此我們會在 手機 和 本地路由 之間加壹層 代理服務 ,這樣只要抓代理服務的網絡數據即可:

雖然在 手機 側也可實現抓包,但和 本地路由 壹樣,抓包比較麻煩,如果不是沒有辦法,盡量還是不在手機側抓包。但是有壹種情況必須在手機端抓包,那就是在4G網絡情況下:

4G網絡狀態下如何抓包,以及它的劣勢,我們後面章節再細講。

抓包實際上是分析網絡協議的壹種過程,盡管繁瑣的細節勞動都讓抓包工具做了,但我們還是需要了解下基礎的網絡協議,好幫助我們更好的分析問題。

首先需要了解下經典的OSI七層網絡模型,以及每層的作用,其次對TCP、HTTP協議簡單了解。

HTTPS是基於HTTP協議的壹種改進,在 TCP之上 的會話層增加安全處理。對於應用層來說,HTTPS和HTTP沒有什麽不同,也就是說,HTTPS是保證網絡傳輸的安全性,對業務數據無侵入。

簡化理解大概是這個樣子:

SSL和TLS是保證安全傳輸的協議,包括證書認證、加解密和數字簽名。

項目中HTTPS的鏈路:

因此,客戶端與後臺,編寫網絡接口時,不需要關心SSL或TLS,按照HTTP協議處理即可。

既然HTTPS在網絡傳輸是經過加密的,那麽抓包抓到的數據就是密文,不經過解密是無法看到報文的。針對這個問題,如上圖WIFI環境下設置代理的方式可以解決,具體思路是:

所以整個網絡鏈路依然是HTTPS在傳輸,但代理服務自己可以獲取到明文數據。

比較常用的抓包工具大概有4個,主要用作互補,配合使用基本所有平臺、所有抓包需求都能滿足:

需要說明的是,tcpdump可將數據保存成文件,直接用wireShark打開分析,針對後臺或手機抓包使用起來十分方便。

幾個工具間的使用關系:

為什麽要真機抓包?必定是沒有辦法設置代理服務了,如4G網絡情況下直接和移動基站鏈接,沒法設置代理服務。凡是非4G網絡狀態下,都不建議真機抓包。

iOS 5後,apple引入了RVI remote virtual interface的特性,它只需要將iOS設備使用USB數據線連接到mac上,然後使用rvictl工具以iOS設備的UDID為參數在Mac中建立壹個虛擬網絡接口rvi,就可以在mac設備上使用tcpdump,wireshark等工具對創建的接口進行抓包分析。

具體步驟:

android是linux系統,和後臺壹樣可以使用tcpdump命令來抓包,但是需要root權限,因為壹般手機系統不帶有抓包命令 tcpdump ,需要自行安裝。

安裝tcpdump:

使用tcpdump:

這是就已經進入抓包狀態,手機所有的網絡請求都會被捕獲,並保存到capture文件中。

導出capture文件:

原文: 網絡抓包