關(guān)于網(wǎng)絡(luò)抓包,也是一個(gè)日常開發(fā)中不怎么會(huì)用到的知識點(diǎn),但是作為一位程序員,應(yīng)該需要具備一定的操作能力。特別是在跟硬件設(shè)備對接數(shù)據(jù)的時(shí)候。
為什么要抓包
服務(wù)端:netty-socket搭建的服務(wù)端
客戶端:硬件設(shè)備通過tcp協(xié)議上傳數(shù)據(jù)
問題:
1.硬件設(shè)備一無法重連服務(wù)端,數(shù)據(jù)無法上傳。硬件提供方懷疑服務(wù)端功能有問題,導(dǎo)致硬件端無法連接。提出抓包查看是否進(jìn)行tcp的握手,形成穩(wěn)定的連接。
2.硬件設(shè)備二注冊服務(wù)端失敗。提供接收到的數(shù)據(jù)給硬件提供方,硬件提供方懷疑服務(wù)端未成功解析數(shù)據(jù),解析數(shù)據(jù)出現(xiàn)斷包情況。提出抓包核對數(shù)據(jù)是否完整。
準(zhǔn)備抓包
對于別人提出的問題,當(dāng)然要準(zhǔn)備好數(shù)據(jù)反饋回去咯?。。?/p>
但是問題來了,抓包?不會(huì)!查唄!
選擇抓包工具
網(wǎng)上比較火的抓包工具,Charles、Fiddler、WireShark,三個(gè)都下載一遍。但是在抓的過程中,發(fā)Charles跟Fiddler都無法抓去socket數(shù)據(jù),而且還是英文版。最后選擇了WireShark,三個(gè)中他可以直接抓取到我想要的數(shù)據(jù),而且有中文版。
下載WireShark
官網(wǎng)下載地址(2022-11-20 最新地址):https://www.wireshark.org/#download

選擇適合自己系統(tǒng)的版本進(jìn)行下載,下載完成后直接進(jìn)行安裝即可。
界面語言選擇
安裝好之后如果是英文版的操作界面,通過配置可以調(diào)整為中文版本。
找到Preferences

打開后找到Appearance,配置界面最下面有一個(gè)Language,選擇Chinese。

抓取數(shù)據(jù)
選擇網(wǎng)卡
由于很多電腦現(xiàn)在都有多網(wǎng)卡,所以當(dāng)wireShark打開時(shí)會(huì)提示選擇不同的網(wǎng)絡(luò)。

建議選擇能夠看到上圖曲線的網(wǎng)口,我理解為代表有網(wǎng)絡(luò)請求可以被監(jiān)聽到
mac下的報(bào)錯(cuò)

這是一個(gè)沒有權(quán)限的報(bào)錯(cuò):
The capture session could not be initiated on interface 'en0' (You don't have permission to capture on that device).
解決方案:
授權(quán)文件夾:/dev/bpf*
sudo chmod o+r /dev/bpf*
查看數(shù)據(jù)

到這里就可以查看到抓取的數(shù)據(jù)了
簡易過濾數(shù)據(jù)
wireShark提供豐富的過濾方式,但是我現(xiàn)在就用到了一個(gè):通過端口進(jìn)行過濾。
tcp.port == 80

基礎(chǔ)語法:
ip地址:ip.addr ip.src ip.dst
端口過濾:tcp.port tcp.srcport tcp.dstport
協(xié)議過濾:ip tcp udp http
邏輯操作符:and or not
比較操作符:== != > >= < <=
WireShark還有很多用法,會(huì)在以后的使用中增加更多的內(nèi)容。