公众号旧文

什么是端口?为什么端口是 65535 个?

作者:胖子阅读 —

如果把一台服务器想象成一栋大楼,那么 IP 地址就是大楼的地址,而端口就是大楼里的房间号。

互联网中的数据包,必须同时知道两个信息才能准确送达:

  • IP 地址:找到哪一台机器
  • 端口号:找到机器里的哪个程序

这就是端口存在的意义。

一、为什么需要端口?

一台服务器上,通常会同时运行很多服务,比如:

  • Web 网站
  • SSH 远程登录
  • 数据库
  • 邮件服务

如果只有 IP 地址,网络数据就只能送到这台服务器,但不知道该交给哪个程序处理。

端口就解决了这个问题。

例如:

服务 默认端口
HTTP 网站 80
HTTPS 网站 443
SSH 远程登录 22
MySQL 数据库 3306

当浏览器访问一个网站时,实际上发送的是:

服务器IP:端口
例如:1.2.3.4:443
意思就是:把数据发送到 1.2.3.4 这台服务器的 443 号端口。

服务器收到之后,就会把数据交给正在监听这个端口的程序。

二、端口本质是什么?

很多人以为端口是服务器上的真实接口,其实并不是。

端口只是操作系统中的一个编号。

在操作系统的网络协议栈中,每个网络连接都会绑定一个端口号,用来区分不同的通信。

换句话说:

端口是 TCP/IP 协议里的一种编号机制,用来区分不同网络服务。

三、为什么端口是 65535 个?

端口数量之所以是 65535,原因其实很简单:

端口号在协议中是用 16 位(二进制)表示的。

16 位二进制能表示的最大数字是:2^16 = 65536

端口号范围是:0 - 65535``

一共 65536 个编号。

不过实际使用中 0 端口基本不用,因此常说 65535 个可用端口。

四、端口其实分三类

互联网规范把端口分成三种类型。

1、知名端口(Well-known Ports)

范围:0 - 1023``

这些端口是官方保留的标准服务端口。

例如:

端口 服务
22 SSH
25 SMTP
53 DNS
80 HTTP
443 HTTPS

通常只有系统管理员(root)才能绑定这些端口。

2、注册端口(Registered Ports)

范围:1024 - 49151``

这些端口可以被软件注册使用,比如:

端口 服务
3306 MySQL
3389 RDP
5432 PostgreSQL

很多应用程序会默认使用这里的端口。

3、动态端口(Ephemeral Ports)

范围:49152 - 65535``

这些端口一般是 临时端口。

例如:

当你的电脑访问一个网站时:

你的电脑:52341  →  网站服务器:443
52341 就是系统随机分配的一个临时端口。

当连接结束,这个端口就会释放。

五、一台服务器能用多少端口?

理论上 65535 个端口,但实际上有几个限制:

1️⃣ 一个端口只能被一个程序监听 2️⃣ 不同 IP 可以重复使用同一个端口 3️⃣ TCP 和 UDP 端口是分开的

例如:

1.2.3.4:80 (TCP)
1.2.3.4:80 (UDP)
这是两个不同的端口。

六、一个网站为什么只需要 80 或 443?

很多人会疑惑:

如果端口这么多,为什么网站只用 80 或 443?

原因是:

浏览器访问网站时,默认就是这两个端口。

http
:
//example.com → 80
https
:
//example.com → 443
如果用别的端口,就必须写出来:
http
:
//example.com:8080
因此,大多数网站都会使用默认端口。

七、端口其实就是互联网的分流器

总结一下:

IP 地址负责找到服务器,端口负责找到服务器里的程序。

就像这样:

IP = 大楼地址
端口 = 房间号
程序 = 房间里的人
当互联网的数据到达服务器时:
服务器IP → 找到机器
端口号 → 找到程序
程序 → 处理请求

整个互联网就是依靠这种简单的编号机制,把数以亿计的连接区分开来。