前沿拓展:
win10**兼容
用富德啊.支持win10的系統(tǒng),性價(jià)比高,電初未策而且手感特別好
如果本文對(duì)你有幫助,歡迎關(guān)注、討論、點(diǎn)贊、收藏、轉(zhuǎn)發(fā)給朋友,讓我有持續(xù)創(chuàng)作的動(dòng)力,讓我們一起相互學(xué)習(xí)共同進(jìn)步。
Wireshark軟件安裝
軟件下載路徑:wireshark官網(wǎng)。按照系統(tǒng)版本選擇下載,下載完成后,按照軟件提示一路Next安裝。
說(shuō)明:如果你是Win10系統(tǒng),安裝完成后,選擇抓包但是不顯示網(wǎng)卡,下載win10pcap兼容性安裝包。下載路徑:win10pcap兼容性安裝包
Wireshark 開(kāi)始抓包示例
先介紹一個(gè)使用wireshark工具抓取ping命令**作的示例,讓讀者可以先上手**作感受一下抓包的具體過(guò)程。
1、打開(kāi)wireshark 2.6.5,主界面如下:
2、選擇菜單欄上Capture -> Option,勾選WLAN網(wǎng)卡(這里需要根據(jù)各自電腦網(wǎng)卡使用情況選擇,簡(jiǎn)單的辦法可以看使用的IP對(duì)應(yīng)的網(wǎng)卡)。點(diǎn)擊Start。啟動(dòng)抓包。
3、wireshark啟動(dòng)后,wireshark處于抓包狀態(tài)中。
4、執(zhí)行需要抓包的**作,如在cmd窗口下執(zhí)行ping www.baidu.com。
5、**作完成后相關(guān)數(shù)據(jù)包就抓取到了。為避免其他無(wú)用的數(shù)據(jù)包影響分析,可以通過(guò)在過(guò)濾欄設(shè)置過(guò)濾條件進(jìn)行數(shù)據(jù)包列表過(guò)濾,獲取結(jié)果如下。說(shuō)明:ip.addr == 119.75.217.26 and icmp 表示只顯示ICPM協(xié)議且源主機(jī)IP或者目的主機(jī)IP為119.75.217.26的數(shù)據(jù)包。說(shuō)明:協(xié)議名稱icmp要小寫(xiě)。
5、wireshark抓包完成,就這么簡(jiǎn)單。關(guān)于wireshark顯示過(guò)濾條件、抓包過(guò)濾條件、以及如何查看數(shù)據(jù)包中的詳細(xì)內(nèi)容在后面介紹。
Wireshakr抓包界面介紹
說(shuō)明:數(shù)據(jù)包列表區(qū)中不同的協(xié)議使用了不同的顏**分。協(xié)議顏色標(biāo)識(shí)**在菜單欄View –> Coloring Rules。如下所示
WireShark 主要分為這幾個(gè)界面
1. Display Filter(顯示過(guò)濾器), 用于設(shè)置過(guò)濾條件進(jìn)行數(shù)據(jù)包列表過(guò)濾。菜單路徑:**yze –> Display Filters。
2. Packet List Pane(數(shù)據(jù)包列表), 顯示捕獲到的數(shù)據(jù)包,每個(gè)數(shù)據(jù)包包含編號(hào),時(shí)間戳,源地址,目標(biāo)地址,協(xié)議,長(zhǎng)度,以及數(shù)據(jù)包信息。不同協(xié)議的數(shù)據(jù)包使用了不同的顏**分顯示。
3. Packet Details Pane(數(shù)據(jù)包詳細(xì)信息), 在數(shù)據(jù)包列表中選擇指定數(shù)據(jù)包,在數(shù)據(jù)包詳細(xì)信息中會(huì)顯示數(shù)據(jù)包的所有詳細(xì)信息內(nèi)容。數(shù)據(jù)包詳細(xì)信息面板是最重要的,用來(lái)查看協(xié)議中的每一個(gè)字段。各行信息分別為
(1)Frame: 物理層的數(shù)據(jù)幀概況
(2)Ethernet II: 數(shù)據(jù)鏈路層以太網(wǎng)幀頭部信息
(3)Internet Protocol Version 4: 互聯(lián)網(wǎng)層IP包頭部信息
(4)Tran**ission Control Protocol: 傳輸層T的數(shù)據(jù)段頭部信息,此處是TCP
(5)Hypertext Transfer Protocol: 應(yīng)用層的信息,此處是HTTP協(xié)議
TCP包的具體內(nèi)容
從下圖可以看到wireshark捕獲到的TCP包中的每個(gè)字段。
4. Dissector Pane(數(shù)據(jù)包字節(jié)區(qū))。
Wireshark過(guò)濾器設(shè)置
初學(xué)者使用wireshark時(shí),將會(huì)得到大量的冗余數(shù)據(jù)包列表,以至于很難找到自己需要抓取的數(shù)據(jù)包部分。wireshark工具中自帶了兩種類型的過(guò)濾器,學(xué)會(huì)使用這兩種過(guò)濾器會(huì)幫助我們?cè)诖罅康臄?shù)據(jù)中迅速找到我們需要的信息。
(1)抓包過(guò)濾器
捕獲過(guò)濾器的菜單欄路徑為Capture –> Capture Filters。用于在抓取數(shù)據(jù)包前設(shè)置。
如何使用?可以在抓取數(shù)據(jù)包前設(shè)置如下。
ip host 60.207.246.216 and icmp表示只捕獲主機(jī)IP為60.207.246.216的ICMP數(shù)據(jù)包。獲取結(jié)果如下:
(2)顯示過(guò)濾器
顯示過(guò)濾器是用于在抓取數(shù)據(jù)包后設(shè)置過(guò)濾條件進(jìn)行過(guò)濾數(shù)據(jù)包。通常是在抓取數(shù)據(jù)包時(shí)設(shè)置條件相對(duì)寬泛或者沒(méi)有設(shè)置導(dǎo)致抓取的數(shù)據(jù)包內(nèi)容較多時(shí)使用顯示過(guò)濾器設(shè)置條件過(guò)濾以方便分析。同樣上述場(chǎng)景,在捕獲時(shí)未設(shè)置抓包過(guò)濾規(guī)則直接通過(guò)網(wǎng)卡進(jìn)行抓取所有數(shù)據(jù)包,如下
執(zhí)行ping www.huawei.com獲取的數(shù)據(jù)包列表如下
觀察上述獲取的數(shù)據(jù)包列表,含有大量的無(wú)效數(shù)據(jù)。這時(shí)可以通過(guò)設(shè)置顯示器過(guò)濾條件進(jìn)行提取分析信息。ip.addr == 211.162.2.183 and icmp。并進(jìn)行過(guò)濾。
上述介紹了抓包過(guò)濾器和顯示過(guò)濾器的基本使用方法。在組網(wǎng)不復(fù)雜或者流量不大情況下,使用顯示器過(guò)濾器進(jìn)行抓包后處理就可以滿足我們使用。下面介紹一下兩者間的語(yǔ)法以及它們的區(qū)別。
wireshark過(guò)濾器表達(dá)式的規(guī)則
1、抓包過(guò)濾器語(yǔ)法和實(shí)例
抓包過(guò)濾器類型Type(host、net、port)、方向Dir(src、dst)、協(xié)議Proto(ether、ip、tcp、udp、http、icmp、ftp等)、邏輯運(yùn)算符(&& 與、|| 或、!非)
(1)協(xié)議過(guò)濾
比較簡(jiǎn)單,直接在抓包過(guò)濾框中直接輸入?yún)f(xié)議名即可。
tcp,只顯示TCP協(xié)議的數(shù)據(jù)包列表
http,只查看HTTP協(xié)議的數(shù)據(jù)包列表
icmp,只顯示ICMP協(xié)議的數(shù)據(jù)包列表
(2)IP過(guò)濾
host 192.168.1.104
src host 192.168.1.104
dst host 192.168.1.104
(3)端口過(guò)濾
port 80
src port 80
dst port 80
(4)邏輯運(yùn)算符&& 與、|| 或、!非
src host 192.168.1.104 && dst port 80 抓取主機(jī)地址為192.168.1.80、目的端口為80的數(shù)據(jù)包
host 192.168.1.104 || host 192.168.1.102 抓取主機(jī)為192.168.1.104或者192.168.1.102的數(shù)據(jù)包
!broadcast 不抓取廣播數(shù)據(jù)包
2、顯示過(guò)濾器語(yǔ)法和實(shí)例
(1)比較**作符
比較**作符有== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于。
(2)協(xié)議過(guò)濾
比較簡(jiǎn)單,直接在Filter框中直接輸入?yún)f(xié)議名即可。注意:協(xié)議名稱需要輸入小寫(xiě)。
tcp,只顯示TCP協(xié)議的數(shù)據(jù)包列表
http,只查看HTTP協(xié)議的數(shù)據(jù)包列表
icmp,只顯示ICMP協(xié)議的數(shù)據(jù)包列表
(3) ip過(guò)濾
ip.src ==192.168.1.104 顯示源地址為192.168.1.104的數(shù)據(jù)包列表
ip.dst==192.168.1.104, 顯示目標(biāo)地址為192.168.1.104的數(shù)據(jù)包列表
ip.addr == 192.168.1.104 顯示源IP地址或目標(biāo)IP地址為192.168.1.104的數(shù)據(jù)包列表
(4)端口過(guò)濾
tcp.port ==80, 顯示源主機(jī)或者目的主機(jī)端口為80的數(shù)據(jù)包列表。
tcp.srcport == 80, 只顯示TCP協(xié)議的源主機(jī)端口為80的數(shù)據(jù)包列表。
tcp.dstport == 80,只顯示TCP協(xié)議的目的主機(jī)端口為80的數(shù)據(jù)包列表。
(5) Http模式過(guò)濾
http.request.method=="GET", 只顯示HTTP GET方法的。
(6)邏輯運(yùn)算符為 and/or/not
過(guò)濾多個(gè)條件組合時(shí),使用and/or。比如獲取IP地址為192.168.1.104的ICMP數(shù)據(jù)包表達(dá)式為ip.addr == 192.168.1.104 and icmp
(7)按照數(shù)據(jù)包內(nèi)容過(guò)濾。假設(shè)我要以IMCP層中的內(nèi)容進(jìn)行過(guò)濾,可以單擊選中界面中的碼流,在下方進(jìn)行選中數(shù)據(jù)。如下
右鍵單擊選中后出現(xiàn)如下界面
選中Select后在過(guò)濾器中顯示如下
后面條件表達(dá)式就需要自己填寫(xiě)。如下我想過(guò)濾出data數(shù)據(jù)包中包含"abcd"內(nèi)容的數(shù)據(jù)流。包含的關(guān)鍵詞是contains 后面跟上內(nèi)容。
看到這, 基本上對(duì)wireshak有了初步了解。
Wireshark抓包分析TCP三次握手
(1)TCP三次握手連接建立過(guò)程
Step1:客戶端發(fā)送一個(gè)SYN=1,ACK=0標(biāo)志的數(shù)據(jù)包給服務(wù)端,請(qǐng)求進(jìn)行連接,這是第一次握手;
Step2:服務(wù)端收到請(qǐng)求并且允許連接的話,就會(huì)發(fā)送一個(gè)SYN=1,ACK=1標(biāo)志的數(shù)據(jù)包給發(fā)送端,告訴它,可以通訊了,并且讓客戶端發(fā)送一個(gè)確認(rèn)數(shù)據(jù)包,這是第二次握手;
Step3:服務(wù)端發(fā)送一個(gè)SYN=0,ACK=1的數(shù)據(jù)包給客戶端端,告訴它連接已被確認(rèn),這就是第三次握手。TCP連接建立,開(kāi)始通訊。
(2)wireshark抓包獲取訪問(wèn)指定服務(wù)端數(shù)據(jù)包
Step1:?jiǎn)?dòng)wireshark抓包,打開(kāi)瀏覽器輸入www.huawei.com。
Step2:使用ping www.huawei.com獲取IP。
Step3:輸入過(guò)濾條件獲取待分析數(shù)據(jù)包列表 ip.addr == 211.162.2.183
圖中可以看到wireshark截獲到了三次握手的三個(gè)數(shù)據(jù)包。第四個(gè)包才是HTTP的, 這說(shuō)明HTTP的確是使用TCP建立連接的。
第一次握手?jǐn)?shù)據(jù)包
客戶端發(fā)送一個(gè)TCP,標(biāo)志位為SYN,序列號(hào)為0, 代表客戶端請(qǐng)求建立連接。如下圖。
數(shù)據(jù)包的關(guān)鍵屬性如下:
SYN :標(biāo)志位,表示請(qǐng)求建立連接
Seq = 0 :初始建立連接值為0,數(shù)據(jù)包的相對(duì)序列號(hào)從0開(kāi)始,表示當(dāng)前還沒(méi)有發(fā)送數(shù)據(jù)
Ack =0:初始建立連接值為0,已經(jīng)收到包的數(shù)量,表示當(dāng)前沒(méi)有接收到數(shù)據(jù)
第二次握手的數(shù)據(jù)包
服務(wù)器發(fā)回確認(rèn)包, 標(biāo)志位為 SYN,ACK. 將確認(rèn)序號(hào)(Acknowledgement Number)設(shè)置為客戶的I S N加1以.即0+1=1, 如下圖
數(shù)據(jù)包的關(guān)鍵屬性如下:
[SYN + ACK]: 標(biāo)志位,同意建立連接,并回送SYN+ACK
Seq = 0 :初始建立值為0,表示當(dāng)前還沒(méi)有發(fā)送數(shù)據(jù)
Ack = 1:表示當(dāng)前端成功接收的數(shù)據(jù)位數(shù),雖然客戶端沒(méi)有發(fā)送任何有效數(shù)據(jù),確認(rèn)號(hào)還是被加1,因?yàn)榘琒YN或FIN標(biāo)志位。(并不會(huì)對(duì)有效數(shù)據(jù)的計(jì)數(shù)產(chǎn)生影響,因?yàn)楹蠸YN或FIN標(biāo)志位的包并不攜帶有效數(shù)據(jù))
第三次握手的數(shù)據(jù)包
客戶端再次發(fā)送確認(rèn)包(ACK) SYN標(biāo)志位為0,ACK標(biāo)志位為1.并且把服務(wù)器發(fā)來(lái)ACK的序號(hào)字段+1,放在確定字段中發(fā)送給對(duì)方.并且在數(shù)據(jù)段放寫(xiě)ISN的+1, 如下圖:
數(shù)據(jù)包的關(guān)鍵屬性如下:
ACK :標(biāo)志位,表示已經(jīng)收到記錄
Seq = 1 :表示當(dāng)前已經(jīng)發(fā)送1個(gè)數(shù)據(jù)
Ack = 1 : 表示當(dāng)前端成功接收的數(shù)據(jù)位數(shù),雖然服務(wù)端沒(méi)有發(fā)送任何有效數(shù)據(jù),確認(rèn)號(hào)還是被加1,因?yàn)榘琒YN或FIN標(biāo)志位(并不會(huì)對(duì)有效數(shù)據(jù)的計(jì)數(shù)產(chǎn)生影響,因?yàn)楹蠸YN或FIN標(biāo)志位的包并不攜帶有效數(shù)據(jù))。
就這樣通過(guò)了TCP三次握手,建立了連接。開(kāi)始進(jìn)行數(shù)據(jù)交互
下面針對(duì)數(shù)據(jù)交互過(guò)程的數(shù)據(jù)包進(jìn)行一些說(shuō)明:
數(shù)據(jù)包的關(guān)鍵屬性說(shuō)明
Seq: 1
Ack: 1: 說(shuō)明現(xiàn)在共收到1字節(jié)數(shù)據(jù)
Seq: 1Ack: 951: 說(shuō)明現(xiàn)在服務(wù)端共收到951字節(jié)數(shù)據(jù)
TCP的六種狀態(tài):SYN, FIN, ACK, PSH, RST, URG
在TCP層,有個(gè)FLAGS字段,這個(gè)字段有以下幾個(gè)標(biāo)識(shí):SYN(synchronous), FIN(Finish), ACK(Acknowledge ), PSH(Push), RST(Reset), URG(Urgent)。如下
其中,對(duì)于我們?nèi)粘5姆治鲇杏玫木褪乔懊娴奈鍌€(gè)字段。它們的含義是:SYN表示建立連接,F(xiàn)IN表示關(guān)閉連接,ACK表示響應(yīng),PSH表示有DATA數(shù)據(jù)傳輸,RST表示連接重置。
Wireshark抓包分析TCP四次揮手
四次揮手標(biāo)志分別為:
"[FIN, ACK]""[ACK]""[FIN, ACK]""[ACK]"
這里,我們需要注意兩點(diǎn):(1)客戶端與服務(wù)器端傳輸時(shí)全雙工的,因此斷開(kāi)請(qǐng)求既可以由客戶端發(fā)起,也可以由服務(wù)器端發(fā)起。只要找準(zhǔn)第一次出現(xiàn)"[FIN, ACK]"的位置,就是第一次揮手位置。(2)為什么我們抓包抓到的不是“四次揮手”,而是“三次揮手”呢?這里涉及到LInux的TCP時(shí)延機(jī)制,當(dāng)被揮手端(這里是12672端口)第一次收到揮手端(這里是443端口)的“FIN”請(qǐng)求時(shí),并不會(huì)立即發(fā)送ACK,而是會(huì)經(jīng)過(guò)一段延遲時(shí)間后再發(fā)送,但是此時(shí)被揮手端也沒(méi)有數(shù)據(jù)發(fā)送,就會(huì)向揮手端發(fā)送“FIN"請(qǐng)求,這里就可能造成被揮手端發(fā)送的“FIN”與“ACK”一起被揮手端收到,導(dǎo)致出現(xiàn)“第二、三次揮手”合并為一次的現(xiàn)象,也就最終呈現(xiàn)出“三次揮手”的情況。
三次握手:第一次握手:客戶端發(fā)送syn包(seq=x)到服務(wù)器,并進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器確認(rèn);第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=x+1),同時(shí)自己也發(fā)送一個(gè)SYN包(seq=y),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=y+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。握手過(guò)程中傳送的包里不包含數(shù)據(jù),三次握手完畢后,客戶端與服務(wù)器才正式開(kāi)始傳送數(shù)據(jù)。理想狀態(tài)下,TCP連接一旦建立,在通信雙方中的任何一方主動(dòng)關(guān)閉連接之前,TCP 連接都將被一直保持下去。
四次揮手:與建立連接的“三次握手”類似,斷開(kāi)一個(gè)TCP連接則需要“四次握手”。第一次揮手:主動(dòng)關(guān)閉方發(fā)送一個(gè)FIN,用來(lái)關(guān)閉主動(dòng)方到被動(dòng)關(guān)閉方的數(shù)據(jù)傳送,也就是主動(dòng)關(guān)閉方告訴被動(dòng)關(guān)閉方:我已經(jīng)不 會(huì)再給你發(fā)數(shù)據(jù)了(當(dāng)然,在fin包之前發(fā)送出去的數(shù)據(jù),如果沒(méi)有收到對(duì)應(yīng)的ack確認(rèn)報(bào)文,主動(dòng)關(guān)閉方依然會(huì)重發(fā)這些數(shù)據(jù)),但是,此時(shí)主動(dòng)關(guān)閉方還可 以接受數(shù)據(jù)。第二次揮手:被動(dòng)關(guān)閉方收到FIN包后,發(fā)送一個(gè)ACK給對(duì)方,確認(rèn)序號(hào)為收到序號(hào)+1(與SYN相同,一個(gè)FIN占用一個(gè)序號(hào))。第三次揮手:被動(dòng)關(guān)閉方發(fā)送一個(gè)FIN,用來(lái)關(guān)閉被動(dòng)關(guān)閉方到主動(dòng)關(guān)閉方的數(shù)據(jù)傳送,也就是告訴主動(dòng)關(guān)閉方,我的數(shù)據(jù)也發(fā)送完了,不會(huì)再給你發(fā)數(shù)據(jù)了。第四次揮手:主動(dòng)關(guān)閉方收到FIN后,發(fā)送一個(gè)ACK給被動(dòng)關(guān)閉方,確認(rèn)序號(hào)為收到序號(hào)+1,至此,完成四次揮手。
第一我們需要把瀏覽器的頁(yè)面關(guān)閉,也就是斷開(kāi)TCP/IP連接,之后等待幾分鐘。會(huì)出現(xiàn)下面的畫(huà)面,方框就是“揮手”過(guò)程。
FAQ:使用wireshark出現(xiàn)很多TCP Retran**ission信息
出現(xiàn)TCP Retran**ission多數(shù)是因?yàn)槟繕?biāo)主機(jī)的端口沒(méi)開(kāi)有開(kāi)放**,很少出現(xiàn)是網(wǎng)絡(luò)不好導(dǎo)致的。
如果在某個(gè)時(shí)間段(RTT的倍數(shù))內(nèi)沒(méi)有確認(rèn)發(fā)送的數(shù)據(jù),則將數(shù)據(jù)重新傳輸?shù)竭h(yuǎn)程主機(jī)。重傳超時(shí)從RTT開(kāi)始,并隨著每次重傳而增加一倍。重傳超時(shí)總是受限于CFGZ-MNRTO和CFGYMax RTO。如果自從第一次傳輸數(shù)據(jù)以來(lái),CFGY-ReTrExtTMO時(shí)間就過(guò)去了,連接被關(guān)閉,即狀態(tài)被設(shè)置為關(guān)閉。注意,當(dāng)一個(gè)套接字被關(guān)閉時(shí),將響應(yīng)于接收到的端口所發(fā)送的任何數(shù)據(jù)包來(lái)發(fā)送重置。
當(dāng)超時(shí)發(fā)生時(shí),將重新發(fā)送輸出窗口中的所有未確認(rèn)數(shù)據(jù)。數(shù)據(jù)被重新打包,因此,包將不與原始包相同。例如,如果以10字節(jié)的數(shù)據(jù)發(fā)送分組,則發(fā)送具有30字節(jié)數(shù)據(jù)的分組,并且第一分組丟失,40字節(jié)的未確認(rèn)數(shù)據(jù)將在輸出窗口中。當(dāng)超時(shí)發(fā)生時(shí),所有40個(gè)字節(jié)將在一個(gè)分組中發(fā)送(假設(shè)MSS大于或等于40)。
如果接收到三個(gè)重復(fù)的確認(rèn),則快速重傳算法無(wú)需等待超時(shí)即可重傳TCP數(shù)據(jù)。RTIP32還實(shí)現(xiàn)了RFC 2582中定義的NeReNeO快速恢復(fù)算法。
轉(zhuǎn)載:https://blog.csdn.net/lemontree1945/article/details/88581516
類似場(chǎng)景:client 連接服務(wù)器時(shí),因 TLS 證書(shū)設(shè)置錯(cuò)誤,所以會(huì)導(dǎo)致連接服務(wù)器后,沒(méi)有收到應(yīng)答;即發(fā)送 SYN 報(bào)文,無(wú)響應(yīng)。
Wireshark分析常用**作
調(diào)整數(shù)據(jù)包列表中時(shí)間戳顯示格式。調(diào)整方法為View –>Time Display Format –> Date and Time of Day。調(diào)整后格式如下:
拓展知識(shí):
win10**兼容
這種情況是本地連接出了問(wèn)題,可以打開(kāi)網(wǎng)絡(luò)連接,將本地連接禁用,第二再重新將它啟動(dòng)就可以了。方法如下:
**作設(shè)備:戴爾筆記本電腦
**作系統(tǒng):win10
**作程序:網(wǎng)絡(luò)2.01
一、在電腦桌面找到網(wǎng)絡(luò),雙擊它,點(diǎn)擊屬性進(jìn)入。
二、這樣就進(jìn)入到網(wǎng)絡(luò)和共享中心的界面,點(diǎn)擊更改適配器設(shè)置。
三、進(jìn)入之后在里面找到以太網(wǎng),右鍵點(diǎn)擊它選擇禁用。
四、禁用了之后再次先點(diǎn)擊它,選擇啟用。
五、最后就可以正常連接上網(wǎng)了。
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請(qǐng)注明出處:http://m.cxzzxj.cn/129507.html