如何在Linux中使用netstat命令

时间:2020-02-23 14:40:09  来源:igfitidea点击:

术语" netstat"代表网络统计信息。
用外行术语来说,netstat命令显示当前的网络连接,网络协议统计信息以及其他各种接口。

如果我们在终端上输入netstat,而没有任何计算机联网背景知识,则系统会向我们抛出各种各样的网络术语。
程序员有责任在清除其余信息的同时提取重要信息。

在本文中,我们将使用netstat命令回答一些与计算机网络相关的查询。

使用Netstat命令识别活动的网络连接

要显示Linux中所有活动的网络连接,我们使用

netstat -a

标准输出包含六列:

  • 协议(Protocol)–用于网络连接的协议类型,例如TCP,UDP等。

  • Recv-Q(接收队列)–等待套接字的套接字中的数据量(以字节为单位)。

  • Send-Q(发送队列)–套接字的发送队列中的数据量(以字节为单位)。

  • 地址–每个地址都包含主机名,后跟":"和端口号。
    本地地址–运行" netstat"命令的计算机的地址。

  • 外部地址–位于网络另一端的计算机的地址。

  • 状态–每个网络连接的状态。

为了更好地理解这一点,假设我们打开一个www.lookip.net。
运行命令时:

netstat -a | grep lookip.net

我们将得到以下输出:

使用netstat命令搜索lookip.net

显然,我们使用特定的外部地址提取了所有正在进行的网络连接。
在命令中," ||"用于将一个子命令的输出传递给另一个,而" grep"是Linux中的搜索工具。

注意:由于并非每个都有与URL匹配的外部地址,因此该技术无法应用于所有类型的。

为了进一步试验netstat命令提供的数据,我们可以编写针对协议,地址或者状态的命令:

显示所有已建立的连接

netstat -a | grep ESTABLISHED

显示所有处于侦听状态的TCP连接

netstat -a | grep tcp | grep LISTEN

Linux提供了一些内置选项来获取特定信息,而不是创建自定义命令。

根据协议过滤

对于TCP特定查询,使用-t选项。
要仅显示TCP连接:

netstat -at

<p>Note: To apply multiple  filters in a single netstat command, the options are appended.</p>

对于UDP特定查询,使用-u选项。
要显示所有遵循UDP的套接字:

netstat -au

基于状态的选项:

要显示所有监听套接字:

netstat -l

使用Netstat使用网络连接识别程序

要获取程序及其进程ID,我们使用:

netstat -p

对于TCP特定程序:

netstat -pt

我们可以注意到,Chrome正在使用进程ID为16648的Internet进行访问。
该信息可用于杀死或者阻止任何程序在不知情的情况下访问某个网络。

注意:如果当前用户不是root用户,则可能会隐藏某些程序信息。
要成为Linux的root用户,可以使用命令sudo su并输入密码。
有关更多信息,请参阅此。

使用Netstat命令列出每个网络连接的IP地址

为了以数字方式获取与IP地址和端口有关的所有数据,我们使用:

netstat -n

我们可以通过以下方式以数字方式显示遵循TCP的程序的地址:

netstat -ptn

区别非常明显,因为我们可以看到每个连接的IP地址和端口号。

每个协议的统计数据是什么?

要使用netstat命令访问每种协议的摘要统计信息,我们运行:

netstat -s

使用Netstat命令显示路由表

网络上的任何设备都需要决定将数据包路由到何处。
路由表包含做出这些决定的信息。
要获取数字形式的路由表的内容,我们使用以下命令选项:

netstat -rn

内核路由表由以下几列组成:

  • 目标–目标计算机的地址。

  • 网关–中间网关地址。

  • Genmask –网络掩码,用于指定网络中的可用主机。

  • 标志–指定哪种路由。

  • MSS –默认最大段大小

  • 窗口–默认窗口大小

  • irtt(初始往返时间)–发送信号并接收其确认的总时间。

  • Iface(接口)–数据包将通过其路由的接口。

<p>Note: The columns having zero value means that the default size is being used.</p>

列出活动的网络接口

要从Internet访问任何信息,系统与网络之间必须存在某些链接。
互连点由网络接口提供。
我们运行命令:

netstat -i

内核接口表包括:

  • Iface(接口)–界面类型
  • MTU –最大传输单位
  • RX –收到的数据包
  • TX –发送的数据包
  • OK –无错误的数据包
  • ERR –数据包有一些错误
  • DRP –丢包
  • OVR –数据包由于溢出而丢失
  • Flg –定义接口配置的标志

netstat命令具有广泛的知识,这使得不可能仅在一篇文章中进行总结。
我们总是可以通过以下方式引用Linux中的手册页:

man netstat

要了解有关netstat选项的更多信息,我们可以通过以下方法在终端中寻求帮助:

netstat -h