端口号
端口号(Port)是传输层用来区分同一台主机上不同网络服务的编号。IP 地址负责把数据送到正确的机器,而端口号负责把数据交给这台机器上正确的程序。二者组合成「IP:端口」(例如 127.0.0.1:8080),才能唯一定位一个通信端点。端口号是一个 16 位无符号整数,取值范围为 0 到 65535,共 65536 个。
按用途端口通常分为三段:
- 知名端口(0–1023):分配给常见服务,如
80(HTTP)、443(HTTPS)、22(SSH)、53(DNS)。在多数系统上,监听这些端口需要管理员/root 权限。 - 注册端口(1024–49151):供具体应用登记使用,如
3306(MySQL)、6379(Redis)、8080(常见备用 HTTP)。 - 动态/临时端口(49152–65535):客户端发起连接时由系统临时分配的源端口。
常见误区:端口号与协议并非硬绑定,80 只是 HTTP 的约定,你完全可以让 HTTP 服务跑在 8000 上。此外 TCP 与 UDP 的端口是两套独立的命名空间,TCP 的 53 和 UDP 的 53 互不冲突,可同时被占用。排查「端口被占用」时,务必同时确认协议类型和监听地址。
常见问题
端口号的取值范围是多少?
端口号是 16 位无符号整数,范围是 0 到 65535,共 65536 个。其中 0 通常保留不用于实际监听。
端口号和 IP 地址有什么区别?
IP 地址标识网络中的某台主机,负责把数据送到正确的机器;端口号则标识这台主机上的某个具体服务或进程。二者组合(IP:端口)才能唯一确定一个通信端点。
为什么有的端口需要管理员权限才能监听?
在 Linux/Unix 等系统上,0–1023 的知名端口被视为特权端口,监听它们需要 root 或相应权限,目的是防止普通程序冒充系统级服务(如 HTTP、SSH)。1024 以上的端口普通用户即可使用。