在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux網(wǎng)絡必備技能tcpdump應用場景和基礎原理與實戰(zhàn)案例

Linux愛好者 ? 來源:CSDN技術社區(qū) ? 作者:chopin11vip ? 2021-03-19 11:55 ? 次閱讀

今天要分享的是 tcpdump,它是 Linux 系統(tǒng)中特別有用的網(wǎng)絡工具,通常用于故障診斷、網(wǎng)絡分析,功能非常的強大。

相對于其它 Linux 工具而言,tcpdump 是復雜的。當然我也不推薦你去學習它的全部,學以致用,能夠解決工作中的問題才是關鍵。

本文會從應用場景和基礎原理出發(fā),提供豐富的實踐案例,讓你快速的掌握 tcpdump 的核心使用方法,足以應對日常工作的需求。

應用場景

在日常工作中遇到的很多網(wǎng)絡問題都可以通過 tcpdump 優(yōu)雅的解決:

1. 相信大多數(shù)同學都遇到過 SSH 連接服務器緩慢,通過 tcpdump 抓包,可以快速定位到具體原因,一般都是因為 DNS 解析速度太慢。

2. 當我們工程師與用戶面對網(wǎng)絡問題爭執(zhí)不下時,通過 tcpdump 抓包,可以快速定位故障原因,輕松甩鍋,毫無壓力。

3. 當我們新開發(fā)的網(wǎng)絡程序,沒有按照預期工作時,通過 tcpdump 收集相關數(shù)據(jù)包,從包層面分析具體原因,讓問題迎刃而解。

4. 當我們的網(wǎng)絡程序性能比較低時,通過 tcpdump 分析數(shù)據(jù)流特征,結合相關協(xié)議來進行網(wǎng)絡參數(shù)優(yōu)化,提高系統(tǒng)網(wǎng)絡性能。

5. 當我們學習網(wǎng)絡協(xié)議時,通過 tcpdump 抓包,分析協(xié)議格式,幫助我們更直觀、有效、快速的學習網(wǎng)絡協(xié)議。

上述只是簡單羅列幾種常見的應用場景,而 tcpdump 在網(wǎng)絡診斷、網(wǎng)絡優(yōu)化、協(xié)議學習方面,確實是一款非常強大的網(wǎng)絡工具,只要存在網(wǎng)絡問題的地方,總能看到它的身影。

熟練的運用 tcpdump,可以幫助我們解決工作中各種網(wǎng)絡問題,下邊我們先簡單學習下它的工作原理

工作原理

tcpdump 是 Linux 系統(tǒng)中非常有用的網(wǎng)絡工具,運行在用戶態(tài),本質上是通過調用 libpcap 庫的各種 api 來實現(xiàn)數(shù)據(jù)包的抓取功能。

29482068-8679-11eb-8b86-12bb97331649.jpg

通過上圖,我們可以很直觀的看到,數(shù)據(jù)包到達網(wǎng)卡后,經(jīng)過數(shù)據(jù)包過濾器(BPF)篩選后,拷貝至用戶態(tài)的 tcpdump 程序,以供 tcpdump 工具進行后續(xù)的處理工作,輸出或保存到 pcap 文件。

數(shù)據(jù)包過濾器(BPF)主要作用,就是根據(jù)用戶輸入的過濾規(guī)則,只將用戶關心的數(shù)據(jù)包拷貝至 tcpdump,這樣能夠減少不必要的數(shù)據(jù)包拷貝,降低抓包帶來的性能損耗。

思考:這里分享一個真實的面試題

面試官:如果某些數(shù)據(jù)包被 iptables 封禁,是否可以通過 tcpdump 抓到包?

通過上圖,我們可以很輕易的回答此問題。

因為 Linux 系統(tǒng)中 netfilter 是工作在協(xié)議棧階段的,tcpdump 的過濾器(BPF)工作位置在協(xié)議棧之前,所以當然是可以抓到包了!

我們理解了 tcpdump 基本原理之后,下邊直接進入實戰(zhàn)!

實戰(zhàn):基礎用法

我們先通過幾個簡單的示例來介紹 tcpdump 基本用法。

1. 不加任何參數(shù),默認情況下將抓取第一個非 lo 網(wǎng)卡上所有的數(shù)據(jù)包

$ tcpdump

2. 抓取 eth0 網(wǎng)卡上的所有數(shù)據(jù)包

$ tcpdump -i eth0

3. 抓包時指定 -n 選項,不解析主機和端口名。這個參數(shù)很關鍵,會影響抓包的性能,一般抓包時都需要指定該選項。

$ tcpdump -n -i eth0

4. 抓取指定主機 192.168.1.100 的所有數(shù)據(jù)包

$ tcpdump -ni eth0 host 192.168.1.100

5. 抓取指定主機 10.1.1.2 發(fā)送的數(shù)據(jù)包

$ tcpdump -ni eth0 src host 10.1.1.2

6. 抓取發(fā)送給 10.1.1.2 的所有數(shù)據(jù)包

$ tcpdump -ni eth0 dst host 10.1.1.2

7. 抓取 eth0 網(wǎng)卡上發(fā)往指定主機的數(shù)據(jù)包,抓到 10 個包就停止,這個參數(shù)也比較常用

$ tcpdump -ni eth0 -c 10 dst host 192.168.1.200

8. 抓取 eth0 網(wǎng)卡上所有 SSH 請求數(shù)據(jù)包,SSH 默認端口是 22

$ tcpdump -ni eth0 dst port 22

9. 抓取 eth0 網(wǎng)卡上 5 個 ping 數(shù)據(jù)包

$ tcpdump -ni eth0 -c 5 icmp

10. 抓取 eth0 網(wǎng)卡上所有的 arp 數(shù)據(jù)包

$ tcpdump -ni eth0 arp

11. 使用十六進制輸出,當你想檢查數(shù)據(jù)包內容是否有問題時,十六進制輸出會很有幫助。

$ tcpdump -ni eth0 -c 1 arp -X

listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes

1231.602995 ARP, Request who-has 172.17.92.133 tell 172.17.95.253, length 28

0x0000: 0001 0800 0604 0001 eeff ffff ffff ac11 。。。。。。。。。。。。。。。。

0x0010: 5ffd 0000 0000 0000 ac11 5c85 _.。。。。。。。。。

12. 只抓取 eth0 網(wǎng)卡上 IPv6 的流量

$ tcpdump -ni eth0 ip6

13. 抓取指定端口范圍的流量

$ tcpdump -ni eth0 portrange 80-9000

14. 抓取指定網(wǎng)段的流量

$ tcpdump -ni eth0 net 192.168.1.0/24

實戰(zhàn):高級進階

tcpdump 強大的功能和靈活的策略,主要體現(xiàn)在過濾器(BPF)強大的表達式組合能力。

本節(jié)主要分享一些常見的所謂高級用法,希望讀者能夠舉一反三,根據(jù)自己實際需求,來靈活使用它。

1. 抓取指定客戶端訪問 ssh 的數(shù)據(jù)包

$ tcpdump -ni eth0 src 192.168.1.100 and dst port 22

2. 抓取從某個網(wǎng)段來,到某個網(wǎng)段去的流量

$ tcpdump -ni eth0 src net 192.168.1.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16

3. 抓取來自某個主機,發(fā)往非 ssh 端口的流量

$ tcpdump -ni eth0 src 10.0.2.4 and not dst port 22

4. 當構建復雜查詢的時候,你可能需要使用引號,單引號告訴 tcpdump 忽略特定的特殊字符,這里的 () 就是特殊符號,如果不用引號的話,就需要使用轉義字符

$ tcpdump -ni eth0 ‘src 10.0.2.4 and (dst port 3389 or 22)’

5. 基于包大小進行篩選,如果你正在查看特定的包大小,可以使用這個參數(shù)

小于等于 64 字節(jié):

$ tcpdump -ni less 64

大于等于 64 字節(jié):

$ tcpdump -ni eth0 greater 64

等于 64 字節(jié):

$ tcpdump -ni eth0 length == 64

6. 過濾 TCP 特殊標記的數(shù)據(jù)包

抓取某主機發(fā)送的 RST 數(shù)據(jù)包:

$ tcpdump -ni eth0 src host 192.168.1.100 and ‘tcp[tcpflags] & (tcp-rst) != 0’

抓取某主機發(fā)送的 SYN 數(shù)據(jù)包:

$ tcpdump -ni eth0 src host 192.168.1.100 and ‘tcp[tcpflags] & (tcp-syn) != 0’

抓取某主機發(fā)送的 FIN 數(shù)據(jù)包:

$ tcpdump -ni eth0 src host 192.168.1.100 and ‘tcp[tcpflags] & (tcp-fin) != 0’

抓取 TCP 連接中的 SYN 或 FIN 包

$ tcpdump ‘tcp[tcpflags] & (tcp-syn|tcp-fin) != 0’

7. 抓取所有非 ping 類型的 ICMP 包

$ tcpdump ‘icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply’

8. 抓取端口是 80,網(wǎng)絡層協(xié)議為 IPv4, 并且含有數(shù)據(jù),而不是 SYN、FIN 以及 ACK 等不含數(shù)據(jù)的數(shù)據(jù)包

$ tcpdump ‘tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)《《2)) - ((tcp[12]&0xf0)》》2)) != 0)’

解釋一下這個復雜的表達式,具體含義就是,整個 IP 數(shù)據(jù)包長度減去 IP 頭長度,再減去 TCP 頭的長度,結果不為 0,就表示數(shù)據(jù)包有 data,如果還不是很理解,需要自行補一下 tcp/ip 協(xié)議

9. 抓取 HTTP 報文,0x4754 是 GET 前兩字符的值,0x4854 是 HTTP 前兩個字符的值

$ tcpdump -ni eth0 ‘tcp[20:2]=0x4745 or tcp[20:2]=0x4854’

常用選項

通過上述的實戰(zhàn)案例,相信大家已經(jīng)掌握的 tcpdump 基本用法,在這里來詳細總結一下常用的選項參數(shù)。

(一)基礎選項

-i:指定接口

-D:列出可用于抓包的接口

-s:指定數(shù)據(jù)包抓取的長度

-c:指定要抓取的數(shù)據(jù)包的數(shù)量

-w:將抓包數(shù)據(jù)保存在文件中

-r:從文件中讀取數(shù)據(jù)

-C:指定文件大小,與 -w 配合使用

-F:從文件中讀取抓包的表達式

-n:不解析主機和端口號,這個參數(shù)很重要,一般都需要加上

-P:指定要抓取的包是流入還是流出的包,可以指定的值 in、out、inout

(二)輸出選項

-e:輸出信息中包含數(shù)據(jù)鏈路層頭部信息

-t:顯示時間戳,tttt 顯示更詳細的時間

-X:顯示十六進制格式

-v:顯示詳細的報文信息,嘗試 -vvv,v 越多顯示越詳細

過濾表達式

tcpdump 強大的功能和靈活的策略,主要體現(xiàn)在過濾器(BPF)強大的表達式組合能力。

(一)操作對象

表達式中可以操作的對象有如下幾種:

type,表示對象的類型,比如:host、net、port、portrange,如果不指定 type 的話,默認是 host

dir:表示傳輸?shù)姆较颍扇〉姆绞綖椋簊rc、dst。

proto:表示協(xié)議,可選的協(xié)議有:ether、ip、ip6、arp、icmp、tcp、udp。

(二)條件組合

表達對象之間還可以通過關鍵字 and、or、not 進行連接,組成功能更強大的表達式。

or:表示或操作

and:表示與操作

not:表示非操作

建議看到這里后,再回頭去看實戰(zhàn)篇章的示例,相信必定會有更深的理解。如果是這樣,那就達到了我預期的效果了!

經(jīng)驗到這里就不再加新知識點了,分享一些工作中總結的經(jīng)驗:

1. 我們要知道 tcpdump 不是萬能藥,并不能解決所有的網(wǎng)絡問題。

2. 在高流量場景下,抓包可能會影響系統(tǒng)性能,如果是在生產環(huán)境,請謹慎使用!

3. 在高流量場景下,tcpdump 并不適合做流量統(tǒng)計,如果需要,可以使用交換機鏡像的方式去分析統(tǒng)計。

4. 在 Linux 上使用 tcpdump 抓包,結合 wireshark 工具進行數(shù)據(jù)分析,能事半功倍。

5. 抓包時,盡可能不要使用 any 接口來抓包。

6. 抓包時,盡可能指定詳細的數(shù)據(jù)包過濾表達式,減少無用數(shù)據(jù)包的拷貝。

7. 抓包時,盡量指定 -n 選項,減少解析主機和端口帶來的性能開銷。

最后

通過上述內容,我們知道 tcpdump 是一款功能強大的故障診斷、網(wǎng)絡分析工具。在我們的日常工作中,遇到的網(wǎng)絡問題總是能夠通過 tcpdump 來解決。

不過 tcpdump 相對于其它 Linux 命令來說,會復雜很多,但鑒于它強大功能的誘惑力,我們多花一些時間是值得的。要想很好地掌握 tcpdump,需要對網(wǎng)絡報文(TCP/IP協(xié)議)有一定的了解。

當然,對于簡單的使用來說,只要有網(wǎng)絡基礎概念就行,掌握了 tcpdump 常用方法,就足以應付工作中大部分網(wǎng)絡相關的疑難雜癥了。
編輯:lyn

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11322

    瀏覽量

    209857
  • 故障診斷
    +關注

    關注

    5

    文章

    248

    瀏覽量

    26641
  • 網(wǎng)絡分析

    關注

    0

    文章

    30

    瀏覽量

    11818

原文標題:Linux 網(wǎng)絡分析必備技能:tcpdump 實戰(zhàn)詳解

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    tcpdump使用示例

    ?是一項基本技能,不僅對于系統(tǒng)管理員、網(wǎng)絡工程師或安全專業(yè)人員, 對于自己部署玩的一些服務器來說,也會派上用場。 基礎知識 常用參數(shù) 下面的命令是使用?tcpdump?時常見的參數(shù)。
    的頭像 發(fā)表于 01-06 09:33 ?83次閱讀

    Linux運維必備技能:手把手教你用tcpdump精準抓包

    簡介 網(wǎng)絡數(shù)據(jù)包截獲分析工具。支持針對網(wǎng)絡層、協(xié)議、主機、網(wǎng)絡或端口的過濾。并提供and、or、not等邏輯語句幫助去除無用的信息。 tcpdump - dump traffic on
    的頭像 發(fā)表于 12-24 11:20 ?515次閱讀

    模塊化儀器的技術原理和應用場景

    模塊化儀器是插拔式的計算機板卡,功能類似于傳統(tǒng)的臺式儀器,其技術原理和應用場景可以歸納如下:一、技術原理 模塊化設計:模塊化儀器使用一個框架,可以將不同類型或不同數(shù)量的功能卡插入其中,從而適應一系列
    發(fā)表于 11-28 15:09

    OTA測試暗箱的技術原理和應用場景

    OTA測試暗箱在無線通信設備的研發(fā)與測試中扮演著至關重要的角色。以下是對OTA測試暗箱技術原理和應用場景的詳細闡述:一、OTA測試暗箱的技術原理OTA測試暗箱的技術原理主要基于電磁波在封閉空間
    發(fā)表于 11-14 14:36

    無線通信測試平臺的技術原理和應用場景

    和4G/5G網(wǎng)絡。 二、無線通信測試平臺的應用場景無線通信測試平臺的應用場景非常廣泛,包括但不限于以下幾個方面: 移動通信網(wǎng)絡測試: 對2G、3G、4G、5G等移動通信
    發(fā)表于 11-06 14:29

    信令測試儀器的技術原理和應用場景

    信令測試儀器是一種專門用于測試通信系統(tǒng)中信令的設備,其技術原理和應用場景如下:一、技術原理信令測試儀器的技術原理主要涉及信令的捕獲、解碼和分析。 信令捕獲:信令測試儀器通過物理接口或無線接收器捕獲
    發(fā)表于 10-31 14:45

    CentOS中使用tcpdump抓包

    CentOS中使用tcpdump抓包
    的頭像 發(fā)表于 10-28 14:48 ?277次閱讀

    便攜式示波器的技術原理和應用場景

    便攜式示波器作為示波器的一種,具有體積小、重量輕、便于攜帶等特點,在多個領域有著廣泛的應用。以下是對其技術原理和應用場景的詳細介紹:一、技術原理便攜式示波器的基本原理與傳統(tǒng)示波器相同,都是通過采集
    發(fā)表于 10-24 14:31

    實時示波器的技術原理和應用場景

    實時示波器是一種高性能的電子測量儀器,其技術原理和應用場景對于電子工程和通信技術領域具有重要意義。以下是對實時示波器的技術原理和應用場景的詳細解釋:一、技術原理實時示波器的工作原理基于電子束在熒光屏
    發(fā)表于 10-23 14:22

    源測量單元設備的技術原理和應用場景

    源測量單元(SMU)設備是一種集成了精密電源(PPS)和高性能數(shù)字萬用表(DMM)功能的測試設備。以下是對其技術原理和應用場景的詳細解析:一、技術原理 集成功能: SMU在單個儀器中集成了電源
    發(fā)表于 10-22 11:10

    網(wǎng)絡監(jiān)控工具Nagios和Zabbix的功能和使用場景

    在現(xiàn)代網(wǎng)絡管理中,監(jiān)控工具是確保網(wǎng)絡運行正常、快速發(fā)現(xiàn)和解決問題的關鍵。本文將詳細介紹網(wǎng)絡工程師常用的兩款監(jiān)控工具:Nagios、Zabbix。每款工具都有其獨特的功能和使用場景,了解
    的頭像 發(fā)表于 08-13 16:28 ?1414次閱讀
    <b class='flag-5'>網(wǎng)絡</b>監(jiān)控工具Nagios和Zabbix的功能和使<b class='flag-5'>用場景</b>

    FPGA與MCU的應用場景

    FPGA的應用場景有這些: 快速原型設計 FPGA可以快速配置成多種定制數(shù)字電路,允許在不需要昂貴且耗時的制造過程的情況下進行快速部署和修改。 硬件加速 在需要高性能和低延遲的應用中,F(xiàn)PGA的并行
    發(fā)表于 07-29 15:45

    tcpdump命令介紹

    1.命令簡介tcpdump 是一款類 Unix/Linux 環(huán)境下的抓包工具,允許用戶截獲和顯示發(fā)送或收到的網(wǎng)絡數(shù)據(jù)包。tcpdump 是一個在 BSD 許可證下發(fā)布的自由軟件。 2.
    發(fā)表于 04-08 06:02

    NanoEdge AI的技術原理、應用場景及優(yōu)勢

    能耗并提高數(shù)據(jù)安全性。本文將對 NanoEdge AI 的技術原理、應用場景以及優(yōu)勢進行綜述。 1、技術原理 NanoEdge AI 的核心技術包括邊緣計算、神經(jīng)網(wǎng)絡壓縮和低功耗硬件設計。邊緣計算
    發(fā)表于 03-12 08:09

    AG32VF-MIPI應用場景

    MIPI接口技術在圖像和視頻傳輸中的應用越來越廣泛,應用場景也在不斷拓展,而不僅限于移動設備。MIPI接口在物聯(lián)網(wǎng)、智能家居、智能監(jiān)控、智能電視、智能汽車等領域也得到廣泛應用。 MIPI還可
    發(fā)表于 01-22 08:56
    主站蜘蛛池模板: 日韩电影毛片| 4455四色永久免费| 亚洲一级色片| 91久久夜色精品国产网站| 欧美怡红院免费全部视频| 伊人啪啪| avtt天堂网 手机资源| 欧美区在线| 国内精品哆啪啪| 欧美视频不卡一区二区三区| 亚洲国产七七久久桃花| 四色成人网| 夜夜澡人人爽人人喊_欧美| 夜夜爱视频| 无毒在线| 亚洲午夜视频| 天天干天天操天天插| 亚洲第一区精品日韩在线播放| 国产网站免费看| 成 人色 网 站 欧美大片在线观看| 夜夜爱夜夜做夜夜爽| 加勒比一木道|视频在线看| 毛片又大又粗又长又硬| 操国产美女| 亚洲 欧美 成人| 亚洲精品成人在线| 日本免费人成在线网站| 三级免费黄录像| 天天视频色版| 欧美伊人网| 国产日韩三级| 国产精品美女自在线观看免费| 黄色大全片| 精品一区二区三区免费爱 | 午夜美女影院| 午夜骚片| 久久精品操| 成人在线一区二区三区| 一区二区三区四区在线不卡高清 | 国产成人优优影院| 天堂网在线最新版www|