最近和學弟在調試一個GPRS通信模塊,需求是通過GPRS模塊通過http協議發(fā)送數據到服務器,但是http協議一直失敗,服務器返回400,通過查詢http狀態(tài)碼得知,http400錯誤是請求無效,因為GPRS模塊沒有實現http協議的封裝,需要在TCP協議的基礎上,手動拼裝http格式的報文.所以初步猜測是http協議格式錯誤導致的.
這時候,最簡單有效的調錯方式就是通過抓包分析,查看數據格式,然后修改.但是在GPRS模塊上沒法安裝抓包工具,只能在服務器上抓包,服務器是centos的,雖然有tcpdump工具,但是沒有界面,沒法具體分析數據包.
直接使用tcpdump抓到的數據包,根本沒法分析好不.
在windows上,有wireshark這個工具,可以很方便的分析網絡數據包,這個軟件有多牛鼻就不用多說了,所有經過網卡數據都能抓到,配合圖形界面,可以很方便的查看分析數據.不知能查看應用層協議的數據,網絡中的五層協議都能查看.


有沒有辦法把tcpdump和wireshark這兩個軟件結合起來使用呢???
辦法當然是有的,把tcpdump抓取的數據轉存文件,然后用wireshark打開文件,分析數據.
1.開啟tcpdump抓包,并將結果轉存為文件
tcpdump tcp -s 0 port 80 -w ./http.cap
說一下這幾個參數
tcp是指定抓取那種協議的數據,因為我們要抓取http協議,但是tcp不能指定http協議,但是http協議是基于TCP協議的,所以抓取TCP協議數據.
-s 0tcpdump 抓取數據包時默認抓取長度為68字節(jié)。加上-S 0 后可以抓到完整的數據包
port 80我的服務器監(jiān)聽的80端口,所以只抓取80端口的數據.
-w ./http.cap指定tcpdump轉存數據時的文件./http.cap是當前目錄下的http.cap文件
- 發(fā)起請求
在終端中使用 ctrl+c組合鍵結束抓包,然后會在當前目錄下生成一個http.cap文件
http.cap
3.把文件下載下來,使用tcpdump分析數據
在wireshark中,通過文件>打開 找到從服務器下載的http.cap文件,并打開
到這已經成功打開了,剩下的就是分析數據包了
wireshark
在協議http的那一行右鍵,選擇追蹤流,然后選擇http
http
到這,整個抓包就完成了,是不是很簡單呢
經過抓包分析,終于解決了http400的問題



