主頁 > 作業系統 > 網路狀態診斷工具——netstat命令

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

2020-10-01 05:44:26 作業系統

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

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

Netstat是控制臺命令,是一個監控TCP/IP網路的非常有用的工具,它可以顯示路由表、實際的網路連接以及每一個網路介面設備的狀態資訊,Netstat用于顯示與IP、TCP、UDP和ICMP協議相關的統計資料,一般用于檢驗本機各埠的網路連接情況,

從上面的百科介紹我們可以看出,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

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/144230.html

標籤:Linux

上一篇:Centos7開放及查看埠

下一篇:windows平臺用vmware player創建系統后的單網卡禁網問題

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more