數據包嗅探或協議分析:指捕獲和解析網絡上在線傳輸數據的過程,爲了能更好的瞭解網絡上正在發生的事情。緩存
軟件:Tcpdump、Omnipeek、Wireshark網絡
流經集線器的全部網絡數據包都會被髮送到每個集線器鏈接的端口。併發
端口鏡像、集線器輸出、使用網絡分流器、ARP欺騙方式等四種方式tcp
- 端口鏡像
設置鏈接的交換機的端口鏡像功能,將交換機其餘一個或多個端口的通過的數據包複製一份到嗅探器鏈接的端口上。操作系統
- 集線器輸出
目標設備和交換機間插接一個集線器,嗅探器也接在集線器上;在交換機不支持端口鏡像的時候可使用這個方法,這個相似於,將二者之間的數據包「共享」給集線器上其餘的端口。指針
- 網絡分流器
有聚合的和非聚合的兩種類型,都是安置在兩個設備間來嗅探全部流經的網絡通訊,聚合的是三個接口,非聚合的是四個端口。server
- ARP欺騙
經過發送包含虛假MAC地址的ARP欺騙信息,劫持其餘計算機流量的過程;它是在交換式的網絡中進行高級技術。blog
當ARP劫持開始後,便可經過Wireshark軟件進行抓包分析。接口
在處理涉及多個網段與路由器問題的同時,須要將嗅探器移動到不一樣位置上;由此才能夠得到一個完整的網絡拓撲。ip
Ctrl+F:查找(過濾)
搜索類型 | 例子 |
---|---|
Display filter (表達式篩選) | Not ip ip.addr=xxx.xxx.xxx.xxx Arp |
Hex Value (十六進制值篩選) | 00:ff Ff:ff 00:a1:b2:f0 |
String (字符串篩選) | Workstationl UserB Domain |
標記了以後,數據包的顯示會加深。
類型:
弊端:
解析可能失敗;打開文件都要從新解析一遍;解析DNS名字會產生額外流量;解析過程佔用系統資源。
BPF限定詞 | 說明 | 例子 |
---|---|---|
Type | 名字或數字表明的意義 | Host,net,port |
Dir | 指明數據來源和目的 | src,dst |
Proto | 限定使用的協議 | Ether,ip,tcp,udp,http,ftp |
邏輯運算符: 與 && 或 || 非 !
表達式 | 說明 |
---|---|
src 192.168.1.11 && port 80 | 捕獲源地址是192.168.1.11 和源端口或目標端口是80的流量 |
Host xxx.xxx.xxx.xxx | 捕獲某個IP地址的計算機流量 |
Host testserver2 | 捕獲某個主機名的計算機流量 |
Ether host xxx.xx.xx.xx | 捕獲某個MAC地址的計算機流量 |
Src host xx.xxx.xxx.x | 捕獲來自某個計算機的流量 |
Dst host xx.x.x.x | 捕獲前往某個計算機的流量 |
Port xxxx | 捕獲指定端口的流量 |
!port xxx | 捕獲除指定端口之外的全部流量 |
Icmp[0] == 3 | 捕獲偏移量爲0值爲3(目標不可達)的Icmp數據包流量 |
Icmp[0] == 8 or icmp[0] == 0 | 捕捉表明 echo 請求 或 echo恢復的ICMP數據包流量 |
Icmp[0:2] == 0x0301 | 捕捉以類型 3 代碼 1表示的目標不可達、主機不可達的ICMP數據包流量 |
Tcp[13] & 1==1 | 捕捉設置了FIN位的TCP數據包 |
Tcp[13] & 2==2 | 捕捉設置了SYN位的TCP數據包 |
Tcp[13] & 4==4 | 捕捉設置了RST位的TCP數據包 |
Tcp[13] & 8==8 | 捕捉設置了PSH位的TCP數據包 |
Tcp[13] & 16==16 | 捕捉設置了ACK位的TCP數據包 |
Tcp[13] & 32==32 | 捕捉設置了URG位的TCP數據包 |
Tcp[13] == 18 | 捕捉TCP SYN-ACK數據包 |
Ether host 00:00:00:00:00 | 捕捉流入或流出mac地址的流量 |
!Ether host 00:00:00:00:00 | 捕捉流入或流出mac地址之外的全部的流量 |
Broadcast | 捕捉廣播流量 |
Udp | 捕獲UDP流量 |
使用自帶的過濾表達式來過濾顯示數據:
過濾器表達式 | 說明 |
---|---|
! tcp.port == 3389 | 排除RDP流量 |
Tcp.flags.syn == 1 | 具備SYN標誌位的TCP數據包 |
Tcp.flags.rst == 1 | 具備RST標誌位的TCP數據包 |
! arp | 排除ARP流量 |
http | 全部HTTP流量 |
Tcp.port == 23 || tcp.port ==21 | 文本管理流量 |
Smtp || pop || imap | 文本email流量 |
Ip.addr == xxx.xx.xx.xx | 指定IP的流量 |
Frame.len <= xxx | 長度小於xxx字節的數據包 |
統計每一個端點的地址、發送或收到的數據包的數量和字節數
每個IP就是一個網絡端點
統計A和B端點間會話的發送或收到的數據包的數量和字節數
能夠查看各類協議的分佈統計狀況
ps:【Wireshark軟件沒法實現tcp碼流跟蹤】
經過x軸(數據包間隔時間)、Y軸(數據包數量上限)來調整顯示的IO圖形,經過圖像過濾器能夠將不一樣的流量以不一樣的顏色顯示IO圖像對比。
基於兩個端口間TCP鏈接對話,確認數據包已被成功接收所需的時間,可與會話統計配合使用。
對於鏈接可視化以及將一段時間中的數據流顯示出來,配合對話統計使用,能夠查看兩端點之間的數據流。
【統計—FlowGraph…】
- 丟失:上一段數據包丟失時
- 延收:已確認丟失的數據包,又收到其餘ACK包時
- 保活:當一個鏈接的保活數據包出現時
- 零窗:接收方達到窗口大小,發出一個零窗口通知時
- 亂序:當數據包被亂序接收時
- 重傳:一次重傳會在收到一個重複ACK的20ms內進行
- 重傳:收到重複的ACK或重傳計時器超時
- 重複ACK:當主機沒有收到下一個指望序列號的數據包是,會發生數據重複的ACK
- 零窗探查:零窗口通知包發出後,用來監視TCP接收窗口的狀態
- 保活ACK:用來響應保活數據包
- 零窗ACK:用來響應零窗口探查數據包
- 窗口已滿:通知傳輸主機其接收者的TCP接收已滿
- 窗口更新:接收者發出,通知發送者TCP接收窗口大小被改變
偏移位 | 0~7 | 8~15 |
---|---|---|
0 | 硬件類型 | ~ |
16 | 協議類型 | ~ |
32 | 硬件地址長度 | 協議地址長度 |
48 | 操做 | ~ |
64 | 發送方的MAC1 | ~ |
80 | 發送方的MAC2 | ~ |
96 | 發送方的MAC3 | ~ |
112 | 發送方的協議地址1 | ~ |
144 | 目標的MAC1 | ~ |
160 | 目標的MAC2 | ~ |
176 | 目標的MAC3 | ~ |
192 | 目標的協議地址1 | ~ |
208 | 目標的協議地址2 | ~ |
上述的均爲:request(請求包),下圖爲(reply)響應包
當IP地址發生改變後,網絡主機中緩存的IP和MAC映射就失效了,爲了防止通訊錯誤,無償ARP請求被髮送到網絡中,強制全部收到它的設備更新ARP映射緩存。
- 服務類型[級別]:優先級標誌位和服務類型標誌位,用來進行QoS
- 標識符:識別一耳光數據包或被分片數據包的次序;惟一
- 標記符:標記數據包是否爲一組分片數據包的一部分
- 分片偏移:該數據包是個分片,數據包按分片偏移值順序重組
- 生存時間:TTL —— 超時TTL時間,數據包被丟棄
將一個數據流分爲更小的片斷,是IP用於解決跨越不一樣類型網絡時可靠傳輸的一個特性。基於數據鏈路層所使用的最大傳輸單元MTU的大小,默認是1500字節(不包含14字節的以太網頭自己),當數據包大小大於MTU時會被分片。
- 序號:表示一個TCP片斷。
- 確認序號:但願從另外一個設備獲得的下一個數據包序號
- 緊急指針:若是設置了URG位,緊急指針將告訴CPU從數據包的哪裏開始讀取數據
1~1023:標準端口組;特定服務會用到標準端口
1024~65535:臨時端口組;操做系統會隨機地選擇一個端口讓某個通訊單獨使用
下面爲TCP創建鏈接時的三次握手包的數據包
【通俗介紹】:
A向B發送創建鏈接的邀請,B收到A的SYN以後,向A發送收到的SYN併發送本身的ACK,表示本身收到了,而且發送ACK贊成A和B創建鏈接;A收到ACK以後,就和B創建了鏈接。
設置TCP數據包序列號的顯示方式:
Type | Name | Info |
---|---|---|
0 | Echo Reply | Echo 回覆 |
1 | Unassigned | 未賦值 |
2 | Unassigned | 未賦值 |
3 | Destination Unreachable | 目標不可達 |
4 | Source Quench (Deprecated) | 報源抑制(棄用) |
5 | Redirect | 重定向 |
6 | Alternate Host Address | 修改主機地址 |
7 | Unassigned | 未賦值 |
8 | Echo REauest | Echo請求 |
9 | Router Advertisement | 路由器公告 |
10 | Router Solicitation | 路由器請求 |
11 | Time Exceeded | 超時 |
12 | Parameter Problem | 參數問題 |
13 | Timeestamp | 時間戳 |
14 | Timestamp Reply | 時間戳應答 |
……………………
路由跟蹤將TTL自加1的過程一直持續到路由到達目的IP,與路徑上的每個路由進行通訊並echo返回一個響應包。