Linux常用命令之netstat

实验环境:Centos7.4

实验目的:掌握linux的常用命令-netstat命令的用法

实验步骤:

中国有13亿人口,为了区分陕西的张三跟山西的张三跟其他省份的张三,聪明的人们发明了身份证号,可以在13亿人口中,把你唯一确定出来,在也不怕山西的张三跟山西的张三会重名了。

互联网中也引入了类似的防伪标签,每台服务器有唯一的IP地址,IP地址就是互联网界的身份证号,所以你很快就理解了当IPV4要用尽的时候,就会有重名的人了,所以人们扩展了表示方式IPV6就出来了。说远了,互联网界通过IP地址来确认唯一服务器,假如你的客户端要访问此服务器中的某一个服务,我作为服务器,你客户端来访问我的服务我一定要知道你从哪个门进来的,来找谁。

端口就是用于网络通信的接口,是数据从传输层向上传递到应用层的数据通道。好晦涩,说白了,每个常规服务都有默认的端口号,假设我的服务器是一栋别墅,里面有好多房间,通过IP地址你找到了我的别墅,端口号就是我的房间号,客户端通过 IP 地址访问到我的服务器,如果数据包访问的是 80 端口,则访问的是 Web 服务;而如果数据包访问的是 21 端口,则访问的是 FTP 服务。

语法:netstat [选项]

选项:

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

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

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

-p:显示 PID 和程序名;

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

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

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

-r:显示路由表;

列出所有网络状态

检查所有的 tcp/udp/unix socket 连接

同时列出PID/进程名称

使用 p选项可以在列出连接的同时也显示 PID 或者进程名称,而且它还能与其他选项连用。

其他的单项命令读者可以一项一项试一试。

查看本机开启的端口

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 状态,一种代表正在监听,另一种代表已经连接。

每一条命令其实通过使用man 或者--help,按照既定的规则一条一条的实验,其实是非常简单的,但是将命令或者命令的选项组合起来还是有难度的。读者可以试着用之前讲到的命令做一些自己想做的事情,比如说是否可以将pid 在netstat -anx里面切出来,读者请试一试。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190119G15HOW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券