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

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

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,他們開了一個論壇專門討論維護,但由於是法語因此跟我也沒法溝通,因此也沒怎麼上去看,一開始入門的時候就只能上處連接的文章,還好有所幫助。html

如今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接收緩衝區大小爲其指定的值

相關文章
相關標籤/搜索