網路狀態診斷工具——netstat命令

来源:https://www.cnblogs.com/54chensongxia/archive/2020/01/03/12144520.html
-Advertisement-
Play Games

`netstat`命令可以用來查詢整個系統的網路狀態。百度百科的定義如下: Netstat的 "定義" 是: Netstat是在 "內核" 中訪問網路連接狀態及其相關信息的 "程式" ,它能提供TCP連接,TCP和UDP監聽,進程 "記憶體管理" 的相關報告。 Netstat是 "控制台" 命令,是一 ...


netstat命令可以用來查詢整個系統的網路狀態。百度百科的定義如下:

Netstat的定義是: Netstat是在內核中訪問網路連接狀態及其相關信息的程式,它能提供TCP連接,TCP和UDP監聽,進程記憶體管理的相關報告。

Netstat是控制台命令,是一個監控TCP/IP網路的非常有用的工具,它可以顯示路由表、實際的網路連接以及每一個網路介面設備的狀態信息。Netstat用於顯示與IP、TCPUDPICMP協議相關的統計數據,一般用於檢驗本機各的網路連接情況。

從上面的百科介紹我們可以看出,netstat命令在查詢網路問題的時候十分有用。下麵就來詳細介紹下netstat的用法。

使用語法

netstat [-acCeFghilMnNoprstuvVwx][-A<網路類型>][--ip]

參數說明

  • -a或--all 顯示所有連線中的Socket。
  • -A<網路類型>或--<網路類型> 列出該網路類型連線中的相關地址。
  • -c或--continuous 持續列出網路狀態。
  • -C或--cache 顯示路由器配置的快取信息。
  • -e或--extend 顯示網路其他相關信息。
  • -F或--fib 顯示FIB。
  • -g或--groups 顯示多重廣播功能群組組員名單。
  • -h或--help 線上幫助。
  • -i或--interfaces 顯示網路界面信息表單。
  • -l或--listening 顯示監控中的伺服器的Socket。
  • -M或--masquerade 顯示偽裝的網路連線。
  • -n或--numeric 直接使用IP地址,而不通過功能變數名稱伺服器。
  • -N或--netlink或--symbolic 顯示網路硬體外圍設備的符號連接名稱。
  • -o或--timers 顯示計時器。
  • -p或--programs 顯示正在使用Socket的程式識別碼和程式名稱。
  • -r或--route 顯示Routing Table。
  • -s或--statistice 顯示網路工作信息統計表。
  • -t或--tcp 顯示TCP傳輸協議的連線狀況。
  • -u或--udp 顯示UDP傳輸協議的連線狀況。
  • -v或--verbose 顯示指令執行過程。
  • -V或--version 顯示版本信息。
  • -w或--raw 顯示RAW傳輸協議的連線狀況。
  • -x或--unix 此參數的效果和指定"-A unix"參數相同。
  • --ip或--inet 此參數的效果和指定"-A inet"參數相同。

使用實例


[root@SHA-L0161171 arthas]$ netstat -an            
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:8004            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:11052           0.0.0.0:*               LISTEN     
tcp        0      0 172.24.248.108:8004     192.168.202.31:57588    ESTABLISHED
tcp        0      0 127.0.0.1:51092         127.0.0.1:8091          TIME_WAIT  
tcp        0      0 172.24.248.108:8004     192.168.202.38:32283    ESTABLISHED
tcp        0      0 172.24.248.108:8004     192.168.202.38:58923    TIME_WAIT  
tcp        0      0 172.24.248.108:8004     192.168.202.32:39983    ESTABLISHED
tcp        0      0 172.24.248.108:8004     192.168.202.37:38230    ESTABLISHED
tcp        0      0 172.24.248.108:8004     192.168.202.34:5081     ESTABLISHED
tcp        0      0 172.24.248.108:8004     192.168.202.32:17240    ESTABLISHED
tcp        0      0 127.0.0.1:38784         127.0.0.1:12050         TIME_WAIT  

...

Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  3      [ ]         DGRAM                    18442    /run/systemd/notify
unix  2      [ ]         DGRAM                    18444    /run/systemd/cgroups-agent
unix  2      [ ]         DGRAM                    23822    /var/run/chrony/chronyd.sock
unix  8      [ ]         DGRAM                    18455    /run/systemd/journal/socket
unix  18     [ ]         DGRAM                    18457    /dev/log
unix  2      [ ]         DGRAM                    14151    /var/run/nscd/socket
unix  2      [ ]         DGRAM                    584      /run/systemd/shutdownd
unix  3      [ ]         STREAM     CONNECTED     124439388 /run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     42312    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     39909

上面的輸出包含兩個部分:

1、Active Internet connections 有源TCP連接,其中"Recv-Q"和"Send-Q"指接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟體包正在隊列中堆積。這種情況只能在非常少的情況見到。

2、Active UNIX domain sockets 有源Unix域套介面(和網路套接字一樣,但是只能用於本機通信,性能可以提高一倍)。

對於Internet connections部分輸出參數,做下重點介紹

  • Proto:表示連接使用的協議,常見的有tcpudptcp6等;
  • Recv-Q:指接收隊列,這個數字一般都應該是0,如果不是則表示數據包正在隊列中堆積。拿Tomcat伺服器舉個列子:當Tcp連接建立後,Tomcat伺服器中會有一個accepter線程取出這個連接讓worker線程處理,現在假如連接建立的速度遠遠大於accepter線程取連接的速度,那麼連接就在隊列中堆積,此時Recv-Q就會大於0;還有一種可能就是系統遭遇到了Dos攻擊,已經不能再響應外部請求;
  • Send-Q:發送隊列,對方沒有收到的數據或者說沒有Ack的,還是本地緩衝區,如果發送隊列Send-Q不能很快的清零,可能是有應用向外發送數據包過快,或者是對方接收數據包不夠快;
  • Local Address:表示本地地址,這個欄位一般有三種形式的值:

    • 172.24.248.108:8004 : 這種形式的值是最常見的值,表示本機有個ip地址是172.24.248.108,有個程式正在使用本機的8004埠和外部程式建立連接;
    • 0.0.0.0:8004 : 這種形式的值看起來比較奇怪,其實其中的0.0.0.0表示的是所有能表示本機的ip地址。我們知道機器是可以配置多塊網卡的,比如現在我們的機器配置了兩個網卡,其中一塊配置的地址是172.24.248.108,另外一塊配置的地址是172.24.248.109,那麼這邊的0.0.0.0就是表示172.24.248.108、172.24.248.109和127.0.0.1這三個IP。
    • :::8004 : 其中的::表示全0的IP地址,比如:::* 表示全0的IPv6地址,*表示任意的埠號,全0的含義和0.0.0.0的含義相同。
  • Foreign Address:和本機通信的外部IP地址,顯示規則和Local Address類似,不再贅述了;
  • State:表示連接狀態,常見的連接狀態如下:

LISTEN :The socket is listening for incoming  connections (偵聽來自遠方TCP埠的連接請求)
SYN_SENT:The socket is actively attempting to establish aconnection. (在發送連接請求後等待匹配的連接請求)
SYN_RECV:A connection request has been received from the network. (在收到和發送一個連接請求後等待對連接請求的確認)
ESTABLISHED:The socket has an established connection. (代表一個打開的連接,數據可以傳送給用戶)
FIN_WAIT1: The socket is closed, and the connection is shutting down. (等待遠程TCP的連接中斷請求,或先前的連接中斷請求的確認 )
CLOSE_WAIT:The remote end has shut down, waiting for the socketto close. (等待從本地用戶發來的連接中斷請求)
FIN_WAIT2:Connection is closed, and the socket is waiting for a shutdownfrom the remote end. (從遠程TCP等待連接中斷請求 )
LAST_ACK: The remote end has shut down, and the socket is closed. Waiting foracknowledgement. (等待原來發向遠程TCP的連接中斷請求的確認)
TIME_WAIT:Thesocket is waiting after close to handle packets still in the network (等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認)
CLOSING: Bothsockets are shut down but we still don’t have all our datasent. (等待遠程TCP對連接中斷的確認)
CLOSED:The socket is not being used. (沒有任何連接狀態 )
UNKNOWN:Thestate of the socket is unknown。

備註

  • SYN: (同步序列編號,SynchronizeSequence Numbers)該標誌僅在三次握手建立TCP連接時有效。表示一個新的TCP連接請求。
  • ACK: (確認編號,AcknowledgementNumber)是對TCP請求的確認標誌,同時提示對端系統已經成功接收所有數據。
  • FIN: (結束標誌,Finish)用來結束一個TCP回話.但對應埠仍處於開放狀態,準備接收後續數據。

常用netstat命令

1. 列出所有信息

netstat -a
# 其中n表示使用IP地址表示機器信息,而不是使用功能變數名稱
netstat -an

這個命令配合grep最常使用。

2. 只顯示監聽埠

netstat -l

3. 顯示PID和進程名稱

netstat -anp

4. 持續輸出狀態信息

netstat -anpc

5. 查看連接某服務埠最多的的IP地址(前20個)

netstat -nat | grep "xx.xx.xx.xx:port" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20

輸出

      4 192.168.202.38
      4 192.168.202.37
      4 192.168.202.36
      4 192.168.202.35
      3 192.168.202.34
      3 192.168.202.33
      3 192.168.202.32
      2 192.168.202.31

參考

  • https://blog.csdn.net/dongl890426/article/details/86981901
  • https://blog.csdn.net/qq_42014600/article/details/90372315
  • https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html

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

-Advertisement-
Play Games
更多相關文章
  • 對於C#的開發的網頁程式,一些企業或者工廠可能會運用這些程式去查詢一些資料,考慮到查詢的資料太多,假如一個月的資料就有上萬條數據,在對於查詢資料的SQL語句後時間欄位運用Between.....AND......對查詢時間範圍進行控制,以免撈取數據太多,查詢時間較長。 根據判斷輸入的時間範圍返回的結 ...
  • 1.前端頁面代碼: 前端頁面代碼主要顯示退出系統或者網站的可視化按鈕代碼,代碼如下:(請忽略項目關鍵字:CPU) <ul class="nav navbar-nav navbar-right"> <li class=""> <a href="javascript:;" class="user-pro ...
  • 前言 我們知道,目前大多數應用程式在正式發佈到生產環境之前都會經歷多個不同的測試環境,通過讓應用程式在多個不同的環境中運行來及時發現並解決問題,避免線上上發生不必要的損失。這是對於整個軟體的發佈流程來講。但是如果想讓我們的應用程式線上上環境中通過滿足一些動態條件(比如電商平臺在某一時間段的促銷活動) ...
  • 之前自己有個core2.2的項目一直是用的Surging作為微服務框架的,後來瞭解到了Dapr,發現比較輕量級,開發部署等也非常方便,故將自己的程式升級到了3.0同時框架改成了Dapr,網上查到的好多Dapr文章基本都是大差不同,大都是用的GIT上的示例或者是直接文章翻譯很少有提到實戰上的一些問題,... ...
  • NTP的用途是把電腦的時鐘同步到世界協調時UTC,NTP可以使電腦對其伺服器或時鐘源進行時間同步。 以下為NTP伺服器搭建和客戶端同步配置 一、服務端配置1、安裝NTP軟體包 執行命令:yum install ntp ntpdate -y 2、修改NTP配置文件,修改前註意先備份。 執行命令:c ...
  • 伺服器硬體知識 電腦:輔助人腦的工具 現在的人們幾乎無時無刻都會碰電腦!不管是桌上型電腦(台式機)、筆記型電腦(筆記本電腦)、平板電腦、智能手機等等,這些東西都算是電腦。雖然接觸的這麼多,但是,你瞭解電腦裡面的元件有什麼嗎?以桌機來說,電腦的機殼裡面含有什麼元件?不同的電腦可以應用在哪些工作?你生活 ...
  • 概念 LNMP是Linux Nginx MySQL PHP 的簡寫,把Nginx、MySQL以及PHP安裝在Linux系統上,組成一個環境來運行PHP的腳本語言。 Nginx是類似Apache的一種Web服務軟體 MySQL是比較小型的資料庫軟體 Apache和PHP需要在同一臺機器上 (先安裝c編 ...
  • kali安裝mongodb 1. 從官網下載需要的安裝包 官網下載地址:https://www.mongodb.com/download-center/community 下載完後可以直接用xshell登錄kali,用rz命令傳輸到伺服器上或者直接下載到kali裡面。 2. 解壓安裝 tar zxf ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...