這篇文章會按照下面思路來進行描述:php
一、爲何須要抓包;linux
二、怎樣抓包;android
三、報文的簡單分析;微信
(ps 文章中提到的設備指的android系統的設備)網絡
網絡通訊的時候,上層常常會用到http相關的協議,如今網絡通訊的開源框架也比較多,相似okhttp這些框架已經爲咱們提供了很是簡單的接口,可能只須要一行代碼就能實現簡單的上傳等功能。app
網絡各個協議層之間的通訊是經過報文來進行傳遞,每一個協議層會有本身的報文格式。有時候咱們須要確認發送或者接收到的報文信息是否正確,這時就須要抓包進行分析。其實還有不少場景會用到抓包,相似想經過php下載某個網站上的視頻,這時也能夠抓包,看下網站請求的信息,能夠知道相關視頻的實際訪問地址。框架
我本身我的用到抓包,是在寫socket通訊的時候用到了,2臺設備之間經過udp進行通訊,而後一邊是android系統,一邊是linux系統,報文內容是根據項目須要定義的一套協議。在開發的時候,遇到2邊聯調時,對接收和發送的報文存在爭議,這時抓包就是最好的方式了,以實際抓包內容爲準。socket
Android上抓包的不少工具,也有不少種方式,下面只介紹我本身使用過的2種。一種是pc端安裝fiddler工具,在電腦端實時查看網絡報文狀況,另外一種是經過tcpdump命令來抓包,而後再使用wireshark軟件來分析報文。實際上我使用第二種方式比較多,直接經過命令來抓包仍是比較方便點,抓到的包也能夠發給其它同事一塊兒分析。tcp
使用fiddler工具是須要設備端的ip和電腦端ip在同一網段,若是是公司的統一wifi,那pc和設備都連上公司wifi便可。而後設備端鏈接的wifi代理還須要設置爲電腦端ip,這個目的也很明顯,設備端wifi代理設爲pc端ip後,設備端訪問網絡,其實都是藉助p c端出去的了,因此經過fiddler就能很方便的查看到網絡訪問狀況。ide
好了,瞭解了關於fiddler的基本狀況,下面動動手,搞起來吧~~
(下面的截圖,是查看了喜馬拉雅app的一次請求報文狀況)
1) tcpdump抓包命令
tcpdump -p -vv -s 0 -w /sdcard/capture.pcap
2) 使用wireshark分析抓到的包
在window上使用 wireshark打開抓取的包 ***.pcap 文件.
下面的截圖,是根據本身的須要,篩選了 192.168.7.2 發送給 192.168.7.3 的包. 能夠看到協議是採用的 UDP ,端口是使用的4052.
點開其中一條數據包看下更具體的信息,這裏更多時候關心的的是報文數據部分,查看Data部分的數據,能夠排除咱們發的報文數據是否正確.
本人從事Android Camera相關開發已有5年
目前在深圳上班
歡迎你們關注個人微信公衆號「小馳筆記」
你們一塊兒學習交流
------- 2020.01.12 週日