Linux
  1. Linux文件和目录管理
  2. Linux打包和压缩
  3. Linux文本管理
  4. Linux用户和用户组
  5. Linux权限管理
  6. Linux进程管理
  7. Linux命令
    1. Linux stat命令:显示文件或文件系统的详细信息-7.1
    2. Linux man命令:显示联机帮助手册-7.2
    3. Linux info命令:info格式的命令帮助指令-7.3
    4. Linux whereis命令:査找二进制命令、源文件和帮助文档-7.4
    5. Linux which命令:列出命令的所在路径-7.5
    6. Linux find命令:在目录中查找文件-7.6
    7. Linux shutdown命令:关机和重启-7.7
    8. Linux ifconfig命令:查看和临时修改IP地址-7.8
    9. Linux ping命令:测试主机通信情况命令-7.9
    10. linux netstat命令:网络状态查看命令-7.10

linux netstat命令:网络状态查看命令-7.10

程序员日记      2019-08-01

我们需要先简单了解一下端口的作用。在互联网中,如果 IP 地址是 IP 服务器在互联网中唯一的地址标识,那么大家可以想象一下:我有一台服务器,它有固定的公网 IP 地址,通过 IP 地址可以找到我的服务器。但是我的服务器中既启动了网页服务(Web 服务),又启动了文件传输服务(FTP 服务),那么你的客户端访问我的服务器,到底应该如何确定你访问的是哪一个服务呢?

端口就是用于网络通信的接口,是数据从传输层向上传递到应用层的数据通道。我们可以理解为每个常规服务都有默认的端口号,通过不同的端口号,我们就可以确定不同的服务。也就是说,客户端通过 IP 地址访问到我的服务器,如果数据包访问的是 80 端口,则访问的是 Web 服务;而如果数据包访问的是 21 端口,则访问的是 FTP 服务。

我们可以简单地理解为每个常规服务都有一个默认端口(默认端口可以修改),这个端口是所有人都知道的,客户端可以通过固定的端口访问指定的服务。而我们通过在服务器中查看已经开启的端口号,就可以判断服务器中开启了那些服务。

netstat 是网络状态查看命令,既可以查看到本机开启的端口,也可以查看有哪些客户端连接。

基本信息

命令名称:netstat。

英文原意:Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships。

所在路径:/bin/netstat.

执行权限:所有用户。

功能描述:输出网络连接、路由表、接口统计、伪装连接和组播成员。

基本格式

[root@localhost ~]# netstat [选项]

选项:

-a:列出所有网络状态,包括 Socket 程序;

-c秒数:指定每隔几秒刷新一次网络状态;

-n:使用 IP 地址和端口号显示,不使用域名与服务名;

-p:显示 PID 和程序名;

-t:显示使用 TCP 协议端口的连接状况;

-u:显示使用 UDP 协议端口的连接状况;

-I:仅显示监听状态的连接;

-r:显示路由表;


常见用法

查看本机开启的端口

[root@VM_0_10_centos test]# netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN    

内容详解

1) Proto:网络连接的协议,一般就是 TCP 协议或者 UDP 协议。

2) Recv-Q:表示接收到的数据,已经在本地的缓冲中,但是还没有被进程取走。

3) Send-Q:表示从本机发送,对方还没有收到的数据,依然在本地的缓冲中,不具备 ACK 标志的数据包。

4) Local Address:本机的 IP 地址和端口号。

5) ForeignAddress:远程主机的 IP 地址和端口号。

6) State:状态。常见的状态主要有以下几种。

-LISTEN:监听状态,只有 TCP 协议需要监听,而 UDP 协议不需要监听。

-ESTABLISHED:已经建立连接的状态。如果使用"-I"选项,则看不到已经建立连接的状态。

-SYN_SENT:SYN 发起包,就是主动发起连接的数据包。

-SYN_RECV:接收到主动连接的数据包。

-FIN_WAIT1:正在中断的连接。

-FIN_WAIT2:已经中断的连接,但是正在等待对方主机进行确认。

-TIME_WAIT:连接已经中断,但是套接字依然在网络中等待结束。

-CLOSED:套接字没有被使用。

在这些状态中,我们最常用的就是 LISTEN 和 ESTABLISHED 状态,一种代表正在监听,另一种代表已经连接。