Jmeter之TCP/UDP


一、 TCP/IP簡介

TCP/IP詳解(轉)

二、 TCP與UDP之間的區別

2.1 UDP(User Data Protocol,用戶數據報協議

  1. UDP是一個非連接的協議,傳輸數據之前源端和終端不建立連接,當它想傳送時就簡單地去抓取來自應用程序的數據,並盡可能快地把它扔到網絡上。在發送端,UDP傳送數據的速度僅僅是受應用程序生成數據的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應用程序每次從隊列中讀一個消息段。
  2. 由於傳輸數據不建立連接,因此也就不需要維護連接狀態,包括收發狀態等,因此一台服務機可同時向多個客戶機傳輸相同的消息。
  3. UDP信息包的標題很短,只有8個字節,相對於TCP的20個字節信息包的額外開銷很小。
  4. 吞吐量不受擁擠控制算法的調節,只受應用軟件生成數據的速率、傳輸帶寬、源端和終端主機性能的限制。
  5. UDP使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持復雜的鏈接狀態表(這里面有許多參數)。
  6. UDP是面向報文的。發送方的UDP對應用程序交下來的報文,在添加首部后就向下交付給IP層。既不拆分,也不合並,而是保留這些報文的邊界,因此,應用程序需要選擇合適的報文大小。
  7. UDP的包頭結構:
    源端口 16位
    目的端口 16位
    長度 16位
    校驗和 16位

2.2 總結TCP與UDP的區別:

  1. 與無連接;
  2. 對系統資源的要求(TCP較多,UDP少);
  3. UDP程序結構較簡單;
  4. 流模式與數據報模式 ;
  5. TCP保證數據正確性,UDP可能丟包,TCP保證數據順序,UDP不保證。

2.3 相關名詞解釋

ACK:TCP報頭的控制位之一,對數據進行確認.確認由目的端發出,用它來告訴發送端這個序列號之的數據段都收到了.比如,確認號為X,則表示前X-1個數據段都收到了,只有當ACK=1時,確認號才有效,當ACK=0時,確認號無效,這時會要求重傳數據,保證數據的完整性;

SYN: 同步序列號,TCP建立連接時將這個位置1;

FIN 發送端完成發送任務位,當TCP完成數據傳輸需要斷開時,提出斷開連接的一方將這位置1;

三、使用Jmeter發送TCP請求

  1. TCPClient classname:該參數有三個值可以設置,分別為:
    org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl:以文本編輯器中的純文本作為內容發送;
    org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl:以文本編輯器中所編輯的16進制字符(hex)內容為基礎轉換為二進制的字節內容進行發送;
    org.apache.jmeter.protocol.tcp.sampler.LengthPrefixedBinaryTCPClientImpl:在BinaryTCPClientImpl基礎上默認以發送內容的長度以字節前綴進行填充;

  2. 超時時間:發送和接收響應的時間,超出報超時;

  3. Re-use connection:復用連接,用於長連接;

  4. End of line(EOL) byte value:如果不設置,jmeter會一直讀取流,最后認為請求失敗,response code 500,所有的結果都會被標記為錯誤。10是byte值,代表換行,即 \n;

  5. 發送的報文一般為16進制數據;

四、 使用Jmeter發送UDP請求

4.1 安裝Jmeter插件

插件官方下載地址
下載后將包放到jmeter的/lib/ext目錄下
替換后重啟jmeter,右鍵菜單“添加—>Sampler–>jp@gc – UDP Request”添加UDP Sampler

Hostname/TP:主機地址
Wait for Response:是否等待響應
Close UDP Socket:關閉UDP Socket
Response Timeout:響應超時
Data Encode/Decode Class
kg.apc.jmeter.samplers.HexStringUDPDecoder 直接發送16進制數據,HEX-encoded
kg.apc.jmeter.samplers.UDPSampler 填寫字符串
kg.apc.jmeter.samplers.DNSJavaDecoder dns解析填寫格式
kg.apc.jmeter.samplers.UDPTrafficDecoder接口可以自定義編碼/解碼
kg.apc.jmeter.samplers.ReceiveBufferSize單位字節
Bind local address:本地地址

:UDP請求讀取響應緩存長度默認4K,可以在JMeter property中修改kg.apc.jmeter.samplers.ReceiveBufferSize單位字節


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM