linux資料流回放命令tcpreplay

2021-09-25 17:55:00 字數 2921 閱讀 6791

將pcap包重新傳送,用於效能或者功能測試

簡單的說,tcpreplay是一種pcap包的重放工具,它可以將用ethreal、wireshark工具抓下來的包原樣或經過任意修改後重放回去。它允許你對報文做任意的修改(主要是指對2層、3層、4層報文頭),指定重放報文的速度等,這樣tcpreplay就可以用來復現抓包的情景以定位bug,以極快的速度重放從而實現壓力測試。

-a "" 在使用 tcpdump 風格列印輸出資訊時,同時再呼叫tcpdump中的引數, 預設已經帶有「-n,-l」,所以一般看到的都是ip位址,而沒有主機名的列印,注意這個是在tcpreplay使用了-v引數時才能使用,不帶-v不會報錯,但是沒有實際意義。格式:-va 「nnt」表示以tcpdump風格輸出報文資訊,並且不列印時間戳、主機名、埠服務名稱。注意不要使用-c引數來指定列印的資料報文的個數,這樣傳送出去的報文也會變少。

-c 雙網絡卡回放報文必選引數,後面緊跟cache檔名,該檔案為tcpprep根據對應的pcap檔案構造出來。

-d 把應用層的資料,使用dump mode寫入到指定檔案中去,和-w、-w 引數一起使用。

-e 指定端點的ip,即把傳送報文的和接收的報文的ip都修改稱對應的引數值中指定的ip,但是這樣傳送的出的報文不會區分client和server。。

-f 指定配置檔案。

-f 在傳送報文時,自動糾正錯誤的校驗和。對測試dut的校驗和檢驗。

-h 顯示幫助檔案。

-i 雙網絡卡回放報文必選引數,指定主介面。

-i 重寫主網絡卡傳送出報文的目的mac位址。

-j 雙網絡卡回放報文必選引數,指定從介面。

-j 重寫從網絡卡傳送出報文的目的mac位址。

-k 重寫主網絡卡傳送報文的源mac位址。

-k 重寫從網絡卡傳送報文的源mac位址。

-l 指定迴圈的次數。

-l 指定最大的發包數量。可以在確認連線的除錯時使用。

-m 指定乙個倍數值,就是必預設傳送速率要快多少倍的速率傳送報文。 加大傳送的速率後,對於dut可能意味著有更多的併發連線和連線數,特別是對於bt報文的重放, 因為連線的超時是固定的,如果速率增大的話, 留在session表中的連線數量增大,還可以通過修改連線的超時時間來達到該目的。

-m 表示不傳送「火星」的ip報文,man檔案中的定義是 0/8、172/8、 255/8。

-n 在使用-s引數,不對混雜模式進行偵聽。

-n 通過偽造的nat,重寫ip位址。這個引數應該有很重要的應用,目前沒有測試使用。

-o 沒有測試使用。

-p 指定每秒傳送報文的個數,指定該引數,其它速率相關的引數被忽略,最後的列印資訊不會有速率和每秒傳送報文的統計。

-p 表示在輸出資訊中列印pid的資訊,用於單使用者或單帳戶模式下暫停和重啟程式。

-r 指定傳送的速率。目前-m/-r/-p這3個引數的相互關係。

-r 讓網絡卡極限速度發資料報。

-t 指定mtu,標準的10/100m網絡卡的預設值是1500。

-t truncate packets > 截去報文中mtu大於標準值的部分再傳送出去,預設是不傳送,skip掉。

-v 每傳送乙個報文都以 tcpdump 的風格列印出對應的資訊。

-v 檢視版本號。

-w 將主網絡卡傳送的報文寫入乙個檔案中,引數後緊跟檔名。

1、重放在客戶端 ftp 連線的報文

a、在客戶端使用 ethereal 抓包,存為 ftp.pcap 檔案。

b、 將 ftp.pcap 檔案進行 tcpprep 操作,製作 cache 檔案。

[root@a ~]# tcpprep -an client -i ftp.pcap -o ftp.cache –v
c、 將 dut 裝置的兩個介面和 pc 的兩個介面使用網線連線,使用 tcpreplay 重 放報文。注意防火牆的配置為網橋(透明)模式。

[root@a ~]# tcpreplay -c ftp.cache -i eth0 -j eth1 ftp.pcap -r –v
-r 引數表示全速傳送,-v 顯示列印資訊。

2、重放在客戶端 bt 連線的報文

b、將 bt.pcap 檔案進行 tcpprep 操作,製作 cache 檔案。

[root@a ~]# tcpprep -an client -i bt.pcap -o bt.cache -c "100m bt packet" –v
製作 cache 檔案,在 cache 檔案中寫入「100m bt packet」的注釋。

c、使用 tcpreplay 重放報文。

[root@a ~]# tcpreplay -c bt.cache -i eth0 -j eth1 bt.pcap -v –r
3、重放 tftp 伺服器上抓到的報文

a、在 tftp 伺服器上使用 ethereal 抓包,存為 tftp.pcap 檔案。

b、將 pcap 檔案進行 tcpprep 的操作,製作 cache 檔案。

[root@a ~]# tcpprep -an server -i tftp.pcap -o tftp.cache –v
注意:我在測試的時候犯了乙個錯誤,使用 dut 的 tftp 公升級來做實驗,同時穿 過 dut 重放報文,結果在網絡卡傳送報文的後,dut 的 mac 位址做了的回應,導致 互動過程沒有穿過 dut,這個問題比較搞笑,上午弄了半天才發現原因,開始還 以為 udp 的連線不能重放。

c、使用 tcpreplay 重放報文。

[root@a ~]# tcpreplay -c tftp.cache -i eth0 -j eth1 tftp.pcap –v

TCP互動資料流 成塊資料流

tcp資料流分類 基於tcp的各類解決方案,可以根據資料吞吐量來大致分成兩大類 1 互動資料型別,例如telnet,ssh,這種型別的協議在大多數情況下只是做小流量的資料交換,比如說按一下鍵盤,回顯一些文字等等。2 資料成塊型別,例如ftp,這種型別的協議要求tcp能盡量的運載資料,把資料的吞吐量做...

TCP 互動資料流

tcp通訊量如果按分組數量計算,約一半的tcp報文段包含成塊資料 如ftp 電子郵件和usenet新聞 另一半則包含互動資料 如telnet,rlogin 如果按位元組計算,則成塊資料與互動資料的比例約為90 和10 這是因為成塊資料報文段基本上是滿長度的,而互動式資料則小得多。tcp同時處理這兩類...

TCP的互動資料流

在 tcp進行資料傳輸時 可以分為成塊資料流和互動資料流兩種 且處理的 演算法不同.每乙個互動按鍵都會產生乙個分組,也就是說,每次從客戶傳到伺服器的是乙個位元組的按鍵 而不是每次一行 報文段2可以和報文段3進行合併 按鍵確認和按鍵回顯一起傳送 按鍵確認和按鍵回顯兩個報文段合併在一起傳送,這種技術叫做...