Linux網路檢測手段彙總

来源:http://www.cnblogs.com/tongxiaoda/archive/2017/08/30/7452173.html
-Advertisement-
Play Games

1.iftop iftop可測量通過每一個套接字連接傳輸的數據;它採用的工作方式有別於nload。iftop使用pcap庫來捕獲進出網路適配器的數據包,然後彙總數據包大小和數量,搞清楚總的帶寬使用情況。 雖然iftop報告每個連接所使用的帶寬,但它無法報告參與某個套按字連接的進程名稱/編號(ID)。 ...


1.iftop

iftop可測量通過每一個套接字連接傳輸的數據;它採用的工作方式有別於nload。iftop使用pcap庫來捕獲進出網路適配器的數據包,然後彙總數據包大小和數量,搞清楚總的帶寬使用情況。
雖然iftop報告每個連接所使用的帶寬,但它無法報告參與某個套按字連接的進程名稱/編號(ID)。不過由於基於pcap庫,iftop能夠過濾流量,並報告由過濾器指定的所選定主機連接的帶寬使用情況。

iftop的輸出從整體上可以分為三大部分。
第一部分是iftop輸出中最上面的一行,此行信息是流量刻度,用於顯示網卡帶寬流量。
第二部分是iftop輸出中最大的一個部分,此部分又分為左、中、右三列,左列和中列記錄了哪些IP或主機正在和本機的網路進行連接。其中,中列的“=>”代表發送數據,“<=”代表接收數據,通過這個指示箭頭可以很清晰地知道兩個IP之間的通信情況。最右列又分為三小列,這些實時參數分別表示外部IP連接到本機2s、10s和40s內的平均流量值。另外,這個部分還有一個流量圖形條,流量圖形條是對流量大小的動態展示,以第一部分中的流量刻度為基準。通過這個流量圖形條可以很方便地看出哪個IP的流量最大,進而迅速定位網路中可能出現的流量問題。
第三部分位於iftop輸出的最下麵,可以分為三行,其中,“TX”表示發送數據,“RX”表示接收數據,“TOTAL”表示發送和接收的全部流量。與這三行對應的有三列,其中,“cum”列表示從運行iftop到目前的發送、接收和總數據流量;“peak”列表示發送、接收以及總的流量峰值;“rates”列表示過去2s、10s、40s內的平均流量值。

在iftop的實時監控界面中,還可以對輸出結果進行互動式操作,用於對輸出信息進行整理和過濾,在圖2-1所示界面中,按“h”鍵即可進入交互選項界面:

2.MTR

Mtr是 Linux中有一個非常棒的網路連通性判斷工具,它結合了ping, traceroute,nslookup 的相關特性。

[root@d_bbszb_web01 ~]# mtr -h
usage: mtr [-hvrwctglspniu46] [--help] [--version] [--report]
[--report-wide] [--report-cycles=COUNT] [--curses] [--gtk]>
[--raw] [--split] [--no-dns] [--address interface]
[--psize=bytes/-s bytes][--interval=SECONDS] HOSTNAME [PACKETSIZE]


報告說明:
第一列:顯示的是IP地址和本機功能變數名稱,這點和tracert很像
第二列:snt:10 設置每秒發送數據包的數量,預設值是10 可以通過參數 -c來指定。
第三列:是顯示的每個對應IP的丟包率
第四列:顯示的最近一次的返回時延
第五列:是平均值 這個應該是發送ping包的平均時延
第六列:是最好或者說時延最短的
第七列:是最差或者說時延最常的
第八列:是標準偏差

3.traceroute

通過traceroute我們可以知道信息從你的電腦到互聯網另一端的主機是走的什麼路徑。當然每次數據包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。linux系統中,我們稱之為traceroute,在MS Windows中為tracert。
traceroute通過發送小的數據包到目的設備直到其返回,來測量其需要多長時間。

(1).命令格式:

traceroute[參數][主機]

(2).命令功能:

traceroute指令讓你追蹤網路數據包的路由途徑,預設數據包大小是40Bytes,用戶可另行設置。
具體參數格式:traceroute [-dFlnrvx][-f<存活數值>][-g<網關>...][-i<網路界面>][-m<存活數值>][-p<通信埠>][-s<來源地址>][-t<服務類型>][-w<超時秒數>][主機名稱或IP地址][數據包大小]

(3).命令參數:

-d 使用Socket層級的排錯功能。
-f 設置第一個檢測數據包的存活數值TTL的大小。
-F 設置勿離斷位。
-g 設置來源路由網關,最多可設置8個。
-i 使用指定的網路界面送出數據包。
-I 使用ICMP回應取代UDP資料信息。
-m 設置檢測數據包的最大存活數值TTL的大小。
-n 直接使用IP地址而非主機名稱。
-p 設置UDP傳輸協議的通信埠。
-r 忽略普通的Routing Table,直接將數據包送到遠端主機上。
-s 設置本地主機送出數據包的IP地址。
-t 設置檢測數據包的TOS數值。
-v 詳細顯示指令的執行過程。
-w 設置等待遠端主機回報的時間。
-x 開啟或關閉數據包的正確性檢驗。


記錄按序列號從1開始,每個紀錄就是一跳 ,每跳錶示一個網關,我們看到每行有三個時間,單位是 ms,其實就是-q的預設參數。探測數據包向每個網關發送三個數據包後,網關響應後返回的時間;如果您用 traceroute -q 4 www.58.com ,表示向每個網關發送4個數據包。
有時我們traceroute 一臺主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火牆封掉了ICMP的返回信息,所以我們得不到什麼相關的數據包返回數據。
有時我們在某一網關處延時比較長,有可能是某台網關比較阻塞,也可能是物理設備本身的原因。當然如果某台DNS出現問題時,不能解析主機名、功能變數名稱時,也會 有延時長的現象;您可以加-n 參數來避免DNS解析,以IP格式輸出數據。
如果在區域網中的不同網段之間,我們可以通過traceroute 來排查問題所在,是主機的問題還是網關的問題。如果我們通過遠程來訪問某台伺服器遇到問題時,我們用到traceroute 追蹤數據包所經過的網關,提交IDC服務商,也有助於解決問題;但目前看來在國內解決這樣的問題是比較困難的,就是我們發現問題所在,IDC服務商也不可能幫助我們解決。

其他示例:

跳數設置 traceroute -m 10 www.baidu.com
顯示IP地址,不查主機名 traceroute -n www.baidu.com
探測包使用的基本UDP埠設置6888 traceroute -p 6888 www.baidu.com
把探測包的個數設置為值4 traceroute -q 4 www.baidu.com
繞過正常的路由表,直接發送到網路相連的主機 traceroute -r www.baidu.com
把對外發探測包的等待響應時間設置為3秒 traceroute -w 3 www.baidu.com

4.tcpdump

根據使用者的定義對網路上的數據包進行截獲的包分析工具。 tcpdump可以將網路中傳送的數據包的“頭”完全截獲下來提供分析。它支持針對網路層、協議、主機、網路或埠的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。
[root@d_bbszb_web01 ~]# tcpdump -h
tcpdump version 4.1-PRE-CVS_2012_03_26
libpcap version 1.4.0
Usage: tcpdump [-aAdDefIKlLnNOpqRStuUvxX] [ -B size ] [ -c count ][ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ][ -i interface ] [ -M secret ] [ -r file ]
[ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ]
[ -y datalinktype ] [ -z command ] [ -Z user ][ expression ]

監視指定網路介面的數據包
tcpdump -i eth1
如果不指定網卡,預設tcpdump只會監視第一個網路介面,一般是eth0,下麵的例子都沒有指定網路介面。 

監視指定主機的數據包
列印所有進入或離開sundown的數據包.
tcpdump host sundown
也可以指定ip,例如截獲所有210.27.48.1 的主機收到的和發出的所有的數據包
tcpdump host 210.27.48.1
列印helios 與 hot 或者與 ace 之間通信的數據包
tcpdump host helios and ( hot or ace )
截獲主機210.27.48.1 和主機210.27.48.2 或210.27.48.3的通信
tcpdump host 210.27.48.1 and  (210.27.48.2 or 210.27.48.3 )
列印ace與任何其他主機之間通信的IP 數據包, 但不包括與helios之間的數據包.
tcpdump ip host ace and not helios
如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
截獲主機hostname發送的所有數據
tcpdump -i eth0 src host hostname
監視所有送到主機hostname的數據包
tcpdump -i eth0 dst host hostname

監視指定主機和埠的數據包
如果想要獲取主機210.27.48.1接收或發出的telnet包,使用如下命令
tcpdump tcp port 23 and host 210.27.48.1
對本機的udp 123 埠進行監視 123 為ntp的服務埠
tcpdump udp port 123

監視指定網路的數據包
列印本地主機與Berkeley網路上的主機之間的所有通信數據包(nt: ucb-ether, 此處可理解為'Berkeley網路'的網路地址,此表達式最原始的含義可表達為: 列印網路地址為ucb-ether的所有數據包)
tcpdump net ucb-ether
列印所有通過網關snup的ftp數據包(註意, 表達式被單引號括起來了, 這可以防止shell對其中的括弧進行錯誤解析)
tcpdump 'gateway snup and (port ftp or ftp-data)'
列印所有源地址或目標地址是本地主機的IP數據包
(如果本地網路通過網關連到了另一網路, 則另一網路並不能算作本地網路.(nt: 此句翻譯曲折,需補充).localnet 實際使用時要真正替換成本地網路的名字)
tcpdump ip and not net localnet

監視指定協議的數據包
列印TCP會話中的的開始和結束數據包, 並且數據包的源或目的不是本地網路上的主機.(nt: localnet, 實際使用時要真正替換成本地網路的名字))
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'
列印所有源或目的埠是80, 網路層協議為IPv4, 並且含有數據,而不是SYN,FIN以及ACK-only等不含數據的數據包.(ipv6的版本的表達式可做練習)
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

使用tcpdump抓取HTTP包
tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745 為"GET"前兩個字母"GE",0x4854 為"HTTP"前兩個字母"HT"。

5.curl

curl是利用URL語法在命令行方式下工作的開源文件傳輸工具。它被廣泛應用在Unix、多種Linux發行版中,並且有DOS和Win32、Win64下的移植版本。
curl命令是一個功能強大的網路工具,它能夠通過http、ftp等方式下載文件,也能夠上傳文件,同時支持HTTPS等眾多協議,還支持POST、cookies、認證、從指定偏移處下載部分文件、用戶代理字元串、限速、文件大小、進度條等特征。其實curl遠不止前面所說的那些功能,大家可以通過man curl閱讀手冊頁獲取更多的信息。類似的工具還有wget。curl命令使用了libcurl庫來實現,libcurl庫常用在C程式中用來處理HTTP請求,curlpp是libcurl的一個C++封裝,這幾個東西可以用在抓取網頁、網路監控等方面的開發,而curl命令可以幫助來解決開發過程中遇到的問題。

常用參數:

-a/--append 上傳文件時,附加到目標文件
-A:隨意指定自己這次訪問所宣稱的自己的瀏覽器信息
-b/--cookie <name=string/file> cookie字元串或文件讀取位置,使用option來把上次的cookie信息追加到http request裡面去。
-c/--cookie-jar

指定請求頭參數
--ignore-content-length 忽略的HTTP頭信息的長度
-i/--include 輸出時包括protocol頭信息
-I/--head 僅返回頭部信息,使用HEAD請求
-k/--insecure 允許不使用證書到SSL站點
-K/--config 指定的配置文件讀取
-l/--list-only 列出ftp目錄下的文件名稱
--limit-rate

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • uniq是去重,不相鄰的行不算重覆值。 uniq [OPTION]... [INPUT [OUTPUT]] 選項說明: -c:統計出現的次數(count)。 -d:只顯示被計算為重覆的行。 -D:顯示所有被計算為重覆的行。 -u:顯示唯一值,即沒有重覆值的行。 -i:忽略大小寫。 -z:在末尾使用\ ...
  • 本文目錄: 1.1 信號說明 1.2 trap佈置陷阱 1.3 佈置完美陷阱必備知識 家裡有老鼠,快消滅它!哎,又給跑了。老鼠這小東西跑那麼快,想直接直接消滅它還真不那麼容易。於是,老鼠藥、老鼠夾子或老鼠籠就派上用場了,它們都是陷阱,放在那靜靜地等待著老鼠的光顧。 在shell中,也可以捉"老鼠", ...
  • Linux Shell常用shell命令 一、文件、目錄操作命令 1、ls命令 功能:顯示文件和目錄的信息 ls 以預設方式顯示當前目錄文件列表 ls -a 顯示所有文件包括隱藏文件 ls -l 顯示文件屬性,包括大小,日期,符號連接,是否可讀寫及是否可執行 ls -lh 顯示文件的大小,以容易理解 ...
  • 信號可以理解成一種軟體中斷。他提供了一種非同步處理事件的方式。每個信號都有一個與之對應的信號名,這些信號名都帶有SIG首碼,如:SIGABRT,SIGALARM。頭文件signal.h 中定義了所有的信號名,他們值為正整數常量。事實上,實現將個別信號定義在不同的頭文件中,只不過這些頭文件又被包含在了s ...
  • 一、Linux下文件互傳,scp命令實例 1、Linux下目錄複製:本機->遠程伺服器 2、Linux下目錄複製:遠程伺服器->本機 3、Linux下文件複製:遠程伺服器->本機 二、Windows與Linux互傳,pscp命令實例 (註:方法很多,這裡介紹的是通過pscp命令) 前提:下載pscp ...
  • PS:不是真正的無縫切換,數據需要自己備份、還原。 Linode官方給出了一篇文章:https://www.linode.com/docs/tools-reference/custom-kernels-distros/install-freebsd-on-linode 參照文章來,就沒有問題。 主要 ...
  • 一、wget 文件下載 使用wget下載單個文件:wget URL 下載並以不同的文件名保存:wget -O wordpress.zip URL wget限速下載:wget --limit-rate=300k URL 使用wget斷點續傳:wget -c URL 使用wget後臺下載:wget -b ...
  • 1.查看是否已經安裝Python CentOS 7.2 預設安裝了python2.7.5 因為一些命令要用它比如yum 它使用的是python2.7.5。 使用 python -V 命令查看一下是否安裝Python 然後使用命令 which python 查看一下Python可執行文件的位置 可見執 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...