Linux-網絡分析-tcpdump

前邊對netstat展開過分析與描述,在linux下 ,那還有其他分析工具嘛?
tcpdump是Linux命令行下常用的的一個抓包工具,記錄一下平時常用的方式,mac os
tcpdump這個功能參數很多,表達式的選項也非常多,非常強大,不過常用的功能確實不多。詳情可以通過man查看系統手冊。
在客戶端開發的時候,可以使用fiddler或者charles進行抓包分析,更方便吧。

在2g網下或非wifi下,想抓包調試,tcpdump+wireshark,這個組合很不錯~
Wireshark(前稱Ethereal)是一個網絡封包分析軟件。網絡封包分析軟件的功能是擷取網絡封包,並儘可能顯示出最爲詳細的網絡封包資料。
一. tcpdump事例



tcpdump的參數衆多,如下



(以太網網絡圖中eth1/0/10 代表網卡一,網卡二,網卡三 lo代表127.0.0.1,即localhost)

二. tcpdump常用操作

默認啓動
tcpdump


監視指定網絡接口的數據包
tcpdump -i eth1
如果不指定網卡,默認tcpdump只會監視第一個網絡接口,一般是eth0,下面的例子都沒有指定網絡接口。


監聽指定的主機
$ tcpdump -i eth0 -nn 'host 192.168.1.231'
這樣的話,192.168.1.231這臺主機接收到的包和發送的包都會被抓取。
$ tcpdump -i eth0 -nn 'src host 192.168.1.231'
這樣只有192.168.1.231這臺主機發送的包纔會被抓取。
$ tcpdump -i eth0 -nn 'dst host 192.168.1.231'
這樣只有192.168.1.231這臺主機接收到的包纔會被抓取。

監聽指定端口
$ tcpdump -i eth0 -nnA 'port 80'
上例是用來監聽主機的80端口收到和發送的所有數據包,結合-A參數,在web開發中,真是非常有用。

監聽指定主機和端口
$ tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'
多個條件可以用and,or連接。上例表示監聽192.168.1.231主機通過80端口發送的數據包。

監聽除某個端口外的其它端口
$ tcpdump -i eth0 -nnA '!port 22'
如果需要排除某個端口或者主機,可以使用“!”符號,上例表示監聽非22端口的數據包。

三.其他
前邊敘述過netstat相關分析,那麼他們啥區別呢?
tcpdump程序
tcpdump一邊從網絡讀入分組一邊顯示關於這些分組的大量信息。它還能夠只顯示與所指定的準則匹配的那些分組。

netstat程序
netstat服務於多個目的:
(1)展示網絡端點的狀態。
(2)展示某個主機上各個接口所屬的多播組。
(3)使用-s選項顯示各個協議的統計信息。
(4)使用-r選項顯示路由表或使用-i選項顯示接口信息。

lsof程序
名字lsof代表“list open files”,即列出打開的文件。
lsof的常見用途之一是找出哪個進程在指定的IP地址或端口號上打開了一個套接口。netstat告訴我們哪些IP地址和端口正在使用中以及各個TCP連接的狀態,卻沒有標識相應的進程。lsof彌補這個缺陷。

相關文章:
tcpdump&wireshark初次使用總結http://www.51testing.com/html/34/361634-938657.html

本文地址:




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章