实验环境: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里面切出来,读者请试一试。
领取专属 10元无门槛券
私享最新 技术干货