【網絡分析工具】網絡工具wireshark、TCPdump、iperf使用詳解

這里寫目錄標題

      • 1. wireshark
          • 1.1. 過濾包
          • 1.2. 常見分析
      • 2. tcpdump
      • 3. iperf

1. wireshark

**ip.dst eq 10.0.0.21** 是用于網絡流量分析工具(例如 Wireshark 或 tcpdump)的過濾器表達式。 它的作用是篩選出所有目標IP地址為 10.0.0.21 的數據包

IP.addr == 10.0.0.1 搜索指定ip

1.1. 過濾包

會彈出來的

  • 協議過濾

  • quic:過濾所有 QUIC 協議的數據包。

  • udp:過濾所有 UDP 協議的數據包(QUIC 基于 UDP)。

  • tcp:過濾所有 TCP 協議的數據包。

  • http2:過濾所有 HTTP/2 協議的數據包。

  • tls:過濾所有 TLS 協議的數據包。

  • IP 地址過濾

  • ip.src == 192.168.1.1:過濾源 IP 為 192.168.1.1 的數據包。

  • ip.dst == 192.168.1.1:過濾目標 IP 為 192.168.1.1 的數據包。

  • ip.addr == 192.168.1.1:過濾源或目標 IP 為 192.168.1.1 的數據包。

  • 端口過濾

  • udp.port == 443:過濾 UDP 端口為 443 的數據包(QUIC 通常使用 443 端口)。

  • tcp.port == 80:過濾 TCP 端口為 80 的數據包。

  • tcp.srcport == 8080 過濾 TCP 源端口為 8080 的數據包

  • 邏輯運算符

  • &&:與(例如 quic && ip.src == 192.168.1.1)。

  • ||:或(例如 quic || tls)。

  • !:非(例如 !tcp)。

基本 TCP 過濾

  1. tcp 過濾所有 TCP 協議的數據包。
  2. tcp.port == 80 過濾 TCP 端口為 80 的數據包(HTTP 流量)。
  3. tcp.port == 443 過濾 TCP 端口為 443 的數據包(HTTPS 流量)。
  4. tcp.srcport == 8080 過濾 TCP 源端口為 8080 的數據包。
  5. tcp.dstport == 22 過濾 TCP 目標端口為 22 的數據包(SSH 流量)。

TCP 連接狀態過濾

  1. tcp.flags.syn == 1 && tcp.flags.ack == 0 過濾 TCP SYN 包(第一次握手)。
  2. tcp.flags.syn == 1 && tcp.flags.ack == 1 過濾 TCP SYN-ACK 包(第二次握手)。
  3. tcp.flags.ack == 1 && tcp.flags.syn == 0 過濾 TCP ACK 包(第三次握手)。
  4. tcp.flags.fin == 1 過濾 TCP FIN 包(斷開連接請求)。
  5. tcp.flags.reset == 1 過濾 TCP RST 包(重置連接)。

TCP 數據分析

  1. tcp.payload 過濾包含 TCP 負載的數據包。
  2. tcp.len == 100 過濾 TCP 負載長度為 100 字節的數據包。
  3. tcp.len > 500 過濾 TCP 負載長度大于 500 字節的數據包。

TCP 重傳和異常

  1. tcp.analysis.retransmission 過濾 TCP 重傳的數據包。
  2. tcp.analysis.zero_window 過濾 TCP 零窗口數據包(接收方緩沖區已滿)。
  3. tcp.analysis.window_update 過濾 TCP 窗口更新的數據包。
  4. tcp.analysis.duplicate_ack 過濾 TCP 重復確認的數據包。

組合過濾

  1. tcp && ip.src == 192.168.1.1 && tcp.port == 80 過濾源 IP 為 192.168.1.1 且端口為 80 的 TCP 數據包。
  2. (tcp.flags.syn == 1 && tcp.flags.ack == 0) || (tcp.flags.fin == 1) 過濾 TCP 建立連接和斷開連接的數據包。
  3. tcp.analysis.retransmission || tcp.analysis.zero_window 過濾 TCP 重傳和零窗口的數據包。

保存過濾結果

  1. 在 Wireshark 中應用過濾后,點擊菜單欄的 File -> Export Specified Packets
  2. 選擇 All packetsDisplayed
  3. 保存為 .pcap.pcapng 文件。

示例場景

  1. tcp.port == 80 過濾所有 HTTP 流量(TCP 端口為 80)。
  2. tcp.flags.syn == 1 && tcp.flags.ack == 0 過濾 TCP 握手的 SYN 包。
  3. tcp.analysis.retransmission 過濾所有 TCP 重傳的數據包。
  4. tcp && ip.src == 192.168.1.1 && ip.dst == 192.168.1.2 過濾源 IP 為 192.168.1.1 且目標 IP 為 192.168.1.2 的 TCP 數據包。
1.2. 常見分析

1,

2,

3,

4,Window Full

61622 109.780413297 10.0.0.1 10.0.0.9 openFlow 194 [TCP Window Full] Type: OFPT EXPERIMENTER

是指的發送端發送的數據已經達到的接受窗口的上限。
繼而停止發送,等待新的接收窗口的通告

此時接收端返回的是TCP zero window,表示接收端窗口為0

openflow:表示這個數據包是openflow協議, "TCP Window Full"指示符通常表示接收端TCP接收緩沖區已滿。這意味著接收端已經接收了所有能夠接收的數據,并且其接收窗口已滿,無法再接收更多的數據,直到一些數據被應用程序處理并從緩沖區中移除。 :發送端會根據接收端的接收窗口大小來控制發送的數據量。當接收端的接收窗口為零時,發送端將停止發送新的數據,直到接收端的緩沖區有更多空間。

5,Zero Window

傳輸層協議TCP—滑動窗口(9)_tcp zerowindow-CSDN博客

Zero Window(0窗口)指的是 TCP 發送方的滑動窗口大小為0,其本質上是因為 TCP 接收方的接收緩存已經滿了,沒有空間再接收數據。當處于 Zero Window 時,TCP 發送方是不能向對方發送數據的——即使發送也會被對方給懟回來

6,TCP ACKed unseen segment

7,TCP Previous segment not captured

[TCP Previous segment not captured]報文指的是在TCP發送端傳輸過程中,該Seq前的報文缺失了。一般在網絡擁塞的情況下,造成TCP報文亂序、丟包時,會出現該標志。

需要注意的是,[TCP Previous segment not captured]解析文字是wireshark添加的標記,并非TCP報文內容。

例子:

流媒體服務器39.135.135.81,端口80,發送序號Seq=147154的包,長度Len=1360,那么下一個數據包序號應該為Seq=147154+1360=148514,可以看到客戶端請求的也是Ack=148514。而服務器下一個包序號為Seq=149874,中間的包丟失了。

8,RST

TCP異常終止的情形

2. tcpdump

你可以使用 host 關鍵字來篩選目標IP地址。例如:

tcpdump -i eth0 dst host 10.0.0.21

這將捕獲所有目標IP地址為 10.0.0.21 的數據包。

tcpdump -i eth0 icmp

篩選eth0端口的icmp包

tcpdump -nni port300781 icmp 這樣才能抓到包 用-nni

tcpdump -nni any icmp 抓該節點所有端口的icmp包

tcpdump -nni port300781 icmp -w test.pacp 抓取的數據包保存到文件 **test.pcap** 中 ,導入到wireshark進行分析

還有個抓包工具tshark

21:26:49.013621 IP 172.20.20.1.15605 > 172.20.20.2.5920: Flags [P.], seq 49:97, ack 106048, win 4723, length 48

Flags 標識符#

使用 tcpdump 抓包后,會遇到的 TCP 報文 Flags,有以下幾種:

  • [S] : SYN(開始連接)
  • [P] : PSH(推送數據)
  • [F] : FIN (結束連接)
  • [R] : RST(重置連接)
  • [.] : 沒有 Flag (意思是除上面四種類型外的其他情況,有可能是 ACK 也有可能是 URG)

使用 **host**基于IP過濾

  • tcpdump host 192.168.10.100
  • 根據源ip進行過濾:tcpdump -i eth2 src 192.168.10.100
  • 根據目標ip進行過濾:tcpdump -i eth2 dst 192.168.10.200

基于網段進行過濾:net

  • tcpdump net 192.168.10.0/24
  • 根據源網段進行過濾$ tcpdump src net 192.168

3. iperf

Iperf是一個網絡性能測試工具。Iperf可以測試TCP和UDP帶寬質量。Iperf可以測量最大TCP帶寬,具有多種參數和UDP特性。

iperf -s -p 12345 -i 1 -M 1460
iperf -c 10.0.0.1 -p 9190 -i 1

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82662.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82662.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82662.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Django rest_framework 信號機制生成并使用token

1、在setting.py 中增加設置 DEFAULT_AUTHENTICATION_CLASSES:[rest_framework.authentication.BasicAuthentication,#基本的用戶名密碼驗證rest_framework.authentication.SessionAuthentication,rest_framework.authentication.TokenAuthentication,# token 認證], INSTALLE…

SQL Server To Paimon Demo by Flink standalone cluster mode

需求:使用 Flink CDC 測試 SQL Server 連接 Paimon 操作:啟動 Flink standalone cluster 后,接著啟動 Flink SQL Client,則通過 Flink SQL Client 提交 insert & select job 到該 8081 cluster Flink SQL Client 執行案例 -…

MySQL 從入門到精通(四):備份與恢復實戰——從邏輯到物理,增量備份全解析

數據是企業的核心資產,而數據庫作為數據存儲的 “心臟”,其備份與恢復策略直接關系到業務的連續性。本文將結合 MySQL 的日志體系與備份工具,深入講解邏輯備份、物理備份、增量備份的實戰操作,幫助你構建可靠的數據庫保護方案。 目…

鴻蒙編譯boost整合linux跨平臺應用

openharmony deveco 4.1支持armeabi-v7a deveco 5.0后不支持arm32位系統 boost編譯 使用deveco的寫cmake集成boost boost使用1.88的最新版本,帶cmake工具鏈 https://github.com/boostorg/boost.git boost的源碼都在sub_module中 deveco 4.1的版本sdk最高到9&am…

機器視覺的平板電腦屏幕組件覆膜應用

在現代智能制造業中,平板電腦屏幕組件覆膜工序是確保產品外觀和功能完整性的重要環節。隨著技術的進步,傳統的覆膜方式已經無法滿足高速度、高精度的生產需求。而MasterAlign視覺系統的出現,將傳統覆膜工藝轉變為智能化、自動化的生產流程。在…

android-ndk開發(10): use of undeclared identifier ‘pthread_getname_np‘

1. 報錯描述 使用 pthread 獲取線程名字, 用到 pthread_getname_np 函數。 交叉編譯到 Android NDK 時鏈接報錯 test_pthread.cpp:19:5: error: use of undeclared identifier pthread_getname_np19 | pthread_getname_np(thread_id, thread_name, sizeof(thr…

【前端基礎】6、CSS的文本屬性(text相關)

目錄內容 text-decoration:設置文本裝飾線text-transform:文本中文字的大小寫轉換text-indent:首行縮進text-align:設置文本對齊方式 一、text-decoration:設置文本裝飾線 常見值: None:沒有…

【Ansible】模塊詳解

一、ansible概述 1.1 ansible介紹 Ansible 是一個基于 Python 開發的配置管理和應用部署工具,近年來在自動化管理領域表現突出。它集成了許多傳統運維工具的優點,幾乎可以實現 Pubbet 和 Saltstack 所具備的功能。 1.2 ansible能做什么 批量處理。An…

Git實戰經驗分享:深入掌握git commit --amend的進階技巧

一、工具簡介 git commit --amend是Git版本控制系統的核心補救命令,主要用于修正最近一次提交的元數據。該命令不會產生新的提交記錄,而是通過覆蓋原提交實現版本歷史的整潔性,特別適合在本地倉庫進行提交優化。 二、核心應用場景 提交信息…

軟考 系統架構設計師系列知識點之雜項集萃(56)

接前一篇文章:軟考 系統架構設計師系列知識點之雜項集萃(55) 第91題 商業智能關注如何從業務數據中提取有用的信息,然后采用這些信息指導企業的業務開展。商業智能系統主要包括數據預處理、建立()、數據分…

Spark任務調度流程詳解

1. 核心調度組件 DAGScheduler:負責將Job拆分為Stage,處理Stage間的依賴關系。 TaskScheduler:將Task分配到Executor,監控任務執行。 SchedulerBackend:與集群管理器(如YARN、K8s)通信&#x…

第04章—技術突擊篇:如何根據求職意向進行快速提升與復盤

經過上一講的內容闡述后,咱們定好了一個與自身最匹配的期望薪資,接著又該如何準備呢? 很多人在準備時,通常會選擇背面試八股文,這種做法效率的確很高,畢竟能在“八股文”上出現的題,也絕對是面…

Go語言的逃逸分析是怎么進行的

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 非常期待和您一起在這個小…

ARM 芯片上移植 Ubuntu 操作系統詳細步驟

一、準備工作 (一)硬件準備 ARM 開發板:確保 ARM 開發板的型號與 Ubuntu 官方支持的 ARM 架構兼容,常見的 ARM 架構有 ARMv7、ARMv8 等。例如樹莓派系列開發板,廣泛用于 ARM 系統移植,其采用 ARM 架構。存…

兩臺服務器之前共享文件夾

本文環境 服務器A:ubuntu24.22系統 IP:10.0.8.1 服務器B:ubuntu24.22系統 IP:10.0.8.10 本操作旨在將服務器B的/opt/files目錄共享給服務器A得/opt/files 在 B 服務器上設置共享 安裝 NFS 服務: sudo apt -y install nfs-kernel-server編輯/etc/exports文件&…

超市銷售管理系統 - 需求分析階段報告

1. 系統概述 超市銷售管理系統是為中小型超市設計的信息化管理解決方案,旨在通過信息化手段實現商品管理、銷售處理、庫存管理、會員管理等核心業務流程的數字化,提高超市運營效率和服務質量,同時為管理者提供決策支持數據。 2. 業務需求分…

GPIO控制

GPIO是General Purpose I/O的縮寫,即通用輸入輸出端口,簡單來說就是MCU/CPU可控制的引腳, 這些引腳通常有多種功能,最基本的是高低電平輸入檢測和輸出,部分引腳還會與主控器的片上外設綁定, 如作為串口、I2…

Docker 部署Nexus倉庫 搭建Maven私服倉庫 公司內部倉庫

介紹 Nexus 是廣泛使用的倉庫管理工具,常用于管理 Java 構件(如 JAR、WAR、EAR 文件)。它可以作為一個本地的 Maven 倉庫,用來存儲和管理項目的依賴包和構建產物。支持多種倉庫類型,能夠幫助開發團隊更高效地管理構件…

Android 13 默認打開 使用屏幕鍵盤

原生設置里,系統-語言和輸入法-實體鍵盤-使用屏幕鍵盤 選項, 關閉時,外接物理鍵盤,如USB鍵盤,輸入時不會彈出軟鍵盤。 打開時,外接物理鍵盤,如USB鍵盤,輸入時會彈出軟鍵盤。 這個選…

關于ubuntu下交叉編譯arrch64下的gtsam報錯問題,boost中boost_regex.so中連接libicui18n.so.55報錯的問題

交叉編譯gtsam時遇到的報錯信息如下:gtsam需要連接boost, 解決辦法: 1.重新編譯boost可解決。 2.自己搞定生成一個libicui18n.so.55。 由于我們的boost是公用的,因此1不太可能(我試過重新編譯完boost,在編譯gtsam完…