-
當前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
模擬tcp發(fā)包工具
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于模擬tcp發(fā)包工具的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、tcp調(diào)試助手怎么用 linux
TCP調(diào)試助手是一個輔助調(diào)試UDP/TCP的工具軟件,支持TCP Server、TCP Client、UDP等通信模式,為網(wǎng)絡(luò)調(diào)試提供極大的方便。
如何建立一個UDP連接?
用TCP調(diào)試助手,選擇UDP方式。打開兩個,填寫好端口號,然后互聯(lián)就可以了!
二、TCP、UDP協(xié)議測試
基于Nodejs、socket.io,開發(fā)了TCP和UDP服務(wù)平臺,幫助大家做TCP和UDP協(xié)議的測試
在做硬件終端與服務(wù)器通信時,由于沒有服務(wù)器、沒有TCP或UDP服務(wù)后臺,非常不方便進行TCP、UDP協(xié)議的測試,我這里為大家分別提供TCP和UDP測試平臺。
TCP測試服務(wù)平臺信息:
TCP協(xié)議硬件地址(報文上報地址)IP:47.107.99.203 端口:8002
客戶端TCP報文查看和報文下發(fā)地址: http://47.107.99.203:8012/
UDP測試服務(wù)平臺信息:
UDP協(xié)議硬件地址(報文上報地址)IP:47.107.99.203 端口:5003
客戶端UDP報文查看和報文下發(fā)地址: http://47.107.99.203:8013/
如下進行簡單演示硬件終端與服務(wù)平臺的交互過程
1、TCP協(xié)議終端與平臺交互過程演示
1.1 打開瀏覽器輸入客戶端地址: http://47.107.99.203:8012/ ,即可訪問到測試TCP協(xié)議的前端頁面,如下圖所示
1.2 用TCP調(diào)試工具進行測試,輸入終端測試服務(wù)器地址IP:47.107.99.203 端口:8002,建立SOCKET連接,并向服務(wù)器發(fā)送報文,如下圖所示
1.3 服務(wù)器接收到終端發(fā)送的報文,并實時的展示出來,如下圖所示
1.4 在下發(fā)輸入框,輸入需要下發(fā)的報文,然后點擊”SEND”按鈕,服務(wù)平臺將向終端發(fā)送報文,如下圖所示,終端接收到服務(wù)平臺發(fā)送的報文
2、UDP協(xié)議終端與平臺交互過程演示
2.1 打開瀏覽器輸入客戶端地址: http://47.107.99.203:8013/ ,即可訪問到測試UDP協(xié)議的前端頁面,如下圖所示
2.2 用UDP調(diào)試工具進行測試,輸入終端測試服務(wù)器地址IP:47.107.99.203 端口:5003,建立UDP連接,并向服務(wù)器發(fā)送報文,如下圖所示
2.3 服務(wù)器接收到終端發(fā)送的報文,并實時的展示出來,如下圖所示
2.4 在下發(fā)輸入框,輸入需要下發(fā)的報文,然后點擊”SEND”按鈕,服務(wù)平臺將向終端發(fā)送報文,如下圖所示,終端接收到服務(wù)平臺發(fā)送的報文
三、如何使用 JMeter 對 TCP 協(xié)議的服務(wù)進行負載測試
1.建立一種類型測試
這里只描述簡單的tcp測試建立步驟,因為目前支持的測試類型很多,無法一一陳述,功能細節(jié)部分可以參考JMeter文檔
1)創(chuàng)建測試線程組
2)根據(jù)需要設(shè)定線程組參數(shù)
3)建立TCP采樣
3)配置TCP采樣參數(shù)
基本上一個簡單的測試計劃就完成了,點擊運行采樣,就會將文本發(fā)送出去。
2.高級功能配置
1)配置結(jié)果查看監(jiān)聽器
有時候需要查看線程組執(zhí)行結(jié)果情況,這個可以通過設(shè)定采樣結(jié)果查看
針對上面配置的線程組應(yīng)該執(zhí)行6次,也就是發(fā)送6條消息,通過監(jiān)控器可以看到的確有6個采樣結(jié)果,說明執(zhí)行成功
2)配置變量
有時候需要在報文中加上一些變化的內(nèi)容,可以通過在文本中增加變量設(shè)定來實現(xiàn)
如增加一個變量名 bank, 其值為 1111,在前面發(fā)送的報文中加上${bank}即可引用,如
執(zhí)行之后就可以在監(jiān)控器中看到報文中有1111了
3)配置TCP 二進制報文
大多數(shù)情況下,報文可能非純文本形式,常常都是不可讀的二進制,所以這種情況下需要配置二進制報文。當前JMeter支持HEX形式,也就是16進制的報文輸入配置
參考: https://wiki.apache.org/jmeter/UserManual/Reference/TcpSampler
當前支持三種格式 1.TCPClientImpl(默認) 2.BinaryTCPClientImpl 3.LengthPrefixedBinaryTCPClientImpl
使用二進制方式需要做如下幾件事:
a.把普通文本報文翻譯成HEX格式,可以找文本編輯器做這件事。比如notepad++,打開文本文件
Ctrl+A全選內(nèi)容,paste到一個新文件,替換掉所有空格
3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e3c544c533e3c707273636f64653e6c6f67696e3c2f707273636f64653e3c69643e313233343536373c2f69643e3c746f6b656e3e75736a64666a6b736137356b733833326f6b7564736a643934383737616b6a6475613c2f746f6b656e3e3c2f544c533e
如果報文還需要加上頭的話,需要額外計算一下。比如增加一個command id和報文長度。比如上文中文本長度在編輯器狀態(tài)欄上顯示155長,假定command id是1.
System.out.println("155 hex " + Integer.toHexString(155)); --- 9b
System.out.println("1 hex " + Integer.toHexString(1)); ---1
如果command id是4個字節(jié)那么16進制字符串就是 00 00 00 01
如果length也是4個字節(jié)那么16進制字符串就是 00 00 00 9b
去掉空格加入到前面報文中就拼成如下新報文
000000010000009b3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e3c544c533e3c707273636f64653e6c6f67696e3c2f707273636f64653e3c69643e313233343536373c2f69643e3c746f6b656e3e75736a64666a6b736137356b733833326f6b7564736a643934383737616b6a6475613c2f746f6b656e3e3c2f544c533e
再把新報文放入發(fā)送字符串輸入框中。
b.修改JMeter啟動配置,就是前文提到的指定BinaryTCPClientImpl適配
在jmeter.properties文件中找到如下部分,修改一下
#---------------------------------------------------------------------------
# TCP Sampler configuration
#---------------------------------------------------------------------------
# The default handler class
#tcp.handler=TCPClientImpl
tcp.handler=BinaryTCPClientImpl
重新執(zhí)行TCP測試,可以看到服務(wù)器端正常收到報文,如圖
jmeter測試TCP服務(wù)器,使用TCP采樣器模擬發(fā)送TCP請求。
TCP采樣器:打開一個到指定服務(wù)器的TCP / IP連接,然后發(fā)送指定文本并等待響應(yīng)。
jmeter模擬發(fā)送TCP請求的方法:
1.新建線程組,然后在線程組中新建TCP采樣器
TCP采樣器中填寫服務(wù)器地址、端口和“要發(fā)送的文本”,其它選項根據(jù)需要選填:
re_use connection表示重復(fù)發(fā)送連接請求
close connection 關(guān)閉連接
如果TCP請求需要用戶名/密碼,可以在登錄配置中填寫
2.新建“察看結(jié)果樹”監(jiān)視器,查看發(fā)送的請求和響應(yīng)的結(jié)果。如果需要發(fā)送16進制報文這個地方會失敗。
jmeter發(fā)送16進制TCP報文的方法:
很多TCP服務(wù)器報文為16進制,并且多數(shù)不能轉(zhuǎn)換成文本發(fā)送,而jmeter默認發(fā)送文本。
jmeter.properties中修改tcp.handler=BinaryTCPClientImpl ,啟動jmeter重新發(fā)送,抓包查看既是16進制的tcp報文。
另一個方法:可以在工作臺新建–非測試元件–Property Display,Property Display中修改jmeter.properties只對當前進程有效。
四、Tcpdump 用法詳解
大部分 Linux 發(fā)行版都內(nèi)置了 Tcpdump 工具。如果沒有,也可以直接使用對應(yīng)的包管理器進行安裝(如: $ sudo apt-get install tcpdump 和 $ sudo yum install tcpdump )
通過表達式可以對各種不同類型的網(wǎng)絡(luò)流量進行過濾,以獲取到需要的信息。這也是 tcpdump 強大功能的一個體現(xiàn)。
主要有 3 種類型的表達式:
指定網(wǎng)絡(luò)接口 :
# tcpdump -i <dev>
原始信息輸出模式 :
# tcpdump -ttttnnvvS
更詳細的輸出,不解析主機名和端口名,使用絕對序列號,方便閱讀的時間戳
通過IP地址過濾 :
# tcpdump host 10.2.64.1
HEX 輸出
# tcpdump -nnvXSs 0 -c1 icmp
通過源地址和目標地址進行過濾
# tcpdump src 10.2.67.203
# tcpdump dst 10.2.67.203
通過子網(wǎng)進行過濾
# tcpdump net 10.2.64.0/24
監(jiān)聽指定端口號
# tcpdump port 515
指定協(xié)議
# tcpdmp icmp
端口范圍
# tcpdump portrange 21-23
通過包大小過濾
# tcpdump less 32
# tcpdump greater 64
# tcpdump <= 128
寫入 PCAP 文件
# tcpdump port 80 -w capture_file
讀取 PCAP 文件
# tcpdump -r capture_file
可以通過命令選項的不同組合(使用 邏輯運算符 )完成更復(fù)雜的任務(wù)。運算符包括以下3種:
# tcpdump src 10.2.64.29 and dst port 80
即捕捉從指定主機(10.2.64.92)發(fā)出,且目標端口為 80 的所有網(wǎng)絡(luò)數(shù)據(jù)
# tcpdump src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16
即捕捉從指定子網(wǎng)(192.168.0.0/16)發(fā)送到目標子網(wǎng)(10.0.0.0/8 和 172.16.0.0/16)的所有網(wǎng)絡(luò)數(shù)據(jù)
# tcpdump src 192.168.56.1 and not dst port 22
即捕捉從指定主機(192.168.56.1)發(fā)出,且目標端口不為 22 的所有網(wǎng)絡(luò)數(shù)據(jù)
# tcpdump 'tcp[13] & 32!=0' 所有 URGENT ( URG ) 包
# tcpdump 'tcp[13] & 16!=0' 所有 ACKNOWLEDGE ( ACK ) 包
# tcpdump 'tcp[13] & 8!=0' 所有 PUSH ( PSH ) 包
# tcpdump 'tcp[13] & 4!=0' 所有 RESET ( RST ) 包
# tcpdump 'tcp[13] & 2!=0' 所有 SYNCHRONIZE ( SYN ) 包
# tcpdump 'tcp[13] & 1!=0' 所有 FINISH ( FIN ) 包
# tcpdump 'tcp[13]=18' 所有 SYNCHRONIZE/ACKNOWLEDGE ( SYNACK ) 包
其他指定標志位的方式如:
# tcpdump 'tcp[tcpflags] == tcp-syn'
# tcpdump 'tcp[tcpflags] == tcp-fin'
一些特殊的用法
# tcpdump 'tcp[13] = 6' RST 和 SYN 同時啟用的數(shù)據(jù)包(不正常)
# tcpdump 'tcp[32:4] = 0x47455420' 獲取 http GET 請求的文本
# tcpdump 'tcp[(tcp[12]>>2):4] = 0x5353482D' 獲取任何端口的 ssh 連接(通過 banner 信息)
# tcpdump 'ip[8] < 10' ttl 小于 10 的數(shù)據(jù)包(出現(xiàn)問題或 traceroute 命令)
# tcpdump 'ip[6] & 128 != 0' 非常有可能是黑客入侵的情況
A tcpdump Tutorial and Primer with Examples
以上就是關(guān)于模擬tcp發(fā)包工具相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
有沒有模擬裝修房子的軟件(手機上自己設(shè)計房子裝修軟件)
石頭城公園景觀設(shè)計(石頭城公園景觀設(shè)計理念)