IPerf——網絡測試工具介紹與源碼解析(1)


IPerf是一個開源的測試網絡寬帶並能統計並報告延遲抖動、數據包丟失率信息的控制台命令程序,通過參數選項可以方便地看出,通過設置不同的選項值對網絡帶寬的影響,對於學習網絡編程還是有一定的借鑒意義,至少可以玩上一段時間。

IPerf開始出現的時候是在03年,版本是1.7.0,在網上找到的僅有的系列源碼解析篇 http://blog.chinaunix.net/uid/11568125/cid-131106-abstract-1.html 就是基於1.7.0 進行介紹和解析的,貌似1.7.0還是使用C++編寫比較多,后面到了IPerf2版本,C++和C結合,現在出來一個法國人團隊另起爐灶重構出不向下兼容的IPerf3,他們開了一個論壇專門討論維護,但因為是法語所以跟我也無法溝通,所以也沒怎么上去看,一開始入門的時候就只能上處鏈接的文章,還好有所幫助。

現在IPerf的官方網站為:https://iperf.fr/

IPerf的一些特性:

  •  開源,每個版本的源碼都能進行下載和研習;
  • 跨平台,支持Windows Linux MacOS Android,現有支持不同平台的IPerf版本,UWP,Docker...很早之前就出來了一個JPerf(在IPerf的基礎上添加了界面),有興趣的同學可以找來看看;
  • 支持TCP、UDP協議,包括IPV4和IPV6,最新的IPerf還支持SCTP協
    • TCP
      • 測試網絡帶寬;
      • 報告MSS(最大報文段長度)、MTU(最大傳輸單元)的大小,在Windows上不支持;
      • 支持通過套接字緩沖區修改TCP窗口大小;
      • 支持多線程並發;
    • UDP
      • 客戶端可創建指定大小的帶寬流;
      • 統計數據包丟失、延遲抖動率等信息

 IPerf的簡單使用示例:

IPerf通過選項 -c 和 -s 決定其當前是作為客戶端程序還是作為服務端程序運行,當作為客戶端程序運行時,-c 后面必須帶所連接對端服務器的IP地址或域名

 

上面圖片顯示三種信息:本地設置信息,連接信息,傳輸信息,究竟其在程序設計中是如何打印出來的,看完接下來的源碼解析希望你能夠明白其中的原理 :)

 下面列舉一些比較常用的選項參數,想要知道更多的選項參數,請查看官方網站的文檔說明

選項參數  說明

[客戶端]

-c host  以客戶端模式運行,連接到IPerf服務端運行的主機IP地址或域名

-t ; -i    -t(timing)測試的時長;-i(interval)帶寬報告周期性顯示的間隔時間

-n  設置測試所發送的數據總量,#[KM] 覆蓋-t選項

-d, -L  雙向測試模式,客戶端與服務端建立雙向連接,並相互發送數據進行測試

-r, -L  交易模式,在客戶端到服務端的測試結束后,執行服務端到客戶端的測試

-P  設置客戶端同時連接到服務端的並發數(在多線程允許的條件下)

[服務端]

-s  以服務端模式運行,等待客戶端的連接請求

-D  Unix平台以后台守護程序運行;Windows平台下以服務形式運行

-w  設置TCP窗口大小或UDP接收緩沖區大小為其指定的值

 


免責聲明!

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



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