一、簡介
1、什麼是wireshark
百度:
2、主要應用
幫助管理員解決網路問題
幫助安全工程師用來檢測安全隱患
開發人員用來測試協議執行情況
用來學習網路協議
等等。
3、特性
跨平臺支援windows/unix平臺
在介面實時抓包
能詳細顯示包的詳細協議資訊
可以開啟/儲存捕捉的包
可以匯入匯出其他程式支援的包資料格式
可以通過多種方式過濾包
多種方式查詢包
通過過濾以多種彩色顯示包
建立多種統計分析。。。
4、多種網路介面
可以捕捉多種網路介面,甚至無線區域網介面
5、哪些事情不能做?
不能用作入侵檢測系統,不會處理網路事務,僅是監視網路,不會傳送網路包或做其他互動的事情,但可以做名稱解析
二、使用wireshark
1、開啟後看到的第一頁面,這裡就稱為初始頁面吧
2、怎麼樣開始抓包
通過捕獲選項
上面的初始頁面,有兩個入口可以點選一個是在main工具欄,一個是中間位置的captrue options
點選captrue options圖示》彈出網路卡如多網路卡指定抓包網路卡》開始抓包
3、wireshark視窗的介紹
wireshark主要分為7個介面
主選單
選單頁面包括file、edit、view、go、capture、analyze、statistics、help
main工具欄
一些快捷導航,比如capture,開始,停止等等
過濾器
指定需要捕獲所需要的條件,比如源地址/目標地址
封包列表
已經捕獲到的封包,有源地址/目標地址,埠;顏色的不同代表不同的
封包詳情
顯示封包中的各欄位
16禁止資料
顧名思義
位址列
位址列及一些雜項
4、過濾條件
通過集中表示式規則進行過濾
1)protocols
比如tcp,ether,fddi,ip,arp,rarp,decnet,lat,sca,moprc,mopdl,tcp and udp
2)direction
src,dst,src and dst,src or dst(不指定就是雙向)
3)host(新版,老版本沒有host)
net,port,host,portrange
4)logical openrations邏輯運算
and,or,not(下面有官方例項)
5、過濾關係
1)組合表示式
Table 6.6. Display Filter Logical Operations
English | C-like | Description and example |
---|---|---|
and |
&& |
Logical AND. |
or |
|| |
Logical OR. |
xor |
^^ |
Logical XOR. |
not |
! |
Logical NOT. |
[…] |
See “Slice Operator” below. |
|
in |
See “Membership Operator” below. |
2)運算子號
參考官方https://www.wireshark.org/docs/wsug_html/#DispCompOps
Table 6.5. Display Filter comparison operators
English | C-like | Description and example |
---|---|---|
eq |
== |
Equal. |
ne |
!= |
Not equal. |
gt |
> |
Greater than. |
lt |
< |
Less than. |
ge |
>= |
Greater than or equal to. |
le |
<= |
Less than or equal to. |
contains |
Protocol, field or slice contains a value. |
|
matches |
~ |
Protocol or text field match Perl regualar expression. |
bitwise_and |
& |
Compare bit field value. |
6、常見過濾需求
1)、資料鏈路層
mac地址過濾
eth.addr==00:0c:29:1c:8b:39
eth.src==00:0c:29:1c:8b:39
eth.dst==00:0c:29:1c:8b:39
2)、網路層
ip地址過濾
ip.addr==192.168.216.51
ip.src==192.168.216.51
ip.dst==192.168.216.51
3)、傳輸層
tcp/udp
tcp.prot==80
tcp.dstport==80
tcp.srcport==80
4)、應用層
http.request.uri contains ".php"
5)、wireshark支援篩選的還有很多協議,這裡不一一列舉,請檢視官方文件
udp、tcp、arp、icmp、smtp、pop、dns、ip、ssl、http、ftp、telnet、ssh、rdp、rip、ospf
6)、協議引數過濾
tcp.flags.syn==0x02 顯示包含syn標誌位的資料包
frame.len==119 整個資料包長度,從eth開始到最後
http.request.method=="get" 顯示http請求中method值為get的包
7)、邏輯條件組合篩選
||
&&
!
組合條件“與”
ip.src==192.168.216.51&&ip.dst==192.168.216.52
組合條件“或”
ip.src==192.168.216.51||ip.src==192.168.216.52
組合條件“非”
!(ip.src==192.168.216.51)
三、新版本差異
新版和老版本是存在很多差異的如
1、示例1-mac
2、示例2-ip
3、示例3-tcp
4、示例4-http
四、分析tcp三次握手
1、三次握手簡單圖示
2、第一次握手
客戶端請求建立連線,傳送請求包,標誌位SYN,序號為0
3、第二次握手
服務端返回確認,標誌位SYN,ACK,設定初始序列號Y=0, X+1=0+1=1,這個就是acknowledgement number了(確認序號)
4、第三次握手
客戶端收到伺服器發來的確認號正確,客戶端再次傳送確認ACK,SYN標誌位為0,ACK標誌位是1,確認序號=y+1=0+1,傳送序號位x+1=1,伺服器收到確認序號值與ack=1連線建立成功,開始傳輸資料
五、四次揮手
四次揮手即tcp斷開連線得時候會有四次揮手得過程
為什麼需要四次揮手那?
因為tcp協議是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,並且是全雙工模式,需要兩邊連線全部關閉,此tcp會話才算完全關閉,四次揮手使得tcp連線能夠可靠的終止,還有timed_wait也使得連線終止後網路上殘餘的傳送給該連線的資料被丟棄而不至於被新連線接收,這種方式也更安全
1、圖示四次揮手
2、抓包示例揮手協議圖示
3、第一次揮手
屬性:
ACK+FIN:標誌位
Seq=23:序列號
ACK=29:接收的序列號+SYN包,也就是確認的序號
第一次揮手,客戶端給伺服器傳送tcp包,用來關閉客戶端到伺服器的資料傳輸,傳送FIN ACK報文 seq=23 ack=29
4、第二次揮手
第二次揮手,伺服器收到FIN,發回一個ACK,Seq=29,ack=23
5、第三次揮手
服務端關閉和客戶端連線,傳送一個FIN,seq=24,ack=29
6、第四次揮手
第四次揮手,客戶端收到伺服器傳送的FIN後,發回ACK確認,確認序號加1,就是30,這裡就完全斷開連線了。
轉載請註明出處:https://www.cnblogs.com/zhangxingeng/p/11200063.html