tcpdump過濾特定IP的資料包,結果不對?
專案中自己需要寫個程式通過
pcap-filter
表示式過濾資料包,測試時發現過濾結果不對!現將問題簡化如下(以tcpdump舉例)
問題描述
- 通過 tcpdump 過濾出173_20170107_180747_p5p2.pcap 檔案中IP為 10.10.88.173的資料包,並儲存為result.pcap
- 過濾命令
tcpdump -r 173_20170107_180747_p5p2.pcap -w result.pcap "host 10.10.88.173"
- 原始資料包用wireshark開啟,設定過濾表示式為
ip.addr==10.10.88.173
,發現IP為 10.10.88.173的資料包個數為7150
- 但用wireshark開啟tcpdump過濾出的result.pcap檔案,發現其資料包個數為
7152
,如下圖!(此時如果知道原因就不用往下看了)
問題分析
- 通過對比wireshark和tcpdump過濾出的資料包,發現tcpdump過濾出的pcap檔案,多了兩個ARP資料包。如圖
- 但就自己所瞭解的,ARP協議應屬於鏈路層的,不屬於IP網路層的(這種表述可能有爭論),為什麼tcpdump會將其包含在過濾結果內呢?
- 通過
man pcap-filter
查閱pcap-filter表示式語法,發現自己寫的tcpdump過濾表示式host 10.10.88.173
是正確的啊
- 但細看卻發現,預設下的
host
src host
,dst host
過濾出的IP資料包,是包含ARP, RARP協議的!!!準確描述如下
問題解決
- 將tcpdump過濾表示式修改為
ip host 10.10.88.173
,即執行命令tcpdump -r 173_20170107_180747_p5p2.pcap -w result.pcap "ip host 10.10.88.173"
即可!
問題總結
- 在使用tcpdump或其他工具過特定IP的資料包時,pcap-filter過濾表示式的書寫要注意!
- 如果僅僅是想過濾出IP層的特定IP的資料,需要使用
ip host X.X.X.X
或ip src X.X.X.X
或ip dst X.X.X.X
- 如果僅僅是想過濾出ARP或RARP協議的IP資料包時,需要使用
arp host X.X.X.X
或rarp host X.X.X.X
man pcap-filter
,多熟悉下
相關推薦
tcpdump過濾特定IP的資料包,結果不對?
專案中自己需要寫個程式通過pcap-filter表示式過濾資料包,測試時發現過濾結果不對!現將問題簡化如下(以tcpdump舉例) 問題描述 通過 tcpdump 過濾出173_20170
ip資料包經由路由轉發的時候源ip MAC,目的ip 目的MAC是否改變
轉載自https://blog.csdn.net/yiluyangguang1234/article/details/56666109 ip資料包經由路由轉發的時候源ip,目的ip是否改變? 最近面試網路方面的經常問到這個問題,答案是不能改變的,*除非做了nat轉換才能改變。 不過mac
UDP傳輸時IP層的分片是怎麼回事? UDP傳輸時為什麼不要用tcpdump過濾埠來抓包?
先來看程式, 服務端: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netin
Linux核心bug引起Mesos、Kubernetes、Docker的TCP/IP資料包失效
最近發現Linux核心bug,會造成使用veth裝置進行路由的容器(例如Docker on IPv6、Kubernetes、Google Container Engine和Mesos)不檢查TCP校驗碼(checksum),這會造成應用在某些場合下,例如壞的網路裝置,接收錯誤資料。這個bug
本機發送IP資料包
本地傳送IP資料包是指資料包包括:傳輸層產生的資料包、裸IP、SCTP、IGMP,TCP和網路層的介面函式是ip_queue_xmit,UDP和網路層介面函式是ip_push_pending_frames,資料包對外發送在核心要做以下幾件事情。 a、查詢下一個站點 IP層需要知道完成資料包輸
ubuntu 下使用tcpdump 抓取TCP資料包
問題來源: 需要測試一個閘道器(包括機頂盒和路由器),網線直接連線電腦和待測機器。配置IP地址為192.168.1.100,保證IP地址與網線另一端閘道器IP地址192.168.1.1在同一個網段。 手頭有傳送的json報文資料段,直接用win7下的tcp通訊助手傳送總是失敗,得不到正確的響
IP協議及IP資料包詳解
回憶一下網路層的主要功能:通過TCP或者UDP協議繪製網路地圖,資料包選取合適的路徑進行傳輸(網路層基本單位 : 資料包 Package) (1)編址(目標端的IP地址),資料傳輸的過程當中就必須表明
Https:從tcp建立連線到https接收到第一個資料包,到底發生了什麼?
https 建立連線過程 Abstract https 是基於http 和 ssl(安全套接字層) 的安全傳輸協議,使用ssl 協議作為會話層協議,這裡通過這篇文章結合抓包來看一下具體過程 About SSL / TLS 這個協議最早是由網景公司 開發,但是隨著網景的沒落,現在由ietf負責維護,
黑客-抓取資料包,並破解加密密碼
本文目的:抓取區域網內所有資料包,並獲取資料包內密碼,針對一些加密了的密碼,進行解密工作,以此獲取對方密碼。 但是這個方法有點複雜,不易掌握,而且可能影響對方網速。這裡有一個巧妙的方式。 我是以寢室網作為實驗場地 第一步。開啟360wifi,將密碼賬號
用Fiddler抓取PC、手機瀏覽器\APP資料包,分析埋點
先關了防火牆 然後隨便下一個fiddler,然後別升級…… 然後點開下圖的配置 然後如下圖配置 如下圖繼續設定,埠號找一個沒人用的,一般來說用8888,不過8888由於預設的用它的太多了,所以最好換一個,記下這個伺服器埠號 然後用電腦開個手機熱點然後手機連
IP資料包的格式及分片
一、IP資料包的報文格式 首先我們需要了解資料報的格式: 1-1.版本4位,表示版本號,目前最廣泛的是4=B1000,即常說的IPv4;相信IPv6以後會廣泛應用,它能給世界上每個鈕釦都分配 一個IP地址。 1-2.頭長4位,資料包頭
計算機網路IP資料包的3個標誌位以及IP資料報的分片和重組過程
1.3個標誌位是哪3位? 目前只有兩位有意義 <1>標誌位中的最低位記為MF(More Fragment)。MF=1即表示後面"還有分片"的資料報。MF=0表示這已是若干資料報片中的最後一個。 <2>標誌欄位中間的以為記為DF(Don't Fragm
使用Wireshark捕獲資料幀和IP資料包教程
About Wireshark Wireshark is one of the world's foremost network protocol analyzers, and is the standard in many parts of the in
tcpdump/libpcap中捕獲資料包的時間戳
tcpdump從libpcap獲取time-stamp,libpcap從OS核心獲取time stamp Q: When is a packet time-stamped? Howaccurate are the time stamps? Tcpdump gets tim
IP資料包格式
版本:佔4位,指IP協議的版本.通訊雙方使用的IP協議版本必須一致.日前廣泛使用的 IP協議版本號為 4 (即 IPv4).IPv6 目前還處於起步階段.首部長度:佔 4 位,可表示的最大十進位制數值是15.請注意,這個欄位所表示數的單位是32位字 (1個32位字長是4 位元組),因此,當 IP 的首部長度為
python+pypcap+dpkt抓取IP資料包
1.簡介 pypcap庫是一款基於libpcap封裝的為python語言提供介面的抓包庫。 dpkt則是用來解析資料包的庫。 pip install pypcap pip install dpkt 2. #coding:utf-8 import pc
IP資料包頭部,TCP頭部,偽TCP頭部結構定義
我自己整理出來的彙編版本 ;;IP資料包頭部結構定義 ip_head struct h_lenver db ? ;4位IP版本號+4位首部長度 TOS db ? ;8位服務型別 tcp_len dw ? ;16位TCP資料包總長度 ident dw ? ;16位標識
解決mysql導資料時,格式不對、匯入慢、丟資料的問題
如果希望一勞永逸的解決慢的問題,不妨把你的mysql升級到mysql8.0吧,mysql8.0預設的字符集已經從latin1改為utf8mb4,因此現在UTF8的速度要快得多,在特定查詢時速度提
wireshark捕獲/過濾指定ip地址資料包
轉自http://www.6san.com/630/ 使用捕獲過濾或顯示過濾,wireshark可以僅捕獲/顯示經過指定ip的資料包,即某個ip收到或發出的所有資料包。wireshark捕獲/顯示過濾使用方法見:“wireshark過濾器” 顯示過濾:wireshar
tcpdump使用詳解及資料包結果分析
-轉自https://blog.csdn.net/liang_baikai/article/details/79626180 選出其中我需要的: 使用詳解 (1)監視指定主機和埠的資料包 如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令 tcpdump tcp