linux命令_netstat

来源:https://www.cnblogs.com/ivanlee717/archive/2022/05/22/16298654.html
-Advertisement-
Play Games

netstat是一個控制台命令,可用於監控本機的TCP/IP網路,獲得路由表、網路連接以及所有網路介面設備的狀態信息。一般情況下,我們主要使用netstat命令顯示與IP、TCP、UDP和ICMP協議相關的統計數據,檢驗本機各埠的網路連接情況。 比如說,在日常使用電腦時,如果連接到了網路,或多或少 ...


netstat是一個控制台命令,可用於監控本機的TCP/IP網路,獲得路由表、網路連接以及所有網路介面設備的狀態信息。一般情況下,我們主要使用netstat命令顯示與IP、TCP、UDP和ICMP協議相關的統計數據,檢驗本機各埠的網路連接情況。

比如說,在日常使用電腦時,如果連接到了網路,或多或少的會因接收到的數據包導致出錯數據或故障,在正常量的情況下,TCP/IP可以容許這些類型的錯誤,並且能夠自動重新發送數據包。但是如果累計的出錯情況數占所接收IP數據報的百分比過大,而且數目還在不斷增加,那麼我們就要進入控制台,使用netstat命令查看一下出現問題的連接埠。

netstat結果詳解

[root@honey-master ~] netstat
------------------------------------------------------------------------------------|
Active Internet connections (w/o servers)                                           |
Proto Recv-Q Send-Q Local Address           Foreign Address         State           |
tcp        0      0 honey-ma:xmltec-xmlmail honey-master:44714      ESTABLISHED     |
tcp        0      0 honey-master:postgres   honey-master:46680      ESTABLISHED     |
tcp        0      0 honey-master:41756      honey-master:redis      ESTABLISHED     |
tcp        0      0 honey-master:42726      honey-master:redis      ESTABLISHED     | 
tcp        0      0 localhost:39230         localhost:redis         ESTABLISHED     |
..                                                                                  |
tcp6       0      0 honey-master:mysql      honey-master:58232      ESTABLISHED     |
tcp6       0      0 localhost:mysql         localhost:53266         ESTABLISHED     |
tcp6       0      0 honey-master:mysql      honey-master:58446      ESTABLISHED     |
udp        0      0 honey-master:bootpc     _gateway:bootps         ESTABLISHED     |
udp        0      0 localhost:55920         localhost:55920         ESTABLISHED     |
------------------------------------------------------------------------------------|---------------|
Active UNIX domain sockets (w/o servers)                                                            |
Proto RefCnt Flags       Type       State         I-Node   Path                                     |
unix  3      [ ]         DGRAM                    1703     /run/systemd/notify                      |
unix  2      [ ]         DGRAM                    1705     /run/systemd/cgroups-agent               |
...                                                                                                 |
unix  3      [ ]         STREAM     CONNECTED     29975    /run/systemd/journal/stdout              |
unix  3      [ ]         STREAM     CONNECTED     1543565  /var/run/docker.sock                     |
unix  3      [ ]         STREAM     CONNECTED     323733                                            |
unix  3      [ ]         STREAM     CONNECTED     189654                                            |
----------------------------------------------------------------------------------------------------|
Active Bluetooth connections (w/o servers)
Proto  Destination       Source            State         PSM DCID   SCID      IMTU    OMTU Security
Proto  Destination       Source            State     Channel

從整體上看,netstat的輸出結果可以分為兩個部分:

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

另一個是Active UNIX domain sockets,稱為有源Unix域套介面(和網路套接字一樣,但是只能用於本機通信,性能可以提高一倍)。
Proto顯示連接使用的協議,RefCnt表示連接到本套介面上的進程號,Types顯示套介面的類型,State顯示套介面當前的狀態,Path表示連接到套介面的其它進程使用的路徑名。

列出所有的tcp和udp埠:

image-20220522180200247

欄位 含義
proto 協議名稱:tcp/udp
Recv-Q 網路接收隊列:表示收到的數據已經在本地接收緩衝,但是還有多少沒有被進程取走,recv()如果接收隊列Recv-Q一直處於阻塞狀態,可能是遭受了拒絕服務 denial-of-service 攻擊。
Send-Q 網路發送隊列:對方沒有收到的數據或者說沒有Ack的,還是本地緩衝區,如果發送隊列Send-Q不能很快的清零,可能是有應用向外發送數據包過快,或者是對方接收數據包不夠快。這兩個值通常應該為0,如果不為0可能是有問題的。packets在兩個隊列里都不應該有堆積狀態。可接受短暫的非0情況。從步驟一的結果可以看到22埠對應的鏈路的send-Q中堆積了大量的數據包,可以判定是發送數據給目的地址的時候出現了阻塞的問題,導致了包堆積在本地緩存中,不能成功發出去。
Local-address 表格下分析
Foreign Address 與本機埠通信的外部socket。顯示規則與Local Address相同
State 表格下分析
PID/program PID即進程id,Program即使用該socket的應用程式。其中0.0.0.0:1234——本地IP/Port信息。
1、0.0.0.0代表本機上可用的任意地址。比如0.0.0.0:1234表示本機上所有地址的1234埠,這樣ip電腦就不用重覆顯示了。
2、0.0.0.0為預設路由,即要達到不在路由表裡面的網段的包都走0.0.0.0這條規則。氣死,我們可以"通用"理解為代表"本機地址",1234在程式中體現為綁定的1234埠號 0.0.0.0: *——目的地址IP/Port信息。

Local Address

  1. 部分0.0.0.0:22表示監聽伺服器上所有的ip地址上的22埠

  2. :::22 這個也表示監聽本地所有ip的22埠,跟上面的區別是這裡表示的是IPv6地址,上面的0.0.0.0表示的是本地所有IPv4地址NOTE “:::”這三個:的前兩個"::",是"0:0:0:0:0:0:0"的縮寫,相當於IPv6的"0.0.0.0",就是本機的所有IPv6地址,第三個:是IP和埠的分隔符

  3. 127.0.0.1:3310 這個表示監聽本機的loopback地址的3310埠(如果某個服務只監聽了迴環地址,那麼只能在本機進行訪問,無法通過tcp/ip 協議進行遠程訪問)

  4. ::1:323 這個表示監聽IPv6的迴環地址的323埠,::1表示IPv6的loopback地址

State 列共有12中可能的狀態,前面11種是按照TCP連接建立的三次握手和TCP連接斷開的四次揮手過程來描述的。

符號 狀態解釋
LISTEN 首先伺服器要打開一個socket進行監聽,狀態為LISTEN
the socket is listening for incoming connections
SYN_SENT 客戶端通過應用程式調用connect進行active open,於是客戶端tcp發送一個SYN以請求建立一個鏈接,之後狀態設置為SYN_SENT
socket is actively attempting to establish a connection
SYN_RECV 服務端發出ACk確認包給客戶端,狀態變為SYN_RECV
a connection request has been received from the network
ESTABLISHED 代表打開一個連接,雙方可以進行或者已經在數據交互了
the socket has an established connection
FIN_WAIT1 主動關閉服務端應用程式,tcp發送FIN請求關閉連接,之後進入FIN_WAIT1狀態
the socket is closed, and the connection is shutting down.
CLOSE_WAIT 被動關閉,服務端接收到FIN請求後,就發出ACK以回應FIN請求(它的接收也作為文件結束符傳遞給上層應用程式),併進入CLOSE_WAIT狀態
the remote end has shut down, waiting for the socket to close
FIN_WAIT2 主動關閉接收到ACK後,就進入了FIN_WAIT2狀態
connection is closed, and the socket is waitng for a shut down from the remote end.
LAST_ACK 服務端關閉一段時間後,接收到文件結束符的應用程式將調用CLOSE關閉連接,這導致發送一個等待原來向服務端發送連接中斷請求的確認FIN,死後進入LAST_ACK
the remote end has shut down, and the socket is closed. Waiting for anknowledgement.
TIME_WAIT 在主動關閉端接收到FIN後,就會向對方發送ACk確認包,併進入TIME_WAIT狀態。
the socket is waiting after close to handle packets still in the networks.
CLOSING both sockets are shutting down but we still don't have all our data sent
CLOSED 連接結束
UNKNOWN 未知的狀態

參數

-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@xiesshavip002 ~] netstat -a      # 列出所有埠
    [root@xiesshavip002 ~] netstat -at     # 列出所有TCP埠
    [root@xiesshavip002 ~] netstat -au     # 列出所有UDP埠
    
  • 列出所有處於監聽狀態的 Sockets

    [root@xiesshavip002 ~] netstat -l   # 只顯示監聽埠
    [root@xiesshavip002 ~] netstat -lt  # 顯示監聽TCP埠
    [root@xiesshavip002 ~] netstat -lu  # 顯示監聽UDP埠
    [root@xiesshavip002 ~] netstat -lx  # 顯示監聽UNIX埠
    
  • 顯示每個協議的統計信息 -s

    [root@xiesshavip002 ~] netstat -s     # 顯示所有埠的統計信息
    [root@xiesshavip002 ~] netstat -st    # 顯示所有TCP的統計信息
    [root@xiesshavip002 ~] netstat -su    # 顯示所有UDP的統計信息
    IcmpMsg:
        InType3: 8623
        OutType3: 791533
    Udp:
        2478625 packets received
        1946 packets to unknown port received
        0 packet receive errors
        2482843 packets sent
        0 receive buffer errors
        0 send buffer errors
        IgnoredMulti: 21772
    UdpLite:
    IpExt:
        InBcastPkts: 48838
        InOctets: 36060130596
        OutOctets: 17220772176
        InBcastOctets: 6912337
        InNoECTPkts: 99499687
        InECT0Pkts: 14447
    
  • 顯示 PID 和進程名稱 -p

    [root@honey-master ~]# netstat -p
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 honey-ma:xmltec-xmlmail honey-master:44714      ESTABLISHED 173272/java         
    tcp        0      0 honey-master:postgres   honey-master:46680      ESTABLISHED 211809/postgres: po 
    tcp        0      0 honey-master:41756      honey-master:redis      ESTABLISHED 207937/python3      
    tcp        0      0 honey-master:42726      honey-master:redis      ESTABLISHED 357854/python3      
    
    
  • 顯示核心路由信息 -r

    [root@honey-master ~]# netstat -r
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    default         _gateway        0.0.0.0         UG        0 0          0 ens33
    10.0.0.0        0.0.0.0         255.255.255.248 U         0 0          0 br-9dff81edda62
    10.0.106.0      0.0.0.0         255.255.255.0   U         0 0          0 ens33
    172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0
    [root@honey-master ~]# netstat -rn #顯示數字格式,不查詢主機功能變數名稱
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    0.0.0.0         10.0.106.1      0.0.0.0         UG        0 0          0 ens33
    10.0.0.0        0.0.0.0         255.255.255.248 U         0 0          0 br-9dff81edda62
    10.0.106.0      0.0.0.0         255.255.255.0   U         0 0          0 ens33
    172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0
    172.18.0.0      0.0.0.0         255.255.0.0     U         0 0          0 br-b570432f3378
    
    
  • 查看埠和服務 -antp

    [root@honey-master ~] netstat -antp | grep ssh
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      141882/sshd         
    tcp        0    156 10.0.106.19:22          10.0.91.13:65533        ESTABLISHED 447311/sshd: root [ 
    tcp6       0      0 :::22                   :::*                    LISTEN      141882/sshd         
    [root@honey-master ~]# netstat -antp | grep 5432
    tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      132952/postmaster   
    tcp        0      0 10.0.106.19:5432        10.0.106.19:46680       ESTABLISHED 211809/postgres: po 
    tcp        0      0 10.0.106.19:5432        172.17.0.2:53512        ESTABLISHED 342190/postgres: po 
    
  • 列印網路介面 -i

    [root@honey-master ~] netstat -i
    Kernel Interface table
    Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
    br-9dff81edda62  1500 14994174      0      0 0      11310667      0      0      0 BMU
    br-b570432f3378  1500 52444002      0      0 0      52444002      0      0      0 BMRU
    docker0          1500 14994174      0      0 0      11310667      0      0      0 BMRU
    ens33            1500 32370072      0      0 0      18948958      0      0      0 BMRU
    

    上面輸出的信息比較原始。我們將 -e 選項和 -i 選項搭配使用,可以輸出用戶友好的信息。輸出效果等同於ifconfig。

  • 顯示多播組信息 -g

    [root@honey-master ~]# netstat -g
    IPv6/IPv4 Group Memberships
    Interface       RefCnt Group
    --------------- ------ ---------------------
    lo              1      all-systems.mcast.net
    ens33           1      all-systems.mcast.net
    docker0         1      all-systems.mcast.net
    lo              1      ff01::1
    ens33           1      ff02::1
    ens33           1      ff01::1
    docker0         1      ff02::1
    
  • 列印active狀態的連接:active 狀態的套接字連接用 "ESTABLISHED" 欄位表示,所以我們可以使用 grep 命令獲得 active 狀態的連接:

    image-20220522184725502

    配合 watch 命令監視 active 狀態的連接:`watch -d -n0 ""

    image-20220522184824406

  • 查看服務是否在運行

    [root@honeypot ~]# netstat -aple | grep nginx
    tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN      root       42158      3359/nginx: master  
    tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      root       42160      3359/nginx: master  
    tcp        0      0 0.0.0.0:https           0.0.0.0:*               LISTEN      root       42159      3359/nginx: master  
    tcp        0      0 honeypot:https          10.0.80.6:46770         ESTABLISHED nginx      1406865    3360/nginx: worker  
    

    說明nginx正在運行,但如果關閉掉redis服務,狀態都變成了關閉或者等待關閉

    [root@honeypot ~] netstat -aple | grep redis
    tcp        1      0 honeypot:41338          honeypot:redis          CLOSE_WAIT  root       73035      8683/python3        
    tcp        1      0 honeypot:32926          honeypot:redis          CLOSE_WAIT  root       1467648    159493/python3      
    tcp        0      0 honeypot:redis          honeypot:41332          FIN_WAIT2   root       0          -                   
    tcp        1      0 honeypot:41376          honeypot:redis          CLOSE_WAIT  root       73107      8822/python3        
    tcp        0      0 localhost:redis         localhost:47240         TIME_WAIT   root       0          -                   
    

組合命令

  • 查看TCP連接狀態

    [root@honeypot ~]# netstat -nat |awk '{print $6}' |sort|uniq -c|sort -rn
        174 ESTABLISHED
         35 TIME_WAIT
         31 LISTEN
         26 CLOSE_WAIT
          1 established)
          1 Foreign
    
  • 查找請求數請20個IP

    [root@honeypot ~]# netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
    先把狀態全都取出來,然後使用uniq -c統計,之後再進行排序。
         15 127.0.0.1
          4 10.0.81.29
          3 10.0.81.35
          3 10.0.80.6
          2 0.0.0.0
          1 
    
  • 查看連接某服務埠最多的的IP地址

    [root@honeypot ~]# netstat -nat | grep "10.0.81.29:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
          1 10.0.91.13
    

本文來自博客園,作者:ivanlee717,轉載請註明原文鏈接:https://www.cnblogs.com/ivanlee717/p/16298654.html


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

-Advertisement-
Play Games
更多相關文章
  • 我使用Spring AOP實現了用戶操作日誌功能 今天答辯完了,復盤了一下系統,發現還是有一些東西值得拿出來和大家分享一下。 需求分析 系統需要對用戶的操作進行記錄,方便未來溯源 首先想到的就是在每個方法中,去實現記錄的邏輯,但是這樣做肯定是不現實的,首先工作量大,其次違背了軟體工程設計原則(開閉原 ...
  • 大家好,今天給大家介紹一款輕量、快速、穩定可編排的組件式規則引擎框架LiteFlow。 一、LiteFlow的介紹 LiteFlow官方網站和代碼倉庫地址 官方網站:https://yomahub.com/liteflow Gitee托管倉庫:https://gitee.com/dromara/li ...
  • 1. Netty源碼研究筆記(3)——Channel系列 依舊是通過先縱向再橫向的研究方法,在開篇中,我們發現不管是Sever還是Client,最終的啟動是通過調用channel的對應方法來完成的,而這個動作實際在channel綁定的eventLoop中執行。 接下來,我們繼續EchoSever、E ...
  • 轉載請註明來源 https://www.cnblogs.com/brucejiao/p/16188865.html 謝謝! 轉載請註明來源 https://www.cnblogs.com/brucejiao/p/16188865.html 謝謝! 轉載請註明來源 https://www.cnblog ...
  • 我的Notion Clowd.Squirrel Squirrel.Windows 是一組工具和適用於.Net的庫,用於管理 Desktop Windows 應用程式的安裝和更新。 Squirrel.Windows 對 Windows 應用程式的實現語言沒有任何要求,甚至無需服務端即可完成增量更新。 ...
  • NetCore中將SQLServer資料庫備份為Sql腳本 描述: 最近寫項目收到了一個需求, 就是將SQL Server資料庫備份為Sql腳本, 如果是My Sql之類的還好說, 但是在網上搜了一大堆, 全是教你怎麼操作SSMS的, 就很d疼! 解決方案: 通過各種查找資料, 還有一些老哥的幫助, ...
  • 分組和樹形結構是不一樣的。 樹形結構是以遞歸形式存在。分組是以鍵值對存在的形式,類似於GroupBy這樣的形式。 舉個例子 ID NAME SEX Class 1 張三 男 1 2 李四 女 2 3 王二 男 1 當以Sex為分組依據時則是 Key Value 男 1 張三 男 1 3 王二 男 1 ...
  • Docker compose 部署 nginx+php 拉取Docker鏡像 docker pull nginx:1.21.6 docker pull php:7.4.28-fpm 創建docker-compose 目錄 在home目錄下創建docker-nginx mkdir /home/dock ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...