netstat是网络状态查看命令,在进入正题先来了解一下端口
一、端口
(1)端口号是什么?
端口号—具有网络功能的应用软件的标识号。也可以这么理解:一个电脑给你电脑中的QQ发送信息,这个电脑通过ip找到你的电脑并把信息发送过去。当这个信息到达你的电脑时,需要交给QQ这个应用。那么电脑是如何找到QQ这个应该的呐?没错,就是通过端口号。也就是说当信息到达你的电脑后,会选择QQ的端口号把信息交给QQ。
注意,端口号是不固定的,即可以由用户手工可以分配(当然,一般在软件编写时就已经定义)。
(2)端口号有多少种分类?
端口号分为三类
第一类:公认端口号
从0到1023,它们紧密绑定(binding)于一些服务(固定分配给一些服务)。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP。
第二类:注册端口号
从1024到49151。它们松散地绑定于一些服务。这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。
第三类:动态或私有端口
从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
(3)常见的端口号有那些?
FTP:20和21,HTTP:80,TELNET:23,SSH(安全shell协议):22,DNS(域名协议):53,SMTP(简单邮件传输协议):25,POP3(邮局协议3代):110
二、netstat
netstat 是网络状态查看命令,既可以查看到本机开启的端口,也可以查看有哪些客户端连接。netstat 命令的基本信息如下。
命令名称:netstat(Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships。)
所在路径:/bin/netstat
执行权限:所有用户
功能描述:输出网络连接、路由表、接口统计、伪装连接和组播成员
语法
netstat【选项】
选项
-a或--all:列出所有网络状态,包括 Socket 程序;
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:仅显示监听状态的连接;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示 PID 和程序名;
-r或--route:显示路由表;
-s或--statistice:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同。
例1:netstat -a 列出所有端口
注意:列出所有端口号,一般比较多。建议使用netstat -a|more 分屏显示
例2:netstat -at 列出所有tcp端口
例3:netstat -au 列出所有udp端口
例4:netstat -tuln
看到这里大家可能对proto、Recv-Q等有点不理解,接下来了解一下
名称 | 说明 |
---|---|
Proto | 网络连接的协议,一般就是 TCP 协议或者 UDP 协议 |
Recv-Q | 表示接收到的数据,已经在本地的缓冲中,但是还没有被进程取走 |
Send-Q | 表示从本机发送,对方还没有收到的数据,依然在本地的缓冲中,不具备 ACK 标志的数据包 |
Local Address | 本机的 IP 地址和端口号 |
ForeignAddress | 远程主机的 IP 地址和端口号 |
State | -LISTEN:监听状态,只有 TCP 协议需要监听,而 UDP 协议不需要监听 |
-ESTABLISHED:已经建立连接的状态。如果使用"-I"选项,则看不到已经建立连接的状态 | |
-SYN_SENT:SYN 发起包,就是主动发起连接的数据包 | |
-SYN_RECV:接收到主动连接的数据包 | |
-FIN_WAIT1:正在中断的连接 | |
-FIN_WAIT2:已经中断的连接,但是正在等待对方主机进行确认 | |
-TIME_WAIT:连接已经中断,但是套接字依然在网络中等待结束 | |
-CLOSED:套接字没有被使用 |
例5:netstat -p 查看本机有哪些程序开启的端口
例6:netstat -an:不显示主机,端口和用户名(host, port or user)
例7:netstat -r 显示路由信息
destination、gateway等表示为
名称 | 说明 |
---|---|
Destination | 目标网段或者主机 |
Gateway | 网关地址,”*” 表示目标是本主机所属的网络,不需要路由 |
Genmask | 网络掩码 |
Flags | 标记。一些可能的标记如下: |
U ——路由是活动的 | |
H ——目标是一个主机 | |
G ——路由指向网关 | |
R ——恢复动态路由产生的表项 | |
D ——由路由的后台程序动态地安装 | |
M ——由路由的后台程序修改 | |
! ——拒绝路由 | |
Metric | 路由距离,到达指定网络所需的中转数(linux 内核中没有使用) |
Ref | 路由项引用次数(linux 内核中没有使用) |
Use | 此路由项被路由软件查找的次数 |
Iface | 该路由表项对应的输出接口 |
来源:CSDN
作者:supreme H
链接:https://blog.csdn.net/qq_42683219/article/details/98246865