zoukankan      html  css  js  c++  java
  • 【操作系统之九】Linux常用命令之netstat

    一、概念
    netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

    二、命令格式
    1、直接输入 netstat命令

    [root@PCS101 logs]# netstat
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0     52 PCS101:ssh              bdeadc-80-196.ptr:55405 ESTABLISHED
    Active UNIX domain sockets (w/o servers)
    Proto RefCnt Flags       Type       State         I-Node   Path
    unix  2      [ ]         DGRAM                    14342    /run/systemd/notify
    unix  2      [ ]         DGRAM                    14344    /run/systemd/cgroups-agent
    unix  5      [ ]         DGRAM                    14365    /run/systemd/journal/socket
    ......

    (1)Active Internet connections,活动的Internet网络连接(TCP,UDP,raw)
    Proto 连接使用的协议
    Recv-Q 接收队列:连接此套接字的用户程序未拷贝的字节数
    Send-Q 发送队列:远程主机未确认的字节数
    Local Address 套接字的本地地址(本地主机名)和端口号。除非给定-n,--numeric选项,否则套接字地址按标准主机名(FQDN)进行解析,而端口到则转换到相应的服务名。
    Foreign Address 套接字的远程地址(远程主机名)和端口号。
    State 套接字的状态。因为在RAW协议中没有状态,而且UDP也不用状态信息,所以此行留空。通常为以下几个值之一:
      ESTABLISHED 套接字有一个有效连接
      SYN_SENT 套接字尝试建立一个连接
      SYN_RECV 从网络上收到一个连接请求
      FIN_WAIT1 套接字已关闭,连接正在断开
      FIN_WAIT2 连接已关闭,套接字等待远程方中止。
        TIME_WAIT 在关闭之后,套接字等待处理仍然在网络中的分组
        CLOSED 套接字未用
        CLOSE_WAIT 远程方已关闭,等待套接字关闭
        LAST_ACK 远程方中止,套接字已关闭。等待确认
        LISTEN 套接字监听进来的连接。如果不设置—listening(-l)或者—all(-a)选项,将不显示出来这些连接。
        CLOSING 套接字都已关闭,而还未把所有输出发出
        UNKNOWN 套接字状态未知

    (2)Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
    Proto 连接使用的协议
    RefCnt 表示连接到本套接口上的进程数量
    Flags 显示的标志为SO_ACCEPTON(显示为ACC),SO_WAITDATA(W)或SO_NOSPACE(N)。如果相应的进程等待一个连接请求,那么SO_ACCECPTON用于未连接的套接字。其他标志通常并不重要
    Type 显示套接口的类型
      SOCK_DGRAM 此套接字用于数据报(无连接)模式
      SOCK_STREAM 流模式(连接)套接字
      SOCK_RAW 此套接字用于RAW模式
      SOCK_RDM 一种服务可靠性传递信息
      SOCK_SEQPACKET 连续分组套接字
      SOCK_PACKET RAW接口使用套接字
       UNKNOWN 未知
    State 套接口当前的状态
      FREE 套接字未分配
      LISTENING 套接字正在监听一个连接请求。除非设置--listening(-l)或者--all(-a)选项,否则不显示。
      CONNECTING 套接字正要建立连接
      CONNECTED套接字已连接
      DISCONNECTING 套接字已断开
      (empty) 套接字未连。
      UNKNOWN !不应当出现这种状态
    I-Node
    Path 连接到套接口的其它进程使用的路径名

    2、常见参数

    -a (all)显示所有选项,netstat默认不显示LISTEN相关
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名,能显示数字的全部转化成数字。(重要)
    -l 仅列出有在 Listen (监听) 的服务状态
    -i 显示网卡列表
    -p 显示建立相关链接的程序名(macOS中表示协议 -p protocol)
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计 (重要)
    -c 每隔一个固定时间,执行该netstat命令。
    -o 显示计时器
    -g 显示组播组的关系

    (1)列出所有端口 (包括监听和未监听的)

    列出所有端口: netstat -a
    列出所有tcp端口: netstat -at
    列出所有udp端口: netstat -au

    (2)列出所有处于监听状态的 Sockets
    只显示监听端口: netstat -l
    只列出所有监听tcp端口: netstat -lt
    只列出所有监听udp端口: netstat -lu
    只列出所有监听UNIX端口: netstat -lx

    (3)显示每个协议的统计信息
    显示所有端口的统计信息 netstat -s
    显示TCP端口的统计信息 netstat -st
    显示UDP端口的统计信息 netstat -su

    (4)显示 PID 和进程名称
    显示TCP端口进程 netstat -pt
    显示UDP端口进程 netstat -pu
    查看正在监听的tcp端口,并显示对应的监听程序 netstat -ntpl
    查看正在监听的udp端口,并显示对应的监听程序 netstat -nupl

    (5)不显示主机,端口和用户名 (host, port or user)
    当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。该参数可以加速output的输出,因为不用进行比对查询。

    (6)持续输出 netstat 信息
    netstat 将每隔一秒输出网络信息。
    netstat -t -c 2

    (7)显示系统不支持的地址族 (Address Families)
    netstat --verbose

    (8)显示核心路由信息
    netstat -rn

    (9)找出程序运行的端口
    并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。
    netstat -apn | grep ssh

    找出运行在指定端口的进程
    netstat -an | grep ':22'

    (10)显示网络接口列表
    netstat -i

  • 相关阅读:
    有向强连通分支Tarjan算法
    让理科生沉默,让文科生落泪的题
    迷宫求解(数据结构栈应用)
    编程中无穷大常量的设定技巧
    poj 3159 差分约束+spfa
    codevs 1690 线段树
    uvalive 2756 环形排列颠倒的次数
    poj 2182 树状数组
    uva 10943 数学
    uva 10780 分解质因数
  • 原文地址:https://www.cnblogs.com/cac2020/p/11772857.html
Copyright © 2011-2022 走看看