突然有事情涉及到本地端口,对相关内容进行了了解,这部分知识应该偏向运维,有些不好理解,查起来也零零散散的,理解的可能也有误……只记录一部分东西
想要查看本地端口的情况,在cmd下使用
netstat -an
查看端口情况。会出现长长的一串东西,一部分是TCP,一部分是UDP,但里面的东西大概可以分成几种,下面慢慢分析。
包括四个字段:协议、内部地址、外部地址、状态
1、状态
先要理解状态,参考:https://www.cnblogs.com/qianzf/p/7064827.html
这里说几个我自己关注的状态,比较浅显的含义。
LISTENING:是指开放着的,等待连接的。
ESTABLISHED:这是正在连接
CLOSE_WAIT、TIME_WAIT、SYN_SENT:这些是三次握手四次挥手过程中的某些状态,还有一个断网时出现的状态没有去记
2、外部地址是0.0.0.0的TCP连接
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING TCP 0.0.0.0:5040 0.0.0.0:0 LISTENING TCP 0.0.0.0:49664 0.0.0.0:0 LISTENING TCP 0.0.0.0:49665 0.0.0.0:0 LISTENING TCP 0.0.0.0:49666 0.0.0.0:0 LISTENING TCP 0.0.0.0:49667 0.0.0.0:0 LISTENING TCP 0.0.0.0:49668 0.0.0.0:0 LISTENING TCP 0.0.0.0:49671 0.0.0.0:0 LISTENING TCP 10.18.16.169:139 0.0.0.0:0 LISTENING
TCP 127.0.0.1:4300 0.0.0.0:0 LISTENING TCP 127.0.0.1:4301 0.0.0.0:0 LISTENING TCP 127.0.0.1:10000 0.0.0.0:0 LISTENING TCP 127.0.0.1:10001 0.0.0.0:0 LISTENING TCP 127.0.0.1:49685 0.0.0.0:0 LISTENING TCP 127.0.0.1:54530 0.0.0.0:0 LISTENING
这些是对外开放的端口,0.0.0.0可以表示任何地址。
而上面这些开放端口也包括三种:
- 0.0.0.0:端口号
- 127.0.0.1:端口号
- 主机ip:端口号
它们的区别是0.0.0.0和主机ip后面跟的端口号是对外部网络开放的,是可以通过服务域名、ip可以访问的端口,而127.0.0.1的端口则是只供本机访问的端口。
3、远程地址是127.0.0.1:其他端口号的TCP协议
TCP 127.0.0.1:60866 127.0.0.1:54530 ESTABLISHED TCP 127.0.0.1:60867 127.0.0.1:60868 ESTABLISHED TCP 127.0.0.1:60868 127.0.0.1:60867 ESTABLISHED
可以看到这些端口一搬处于正在连接的状态,我不太清楚这些的含义,但是看另一篇文章https://blog.csdn.net/fearGod/article/details/84051851
提到了一点点,或许是代理?是由某些应用引起的,比如说看第一条,我打算访问127.0.0.1:54530的时候就会访问到127.0.0.1:60866这样子吧。
4、[::]:0和 *:*
它们相当于[0.0.0.0]:0,相当于任意地址
5、正常的对外的端口
TCP 10.18.16.169:60966 123.125.132.35:443 ESTABLISHED TCP 10.18.16.169:60971 202.106.5.21:443 ESTABLISHED TCP 10.18.16.169:60975 61.135.169.121:443 ESTABLISHED TCP 10.18.16.169:60982 216.58.200.46:443 SYN_SENT TCP 10.18.16.169:60983 216.58.200.46:443 SYN_SENT TCP 10.18.16.169:60984 112.80.255.252:443 ESTABLISHED TCP 10.18.16.169:60985 123.125.132.31:443 ESTABLISHED TCP 10.18.16.169:60986 202.89.233.100:443 ESTABLISHED TCP 10.18.16.169:60987 13.107.18.11:443 ESTABLISHED TCP 10.18.16.169:60988 10.236.9.147:80 ESTABLISHED TCP 10.18.16.169:60989 216.58.200.46:443 SYN_SENT TCP 10.18.16.169:60990 131.253.33.254:443 ESTABLISHED TCP 10.18.16.169:60991 13.107.18.254:443 ESTABLISHED TCP 10.18.16.169:60992 13.107.3.254:443 SYN_SENT
一般内部地址是主机ip,处于连接或者握手挥手阶段。如上80端口是为超文本传输协议(HTTP)开放的端口,443是网页浏览端口,主要用于https。
突然断开网络连接就变成下面这个样子了(使用netstat -a查看的结果)
TCP 10.18.16.169:61763 61.135.169.121:https FIN_WAIT_1 TCP 10.18.16.169:61764 39.96.126.153:https FIN_WAIT_1 TCP 10.18.16.169:61766 61.240.129.191:https FIN_WAIT_1 TCP 10.18.16.169:61767 111.206.4.103:https FIN_WAIT_1 TCP 10.18.16.169:61769 119.167.170.226:https FIN_WAIT_1 TCP 10.18.16.169:61770 123.125.132.35:https FIN_WAIT_1