linux环境下使用netstat命令查看网络信息_linux netstat -ano-程序员宅基地

技术标签: tcp  Ubuntu|Linux  网络  Network  linux  统计  netstat  

前言

netstat 这个命令一直以为是 net status 的缩写,今天一查发现并没有找到官方的这种说法,然后参考了 man 手册,发现这个词更像是 net statistics 的缩写,命令的作用是显示网络连接、路由表、接口连接、无效连接和多播成员关系的,man 手册中描述这个命令如下:

netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

这个命令很强大,但是我经常使用的参数很简单,通常用来查询端口占用问题,命令为 netstat -anp | grep xxxPORT,因为在我测试自己项目程序的时候,总有一些进程企图占用我使用的端口,比如那个 被我 kill 了 n 次的 TIM 客户端,使用 netstat 可以方便的找到是哪个进程占用了你的端口。

虽然这个命令经常使用,但是其中的这些参数含义却不是很清楚,所以特地总结一下,综合其他常见的用法,记录下来以备后续查找使用。

参数选项

  • -a:显示所有连接,包括 LISTEN 状态的连接
  • -l:仅显示 LISTEN 状态的连接
  • -t:仅显示tcp相关选项
  • -u:仅显示udp相关选项
  • -n:拒绝显示别名,能显示数字的全部转化成数字
  • -o:显示信息中包括与网络计时器相关的信息
  • -e:显示扩展信息,例如uid等
  • -p:显示建立相关链接的程序名
  • -r:显示路由信息,路由表
  • -s:按各个协议进行统计
  • -c:每隔一个固定时间,执行该netstat命令。

无参数执行

该命令无参数执行时显示数据会少一些,便于我们看清命令执行的结果,内容如下:

[root@node1 ~]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.0.201:ssh       178.129.126.124.b:19450 ESTABLISHED
tcp        0     52 192.168.0.201:ssh       178.129.126.124.b:17626 ESTABLISHED
tcp        0      0 192.168.0.201:57784     101.200.35.175:https    TIME_WAIT
tcp        0      0 192.168.0.201:42298     100.125.2.72:https      ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ]         DGRAM                    11550    /run/systemd/shutdownd
unix  2      [ ]         DGRAM                    13355412 /var/run/chrony/chronyd.sock
unix  3      [ ]         DGRAM                    1228     /run/systemd/notify
unix  2      [ ]         DGRAM                    1230     /run/systemd/cgroups-agent
unix  5      [ ]         DGRAM                    1241     /run/systemd/journal/socket
unix  16     [ ]         DGRAM                    1243     /dev/log
unix  3      [ ]         STREAM     CONNECTED     15663
unix  3      [ ]         STREAM     CONNECTED     15662
...

输出结果可以分为 Active Internet connectionsActive UNIX domain sockets 两个部分:

Active Internet connections 指有效的网络连接,默认显示6列内容:

  • Proto:协议名字,包括tcp, udp, udpl, raw等
  • Recv-Q:表示网络接收队列,表示收到的数据已经在本地接收缓冲,还有多少没有被应用程序取走
  • Send-Q:表示网络发送队列,表示存在本地缓冲区,但对方没有收到的数据或者没有 ACK 的
  • Local Address:本地IP地址和端口
  • Foreign Address:外部IP地址和端口
  • State:网络连接状态,包括 ESTABLISHED、SYN_SENT、SYN_RECV、FIN_WAIT1、FIN_WAIT2、TIME_WAIT、CLOSE、CLOSE_WAIT、LAST_ACK、LISTEN、CLOSING、UNKNOWN 等状态

Active UNIX domain sockets 是指本地套接口,我们知道 socket 也可用于同一台主机的进程间(IPC)通讯,但是 socket 用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程
并且它是是全双工的,API接口语义丰富,相比其它进程间通信机制有明显的优越性。

常用命令组合

查询端口占用

[root@node1 /]# netstat -anp | grep 8889
tcp        0      0 0.0.0.0:8889            0.0.0.0:*               LISTEN      27584/tinyproxy

这是我目前最常用的命令,在windows可以改为 netstat -ano | findstr 8889

显示tcp连接

[root@node1 /]# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:ddi-tcp-2       0.0.0.0:*               LISTEN
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0     52 192.168.0.201:ssh       178.129.126.124.b:19450 ESTABLISHED
tcp        0      0 192.168.0.201:ssh       178.129.126.124.b:17626 ESTABLISHED
tcp        0      0 192.168.0.201:42298     100.125.2.72:https      ESTABLISHED
tcp6       0      0 [::]:squid              [::]:*                  LISTEN
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN

显示处于 LISTEN 状态的端口

[root@node1 /]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:ddi-tcp-2       0.0.0.0:*               LISTEN
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp6       0      0 [::]:squid              [::]:*                  LISTEN
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
udp        0      0 0.0.0.0:bootpc          0.0.0.0:*
udp        0      0 0.0.0.0:ntp             0.0.0.0:*
udp        0      0 localhost:323           0.0.0.0:*
udp        0      0 0.0.0.0:56034           0.0.0.0:*
udp6       0      0 [::]:42035              [::]:*
udp6       0      0 localhost:323           [::]:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     11533    /run/lvm/lvmpolld.socket
unix  2      [ ACC ]     STREAM     LISTENING     6848304  /var/run/rpcbind.sock
unix  2      [ ACC ]     STREAM     LISTENING     11584    /run/lvm/lvmetad.socket
...

分类统计每种协议的信息

[root@node1 /]# netstat -s
Ip:
    7902622 total packets received
    60675 forwarded
    127 with unknown protocol
    0 incoming packets discarded
    7841813 incoming packets delivered
    7270606 requests sent out
    8 dropped because of missing route
Icmp:
    928210 ICMP messages received
    25426 input ICMP message failed.
    InCsumErrors: 8
    ICMP input histogram:
        destination unreachable: 71154
        timeout in transit: 484
        echo requests: 856165
        echo replies: 337
        timestamp request: 54
    896502 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 40039
        echo request: 244
        echo replies: 856165
        timestamp replies: 54
Tcp:
    274517 active connections openings
    66347 passive connection openings
    187800 failed connection attempts
    90950 connection resets received
    3 connections established
    6359177 segments received
    5808198 segments send out
    494062 segments retransmited
    4 bad segments received.
    452720 resets sent
Udp:
    539313 packets received
    14902 packets to unknown port received.
...

每秒显示一次信息

[root@node1 /]# netstat -c
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0     52 192.168.0.201:ssh       178.129.126.124.b:19450 ESTABLISHED
tcp        0      0 192.168.0.201:ssh       178.129.126.124.b:17626 ESTABLISHED
tcp        0      0 192.168.0.201:42298     100.125.2.72:https      ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ]         DGRAM                    11550    /run/systemd/shutdownd
...

显示核心路由信息

[root@node1 /]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         192.168.0.1     0.0.0.0         UG        0 0          0 eth0
169.254.169.254 192.168.0.254   255.255.255.255 UGH       0 0          0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

显示网络接口列表

[root@node1 /]# netstat -i
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
docker0          1500    36248      0      0 0         33647      0      0      0 BMU
eth0             1500  9119246      0      0 0       8277212      0      0      0 BMRU
lo              65536    27700      0      0 0         27700      0      0      0 LRU

总结

  • netstat -anp | grep 8889 命令可用于查询8889端口被哪个进程占用了,在Windows上翻译为 netstat -ano | findstr 8889
  • netstat 命令查询出的网络连接信息中,Recv-QSend-Q 通常应该为0,如果长时间不为0可能是有问题的,需要尽快排查
  • 如果 Recv-Q 数值一直处于不为0的状态,可能是遭受了拒绝服务 DOS 攻击,导致本地消息处理过慢
  • 如果 Send-Q 数值一直处于不为0的状态,可能是有应用向外发送数据包过快,或者是对方接收处理数据包不够快

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

以史为鉴可以知兴替,以铜为鉴可以正衣冠,以人为鉴可以明得失。人的成长需要对比,总有人比你更加优秀~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shihengzhen101/article/details/109976348

智能推荐

2015年腾讯暑期实习面试_腾讯产品暑期实习面试是当天面试完还是面几天-程序员宅基地

文章浏览阅读1.9k次。大3下学期,是时候考虑暑期实习的问题了。对于IT男来说,进BAT实习是梦寐以求的。 我们学院的传统是能自己找到暑期实习,就能免去暑假在9#的10天强制性实习。 以前的学长学姐,有去百度,去哪网实习的。我也从3月份就开始,跟着实验室的一群哥们找实习,有内推的机会就好好准备面试。正文从这里开始 !-) 4月份初,参加鹅厂的在线笔试,题目大多是设计网络、数据结构和系统等_腾讯产品暑期实习面试是当天面试完还是面几天

计算机英语词汇_pressesctocontinue怎么解决-程序员宅基地

文章浏览阅读1.1k次,点赞11次,收藏41次。计算机英语词汇CPU(Center Processor Unit)中央处理单元 mainboard主板 RAM(random access memory)随机存储器(内存) ROM(Read Only Memory)只读存储器 Floppy Disk软盘 Hard Disk硬盘 CD-ROM光盘驱动器(光驱) moni_pressesctocontinue怎么解决

01_6_SERVLET如何从上一个页面取得参数-程序员宅基地

文章浏览阅读55次。01_6_SERVLET如何从上一个页面取得参数1.sevlet实现publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {//处理从客户端获取的参数此方法只针对客户端post方法//request.set..._servlet获取上一个网址参数

局域网php服务器搭建,php局域网服务器搭建-程序员宅基地

文章浏览阅读509次。问一下:这个确实是用户输入的字符串吗? 还是用户输入内容的html源码?个人觉得既然是js里面做, 可以考虑下面方式:var srcStr = '57< img src="/dev-build/5c1800f8cea587969777d0e2a11ec895.png" class="face-pic" data-labface="4">fd< img src="/dev-buil..._搭建php联机

python 获取安装包apk, ipa 信息-程序员宅基地

文章浏览阅读528次。# -*- coding:utf-8 -*-import reimport osimport zipfilefrom biplist import *from androguard.core.bytecodes import apkclass AnalyzePackage: def get_android_data(self, package..._python命令如何查看apk和ipa版本

mysql 恢复日志文件_教你自动恢复MySQL数据库的日志文件(binlog)-程序员宅基地

文章浏览阅读176次。如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据。“mysqlbinlog:用于处理二进制日志文件的实用工具”。要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名。一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。如果未包含在选项文件中..._mysql binlog日志以前的没了

随便推点

Spring Boot整合swagger2(生成有左右菜单式的api文档界面)_java swagger 左右布局-程序员宅基地

文章浏览阅读1k次。一、pom.xml内容:<!--=====依赖swagger2 zhongzk 2019.7.7 --><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version&..._java swagger 左右布局

Gson解析json字符串-程序员宅基地

文章浏览阅读294次。// 解析传递过来的json字符串JsonParser parser = new JsonParser();JsonObject jsonObj = parser.parse(strJson).getAsJsonObject(); Map<String, Object> map = new HashMap<String, Object&..._gson 解析字符串

什么是人工智能?_strangled snakes beside that of hercules翻译-程序员宅基地

文章浏览阅读3.6k次,点赞2次,收藏7次。Extinguished philosophies lie about the cradle of every science as the     strangled snakes beside that of Hercules. - adapted from T. H. Huxley                                               WHAT IS A_strangled snakes beside that of hercules翻译

hdu3342 Legal or Not---拓扑排序_codeup legal or not 邻接矩阵-程序员宅基地

文章浏览阅读970次。1、所有in=0的都拿出去了,但vis还不全为0,则一定有环拓扑排序:用邻接表存储比较方便1、找到一个入度为0的点,删除它,它的所有后继结点入度-12、重复1知道没有入度为0的点存在,这时所有删除的顶点构成一个全序关系。#include #include #include #include #include #include #include #inc_codeup legal or not 邻接矩阵

teradata数据库-创建表及分区表CASE_N-程序员宅基地

文章浏览阅读1k次。1CHECKSUM=DEFAULT是什么意思CHECKSUM是用来校验数据是否损坏的。DEFAULT是缺省项,可以再DBS程序中设置。不过,一般情况下DEFAULT为NONE选项,NONE选项不进行CHECKSUM计算,所以对性能没有任何印象。2SETLATINNOTCASESPECIFIC是不是说字段左面不用区分大小写SETLATIN使用拉丁字符集编码,如果碰到非拉..._teradata case and

Simscape基础教程之实例(二)——使用Simscape三维物理仿真自由落体小球碰撞斜面_使用simscape三维物理仿真自由落体小球碰撞平面-程序员宅基地

文章浏览阅读1.6k次。一.前言之前写了一个关于小球自由落体碰撞平面的教程,后来有评论说怎么做碰撞斜面的,所以才有了这期教程。上期“小球碰撞平面”教程,请点链接。二.具体步骤第1步本期教程基于上期教程,所以模型也该自上期所用的模型。模型构建如下:第2步在上面的新建的模型中,我增加了一个斜面,对应平面如上图所示。新增斜面与原平面之间的变换如下图所示:第3步请注意下图,无论小球是与平面接触还是与斜面接触,板子上的坐标系始终必须在板子正中间,此外,z轴也必须与板子平面垂直。小球的坐标方向任意,但是坐标系原点必须在小_使用simscape三维物理仿真自由落体小球碰撞平面