该列表包括TCP(IP)、TCP6(IPv6)和UDP套接字。
终端窗口中的环绕使得查看正在发生的事情变得有点困难。下面是该清单中的几个部分:
活动的Internet连接(服务器和已建立的)。 协议接收-Q发送-Q本地地址外部地址状态。 TCP 0 0本地主机:域0.0.0.0:*侦听。 TCP 0 0 0.0.0.0:SSH 0.0.0.0:*监听。 tcp 0 0 localhost:ipp 0.0.0.0:*侦听。 TCP 0 0本地主机:SMTP 0.0.0.0:*侦听。 tcp6 0 0[::]:ssh[::]:*监听。 tcp6 0 0 ip6-localhost:ipp[::]:*监听。 。 。 。 活动的UNIX域套接字(服务器和已建立的)。 Proto RefCnt标志类型状态I节点路径。 UNIX 24[]DGRAM 12831/运行/系统d/日志/开发日志。 UNIX 2[acc]流侦听24747@/tmp/dbus-zH6clYmvw8。 UNIX 2[]DGRAM 26372/运行/用户/1000/SYSTEM/NOTIFY。 UNIX 2[]DGRAM 23382/RUN/USER/121/SYSTEM D/NOTIFY。 UNIX 2[ACC]SEQPACKET侦听12839/RUN/udev/CONTROL
“Active Internet”部分列出了已连接的外部连接和侦听远程连接请求的本地套接字。也就是说,它列出了与外部设备建立(或将要建立)的网络连接。
“UNIX域”部分列出了已连接和正在侦听的内部连接。换句话说,它列出了您的计算机中在不同的应用程序、进程和操作系统元素之间建立的连接。
“Active Internet”列包括:
PROTO:此套接字使用的协议(例如,TCP或UDP)。 Recv-q:接收队列。这些是已接收并缓冲的传入字节,等待使用此连接的本地进程读取和使用它们。 Send-Q:删除发送队列。这将显示准备从发送队列发送的字节数。 本地地址:连接的本地端的地址详细信息。默认情况下,netstat将显示地址的本地主机名和端口的服务名称。 外来地址:输入连接远端的地址和端口号。 状态:本地套接字的状态。对于UDP套接字,此字段通常为空。请参见下面的状态表。
对于TCP连接,状态值可以是以下值之一:
听着:仅限服务器端。套接字正在等待连接请求。 SYN-SEND:仅限客户端。此套接字已发出连接请求,正在等待是否会被接受。 SYN-RECEIVED:仅服务器端。此套接字在接受连接请求后正在等待连接确认。 已建立:服务器和客户端。服务器和客户端之间已经建立了工作连接,允许在两者之间传输数据。 FIN-WAIT-1:服务器和客户端。此套接字正在等待来自远程套接字的连接终止请求,或等待对先前从此套接字发送的连接终止请求的确认。 FIN-WAIT-2:服务器和客户端。此套接字正在等待来自远程套接字的连接终止请求。 关闭-等待:服务器和客户端。此套接字正在等待来自本地用户的连接终止请求。 结束:服务器和客户端。此套接字正在等待来自远程套接字的连接终止请求确认。 Last-ACK:服务器和客户端。此套接字正在等待对其发送到远程套接字的连接终止请求的确认。 等待时间:服务器和客户端。此套接字向远程套接字发送确认,让它知道已收到远程套接字的终止请求。它现在正在等待,以确保收到确认。 已关闭:没有连接,因此套接字已终止。
“Unix domain”列为:
PROTO:此套接字使用的协议。它将是“Unix”。 RefCnt:引用计数。连接到此套接字的附加进程数。 标志:这通常设置为ACC,表示SO_ACCEPTON,表示套接字正在等待连接请求。SO_WAITDATA显示为W,表示有数据等待读取。SO_NOSPACE(显示为N)表示没有空间将数据写入套接字(即发送缓冲区已满)。 类型:套接字类型。请参阅下面的类型表。 状态:套接字的状态。请参阅下面的状态表。 i-Node:与此套接字关联的文件系统inode。 路径:套接字的文件系统路径。
Unix域套接字类型可以是以下类型之一:
DGRAM:套接字正以数据报模式使用,使用固定长度的消息。数据报既不保证可靠、有序,也不保证不复制。 STREAM:该套接字是一个流套接字。这是常见的“正常”类型的套接字连接。这些套接字旨在提供可靠的分组顺序(按顺序)传递。 RAW:此套接字正被用作原始套接字。原始套接字在OSI Model 1的网络级别运行,不从传输级别引用TCP和UDP报头。 RDM:此套接字位于可靠传递的消息连接的一端。 SEQPACKET:此套接字作为顺序数据包套接字运行,这是提供可靠、有序和无重复的数据包传递的另一种方式。 Packet:原始接口访问套接字。数据包套接字用于在OSI模型的设备驱动程序(即数据链路层)级别接收或发送原始数据包。
Unix域套接字状态可以是以下状态之一:
空闲:此套接字未分配。 侦听:此套接字正在侦听传入的连接请求。 正在连接中:此插座正在连接中。 已连接:已建立连接,套接字可以接收和发送数据。 正在断开连接:连接正在被终止。
哇,那可是一大堆信息啊!许多netstat选项以这样或那样的方式优化结果,但它们不会对内容进行太多更改。让我们来看看。
按类型列出套接字
netstat-a命令可以提供比您需要查看的更多信息。如果您只想或需要查看TCP套接字,可以使用-t(TCP)选项将显示限制为仅显示TCP套接字。
netstat-at|less
显示输出大大减少。列出的少数几个套接字都是TCP套接字。
u(UDP)和-x(UNIX)选项的行为类似,将结果限制为命令行上指定的套接字类型。下面是正在使用的-u(Udp)选项:
netstat-au|较少
仅列出UDP套接字。
按州列出套接字
要查看处于侦听或等待状态的套接字,请使用-l(侦听)选项。
netstat-l|更少
列出的套接字是处于侦听状态的套接字。
这可以与-t(TCP、-u(UDP)和-x(UNIX)选项结合使用,以进一步深入了解感兴趣的套接字。让我们查找侦听TCP套接字:
netstat-lt|更少
现在,我们只看到TCP侦听套接字。
按协议划分的网络统计信息
要查看协议的统计信息,请使用-s(统计信息)选项并传入-t(TCP)、-u(UDP)或-x(UNIX)选项。如果您只使用-s(统计信息)选项,您将看到所有协议的统计信息。让我们检查一下TCP协议的统计信息。
netstat-st|LESS
TCP连接的统计信息集合显示在LESS中。
显示进程名称和PID
使用套接字查看进程的进程ID(PID)以及该进程的名称非常有用。p(程序)选项就是这样做的。让我们看看使用处于侦听状态的TCP套接字的进程的PID和进程名称。我们使用sudo来确保收到所有可用的信息,包括通常需要root权限的任何信息。
sudo netstat-p-at
以下是格式化表格中输出:
活动的Internet连接(服务器和已建立的)。 Proto Recv-Q Send-Q本地地址外部地址状态PID/程序名称。 tcp 0 0 localhost:domain 0.0.0.0:*侦听6927/systemd-Resolution。 TCP 0 0 0.0.0.0:SSH 0.0.0.0:*侦听751/sshd。 tcp 0 0 localhost:ipp 0.0.0.0:*侦听7687/cupsd。 TCP 0 0 localhost:SMTP 0.0.0.0:*侦听1176/master。 tcp6 0 0[::]:ssh[::]:*侦听751/sshd。 tcp6 0 0 ip6-localhost:ipp[::]:*侦听7687/cupsd。 tcp6 0 0 ip6-localhost:smtp[::]:*侦听1176/master
我们有一个额外的列,名为“PID/程序名”。此列列出使用每个套接字的进程的PID和名称。
列出数字地址
我们可以采取的另一个消除歧义的步骤是将本地和远程地址显示为IP地址,而不是其解析的域名和主机名。如果我们使用-n(数字)选项,IPv4地址将以点分十进制格式显示:
SUDO netstat-AN|LESS
IP地址显示为数字值。还会显示端口号,与IP地址之间用冒号“:”分隔。
IP地址127.0.0.1表示套接字绑定到本地计算机的环回地址。您可以将IP地址00.0.0.0视为本地地址的“默认路由”,以及外来地址的“任何IP地址”。显示为“::”的IPv6地址也都是零地址。
可以很容易地检查列出的端口,以了解它们的通常用途:
22:这是安全外壳(SSH)侦听端口。 25:这是简单邮件传输协议(SMTP)侦听端口。 53:这是域名系统(DNS)的侦听端口。 68:这是最新的动态主机配置协议(DHCP)侦听端口。 631:这是通用UNIX打印系统(CUPS)侦听端口。
相关:127.0.0.1和0.0.0.0有什么区别?
显示路由表
r(路由)选项显示内核路由表。
sudo netstat-r
下面是整齐表格中的输出:
内核IP路由表。 目的地址:网关,更新Genask,更新,旗帜,MSS,Window,Inirtt,iFace。 默认设置为:Vigor.outer:0.0.0.0%;UG::0.0.0%;UG::0.0enp0s3。 LINK-LOCAL**0.0.0.0*255.255.0.0*0enp0s3*0enp0s3。 192.168.4.0:0.0.0.0美元:255.255.255.0 U:35.00:0:00:0:0:0:0p0s3
而且,这些专栏的意思是:
目标:目标网络或目标主机设备(如果目标不是网络)。 网关:网关地址。如果未设置网关地址,则此处会显示星号“*”。 通用掩码:路由的子网掩码。 旗帜:见下面的旗帜表。 MSS:此路由上TCP连接的默认最大段大小-这是一个TCP段中可以接收的最大数据量。 窗口:此路由上的TCP连接的默认窗口大小,指示在接收缓冲区满之前可以传输和接收的数据包数。实际上,数据包由接收应用程序使用。 IRTT:初始往返时间。内核引用此值来动态调整响应速度较慢的远程连接的TCP参数。 iFace:传输通过此路由发送的数据包的网络接口。
标志值可以是以下值之一:
U:路线已经到了。 H:目标是主机,也是此路由上可能的唯一目的地。 旅客:使用网关。 R:恢复动态路由的路由。 d:由路由守护进程动态安装。 m:路由守护进程在收到Internet控制消息协议(ICMP)数据包时进行了修改。 答:由addrconf安装,它是自动DNS和DHCP配置文件生成器。 C:缓存条目。 !:拒绝路由。
查找进程使用的端口
如果我们通过grep管道输出netstat,我们可以按名称搜索进程并识别它正在使用的端口。我们使用前面使用的-a(全部)、-n(数字)和-p(程序)选项,并搜索“sshd”。
SUDO netstat-ANP|grep“sshd”
grep找到目标字符串,我们看到sshd守护进程正在使用端口22。
当然,我们也可以反过来做这件事。如果我们搜索“:22”,我们可以找出哪个进程正在使用该端口(如果有的话)。
SUDO netstat-ANP|grep“:22”
这次grep找到“:22”目标字符串,我们看到使用此端口的进程是sshd守护进程,进程ID为751。
列出网络接口
-i(接口)选项将显示netstat可以发现的网络接口表。
SUDO netstat-I
以下是更易读的输出:
内核接口表。 iFace支持MTU:RX-OK;RX-ERR RX-DRP;RX-OVR;RX-OVR;TX-OK;TX-ERR;TX-DRP;TX-OVR FLG。 Enp0s3:1,500 4520671 0 0 0 4779773 0 0 0 BMRU。 LO 65536 30175 0 0 0 30175 0 0 0 LRU
这就是这些列的含义:
iFace:接口的名称。enp0s3接口为对外网络接口,lo接口为环回接口。回送接口使进程能够使用联网协议在计算机内相互通信,即使计算机未连接到网络也是如此。 MTU:最大传输单位(MTU)。这是可以发送的最大“数据包”。它由包含路由和协议标志的报头、其他元数据以及实际传输的数据组成。 RX-OK:接收的数据包数,无错误。 rx-err:接收的有错误的数据包数。我们希望这个价格尽可能低。 RX-DRP:丢弃(即丢失)的数据包数。我们还希望这个数字尽可能低。 RX-OVR:接收时因溢出而丢失的包数。这通常意味着接收缓冲区已满,无法接受更多数据,但收到了更多数据,必须将其丢弃。这个数字越低越好,零是完美的。 TX-OK:传输的数据包数,无错误。 RX-ERR:传输的有错误的数据包数。我们希望这个值为零。 RX-DRP:传输时丢弃的数据包数量。理想情况下,该值应为零。 RX-OVR:传输时因溢出而丢失的数据包数。这通常意味着发送缓冲区已满,无法接受更多数据,但更多数据已准备好传输,必须丢弃。 FLG:旗帜。请参阅下面的旗帜表。
这些旗帜表示以下内容:
广播地址正在使用中。 L:这个接口是一个环回设备。 M:正在接收所有分组(即,在混杂模式下)。任何内容都不会被过滤或丢弃。 O:此接口的地址解析协议(ARP)已关闭。 P:这是点对点(PPP)连接。 R:接口正在运行。 U:接口已打开。
列出多播组成员身份
简而言之,组播传输使数据包只发送一次,而不考虑接收者的数量。例如,对于诸如视频流之类的服务,从发送者的角度来看,这会极大地提高效率。
g(组)选项使netstat列出每个接口上套接字的组播组成员身份。
sudo netstat-g
这些列非常简单:
interface:套接字在其上传输的接口的名称。 RefCnt:引用计数,即附加到套接字的进程数。 组:组播组的名称或标识符。
街区上的新孩子们
route、ip、ifconfig和ss命令可以提供许多netstat能够向您显示的内容。它们都是很棒的命令,值得一查。
我们将重点放在netstat上,因为无论您使用的是哪种类Unix操作系统,即使是不知名的操作系统,它都是普遍可用的。