3306端口是什么协议_防黑必备技能之端口篇

本文介绍了如何在Windows和Linux平台上查看端口占用情况,特别是3306端口。通过`netstat`命令和`lsof`命令,可以查看TCP和UDP端口的状态,例如LISTENING、SYN_SENT等,并理解不同状态的含义。此外,还提到了使用TELNET命令来测试远程端口是否开放。
摘要由CSDN通过智能技术生成

如何查看端口占用情况

我们分windows和linux两种不同的平台分别介绍。

一、windows平台

在windows平台下,查看端口占用情况,最常见的DOS命令就是NETSTAT命令。

打开运行-->输入“CMD”回车。(如何打开运行,就不用我多说了吧,在开始菜单点右键,选择菜单中的“运行”)

fe2056a6e53ffc666658d95cf05cd088.png

我们可以先查看一下netstat命令的用法:

在提示符下输入 :netstat /?

d8c7fc7d544dc573151e17714047a0e9.png

上面显示的各个参数的含义和用法,查看端口情况,最常用的参数是-a,-n和-o。如果不使用任何参数,则只显示当前活动的连接(TCP连接)

我们先以-a为例来看一下执行后的效果(截图为部分内容),-a表示显示所有连接和侦听端口(包括TCP和UDP):

2d631f2414e3d78295c592082e08d082.png
a438e121ed8d6aa0cd1b665bef30166c.png
0936ba574c1dd0880d066bf7ec6218e6.png

下面我们简单介绍一下这个命令的输出结果:

输入netstat -a的命令后,输出结果为四列,显示的当前所有连接和侦听的端口信息。

第一列为协议,主要是TCP的端口占用情况和UDP的端口占用情况。

第二列为本地地址和端口。

第三列为外部地址和端口。

然后解释几个大家可能看不明白的地方。

首先大家可能好奇activate和0.0.0.0是什么鬼?

这里解释一下:

1、0.0.0.0代表本机上可用的任意地址。 比如0.0.0.0:135 表示本机上所有地址的135端口,这样多ip计算机就不用重复显示了。

2、TCP 0.0.0.0:80表示在所有的可用接口上监听TCP80端口

3、0.0.0.0为默认路由,即要到达不再路由表里面的网段的包都走0.0.0.0这条规则

在本地地址显示为0.0.0.0,如果使用-a参数,外部地址显示为activate,如果使用-an参数,则外部地址也显示为0.0.0.0

然后127.0.0.1就是表示你本机ip地址的意思了。

可能有同学会问,activate是什么意思?其实activate和0.0.0.0是一样的,就像127.0.0.1,外部地址显示为guyanbing(我的机器名),http,就表示80端口,https:就表示443端口。如果加上-n参数,则会显示为127.0.0.1,80和443。因为-n参数的意思就是以数字的形式显示IP和端口号。这也是-a和-an两个参数的区别。

-an参数 -a参数

0.0.0.0 activate

127.0.0.1 guyanbing(机器名)

443 https

80 http

ed51d3c48ab5392e20b4da5edafe2e61.png

这里的命令为什么要用-an,而不是-n呢?因为如果不加-a这个参数,那么只会显示当前已经建立连接的端口情况,而不会显示所有的端口情况,处于监听状态(LISTENING) 的端口是显示不出来的。

c51699d626a19a59d7675af069882136.png

192.168.0.101就是表示当前网卡上的IP地址,这个大家都明白。

然后[::]、[::1]和[fe80::7c54:4a4c:9eb1:40e8%20]又是什么鬼呢?

其实这个是指本机的IPV6址。你可以使用ipconfig /all命令查看本机的IPV6地址信息,如下图:

b5300bbdfba424098f1f6728807b7cbe.png

以笔者本机为例,对应关系如下:

IPV4 IPV6

0.0.0.0 [::]

127.0.0.1 [::1]

192.168.0.101 [fe80::7c54:4a4c:9eb1:40e8%20]

在HOSTS文件(位于C:WindowsSystem32driversetc目录下)中可以查看。

df352c8dab2bf69610932ea64308ea73.png

可能有同学问了,*:* 是什么意思?为什么所有UDP协议的外部连接都是*:*呢?

大家都知道,在计算机中,*是一个通配符,可以表示任意字符,所以这里的*:*就表示任意地址和任意端口。

那为啥只有UDP协议中是*:*呢?

这是因为TCP协议和UDP协议是不一样的,TCP协议是一个握手协议,必须要跟远端的一个地址和端口建立建立连接,所以一定是一个确定的地址和端口。就像打电话,必须要有确定的远端的电话号码才可以通话。

而UDP是一个广播协议,不需要跟远端建立连接,所以并没有确定的地址和端口。

关于TCP和UDP的区别,我会在之后的文章可详细介绍,不是本文和重点。

第四列是状态,显示当前端口处于什么状态

大家可以看到,这里的状态只是指的TCP连接的状态,因为对于UDP协议而言,是不需要状态的。在状态部分有不同的单词,分别表示什么意思呢?我们分别介绍一下:

LISTENING:(Listening for a connection.)侦听来自远方的TCP端口的连接请求

SYN-SENT:(Active; sent SYN. Waiting for a matching connection request after having sent a connection request.)再发送连接请求后等待匹配的连接请求

SYN-RECEIVED:(Sent and received SYN. Waiting for a confirming connection request acknowledgment after having both received and sent connection requests.)再收到和发送一个连接请求后等待对方对连接请求的确认

ESTABLISHED:(Connection established.)代表一个打开的连接

FIN-WAIT-1:(Closed; sent FIN.)等待远程TCP连接中断请求,或先前的连接中断请求的确认

FIN-WAIT-2:(Closed; FIN is acknowledged; awaiting FIN.)从远程TCP等待连接中断请求

CLOSE-WAIT:(Received FIN; waiting to receive CLOSE.)等待从本地用户发来的连接中断请求

CLOSING:(Closed; exchanged FIN; waiting for FIN.)等待远程TCP对连接中断的确认

LAST-ACK:(Received FIN and CLOSE; waiting for FIN ACK.)等待原来的发向远程TCP的连接中断请求的确认

TIME-WAIT:(In 2 MSL (twice the maximum segment length) quiet wait after close. )等待足够的时间以确保远程TCP接收到连接中断请求的确认

CLOSED:(Connection is closed.)没有任何连接状态

关于netstat命令的具体使用,我们在之后发布的《防黑必备技能之端口篇(3)》中会有更详细的介绍,敬请关注。

另外这些状态跟TCP/IP协议密切相关,大家如果想要了解这些状态的具体含义,最好还是先了解一下TCP/IP协议,这不是本节的重点,所以不做具体介绍,之后应该会有相关的文章专门去讲这方面的知识。

二、LINUX平台

在LINUX平台下,我们有三种方式确定某一端口的占用情况:

1、使用LSOF命令。

注意,为了显示更多内容,最好使用ROOT帐号登录。比如要查看80端口的使用情况,应在命令行窗口输入lsof -i:80,如果没有显示内容,则表示该端口未开放,如果开放,则会显示相应信息,如下图:

2be54555fe5af67f17ec0650680b59b7.png

2、使用netstat命令

netstat命令各个参数说明如下:

-t : 指明显示TCP端口

-u : 指明显示UDP端口

-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)

-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。

-n : 不进行DNS轮询,显示IP(可以加速操作) 即可显示当前服务器上所有端口及进程服务,于grep结合可查看某个具体端口及服务情况

netstat -ntlp //查看当前所有tcp端口·

netstat -ntulp |grep 80 //查看所有80端口使用情况·

netstat -an | grep 3306 //查看所有3306端口使用情况·

如图:查看所有端口的连接情况:netstat -aptn

5a804838b1d75fc2b3a1df2dd1fb81e0.png

查看所有的UDP连接:netstat -nupl

d223b8b76de2ccbd006c0f0d2d5411e8.png

查看所有的TCP连接:netstat -ntpl

4e217255c505376ff0675b59abd7cdde.png

注:LINUX平台内容和图片来自互联网,如有侵权请私信告之。

除了上面讲到的在WINDOWS和linux平台下查看端口占用情况的方法之外,还有一个命令也可以查看端口打开情况,那就是TELNET命令。

这个命令主要是测试远程电脑指定的端口是否打开,使用格式如下:

telnet ip 端口 (如果不写端口,默认连接23号端口)

例:

测试本机23端口:telnet 127.0.0.1 23 或者telnet 127.0.0.1

测试指定电脑的80端口:telnet 10.0.0.27 80

不过这个命令并不是windows的内部命令,需要安装该服务才可以使用该命令,TELNET服务端和客户端,在WIN7WIN8win10中都默认没有安装该客户端功能。所以如果在命令行下直接执行该命令,会提示不是内部或外部命令。这是你需要安装该服务才可以。

6db40ae92c05c9c90d03084b846e9cc0.png
006daac9404206db4bcd77fcb86e3f52.png
e07b19c35f916a406f3d398517f8ef1e.png

而服务器端也需要安装telnet服务才可以访问,绝大多数的服务器都关闭了TELNET服务和23端口,所以这个在实际应用中用的并不是太多。大家了解一下就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值