Skip to content

传输层与端口·复用分用

基于 HTTP 现代标准 · 核于 2026-06

速查

  • 传输层职责:在进程与进程之间提供逻辑通信通道。网络层(IP)只负责把数据包从一台主机送到另一台主机;传输层在这之上,进一步把数据交给主机里正确的那个应用进程
  • 凭什么找到进程:靠端口号(port number)。IP 定位「哪台机器」,端口定位「机器上的哪个服务/进程」——两者配合才能精确投递。
  • 端口是 16 位整数:取值 0 ~ 65535(共 65536 个)。它不是物理接口,而是操作系统内的一个逻辑编号
  • 三段端口范围(IANA)知名端口 0~1023(系统/特权端口)、注册端口 1024~49151动态/私有端口 49152~65535(客户端临时用)。
  • 常见知名端口:HTTP 80、HTTPS 443、DNS 53、SSH 22、SMTP 25、FTP 20/21 ——服务端在固定端口「守株待兔」,客户端才知道往哪连。
  • 复用(multiplexing):发送方多个应用进程共享下层网络,传输层给每段数据贴上「源端口」标签后统一交给 IP 发出。
  • 分用(demultiplexing):接收方传输层按数据里的目的端口,把每段数据分发给对应的进程——这正是端口存在的意义。
  • 套接字 socket:通信端点的唯一标识 = IP 地址 + 端口号(再加协议)。一对 socket(源 + 目的)唯一确定一条连接。
  • TCP 与 UDP 各有独立端口空间:TCP 的 80 与 UDP 的 80 是两个互不相干的端口;它们由协议号区分。
  • 传输层两大协议TCP(面向连接、可靠、有序)与 UDP(无连接、尽力而为、开销小)——本页只做概览,细节见后续各页。
  • 边界:本页讲「传输层定位 / 端口 / 复用分用 / socket / 两协议概览」;UDP 细节UDP 协议与适用场景TCP 握手见后续页。

传输层的职责:从「主机到主机」到「进程到进程」

要理解端口,先得分清网络层传输层各管什么——这是初学者最容易混的一层。

  • 网络层(IP)做的事:把一个数据包从源主机送到目的主机。IP 地址回答的是「数据要去哪台机器」。但一台机器上同时跑着浏览器、邮件客户端、IM、后台服务……IP 并不知道这个包到了之后该交给
  • 传输层做的事:在 IP 的「主机到主机」之上,再补一层「进程到进程」的逻辑通信。它让两台主机上的两个应用进程感觉像是直接连着的,至于底下数据如何被拆包、路由、转发,应用程序无需关心。

用 Cloudflare 的说法:IP 是网络层(第 3 层)协议,负责路由(指明数据包从哪来、到哪去);TCP 是传输层(第 4 层)协议,负责让数据包跨网络的运输平稳进行。两者常被合称 TCP/IP

一句话类比

IP 地址像「写到某栋写字楼的地址」,把信送到了大楼门口;端口号像「房间号」,决定这封信最终进入哪一间办公室。没有房间号,信只能堆在大堂——这正是只有 IP、没有端口时的窘境。

端口号:16 位的逻辑编号

端口(port)是计算机网络中的通信端点,用一个数字标识主机上的某个进程或网络服务。它是操作系统维护的一个逻辑概念,并非网线插孔之类的物理接口。

  • 位宽与范围:端口号是 16 位无符号整数,因此取值范围是 0 ~ 65535(即 2¹⁶ 共 65536 个)。
  • 谁在用端口服务端在某个固定端口上监听等待请求(如 HTTP 服务守在 80);客户端发起连接时,操作系统会临时分配一个源端口给它。

端口的三段分类(IANA)

互联网号码分配机构 IANA 把整个端口空间划分为三段,各有用途:

范围名称用途谁来用
0 ~ 1023知名端口 / 系统端口(Well-Known / System Ports)分配给历史上最常用、最核心的标准服务绑定通常需特权(如 root/管理员),多为服务端固定监听
1024 ~ 49151注册端口(Registered Ports)供具体应用向 IANA 登记使用,无需特权即可绑定各类应用程序、第三方服务(如 MySQL 3306)
49152 ~ 65535动态 / 私有 / 临时端口(Dynamic / Private / Ephemeral Ports)不固定登记,供短期连接临时分配客户端发起连接时由系统自动取用,用完即回收

为什么客户端端口是「临时」的

你打开浏览器访问网站,目的端口是固定的 443,但源端口是系统从临时区间随手分配的一个号(如 52133)。请求结束就释放,下次连接可能换一个。所以同一台机器同时开多个标签页访问同一网站不会冲突——它们的源端口各不相同,由此区分开。

常见知名端口速记

下面这些是前端、运维日常最常照面的端口,值得记牢:

端口协议 / 服务传输层说明
20 / 21FTPTCP文件传输(20 传数据、21 传控制命令)
22SSHTCP安全远程登录 / SCP / SFTP
25SMTPTCP邮件发送
53DNSUDP / TCP域名解析(默认 UDP,大响应或区域传送走 TCP)
80HTTPTCP明文 Web
110POP3TCP邮件收取
143IMAPTCP邮件收取(保留在服务器)
443HTTPSTCP(HTTP/1.1·2)/ UDP(HTTP/3 over QUIC)加密 Web
3306MySQLTCP数据库(注册端口区间的常见例子)

记忆要点:80/443 是 Web 双子星53 是 DNS22 是 SSH。URL 里不写端口时,浏览器会按协议默认补全——http:// 默认 80、https:// 默认 443,所以 https://example.com 等价于 https://example.com:443

复用与分用:端口存在的根本原因

传输层之所以需要端口,核心就是为了支撑**复用(multiplexing)分用(demultiplexing)**这一对操作。

  • 复用(发送方):一台主机上多个应用进程都想发数据,它们共享同一条下层网络通道。传输层把每个进程的数据封装成段,并打上源端口标签,再统一交给网络层(IP)发出去。多路数据「汇流」到一条网络上,即为复用。
  • 分用(接收方):数据到达对端主机后,传输层读取每个数据段里的目的端口,据此把数据分发投递给对应的应用进程。多路数据在接收端按端口「分流」回各自进程,即为分用。
text
        发送方主机                              接收方主机
   ┌──────────────────┐                    ┌──────────────────┐
   │ 浏览器  邮件  IM   │  各进程数据         │  浏览器  邮件  IM  │
   │   │     │    │    │                    │   ↑     ↑    ↑    │
   │   └──┬──┴──┬─┘    │                    │   └──┬──┴──┬─┘    │
   │   [打源端口标签]    │                    │  [按目的端口分发]   │
   │      复用 ↓        │                    │      分用 ↑       │
   │   传输层(TCP/UDP)  │                    │   传输层(TCP/UDP) │
   │       ↓           │                    │       ↑          │
   │     网络层 IP ─────┼──── 一条网络通道 ────┼──── 网络层 IP     │
   └──────────────────┘                    └──────────────────┘

正是因为有了端口与分用机制,操作系统才能把混在同一条网络上的字节流,准确地还给该收它的那个进程——浏览器收到的永远是 Web 响应,邮件客户端收到的永远是邮件数据,互不串台。

复用 ≠ HTTP/2 的多路复用

此处的「复用/分用」是传输层层面的通用概念(多个进程共享网络)。它与 HTTP/2 里常说的「多路复用(multiplexing)」不是一回事——后者指单条 TCP 连接上并发多个请求流,属于应用层优化。同名不同层,注意区分。

套接字 socket:通信端点的唯一标识

要在网络中精确定位一个通信端点,光有端口还不够——得把它和 IP 绑在一起。这个「IP 地址 + 端口号」的组合,就是套接字(socket)

  • socket 唯一标识一个端点:例如 203.0.113.5:443 表示「IP 为 203.0.113.5 的主机上、监听在 443 端口的那个服务」。再算上传输协议(TCP/UDP),就完整确定了「在哪台机、哪个端口、用什么协议」通信。
  • 一对 socket 唯一确定一条连接:一条 TCP 连接由四元组唯一标识——(源 IP, 源端口, 目的 IP, 目的端口)。只要四元组中任一项不同,就是不同的连接。这解释了为什么服务端单个 443 端口能同时服务成千上万客户端:每个客户端的 (源 IP, 源端口) 各不相同,四元组就各不相同。

端口与 socket 的关系

端口是一个数字(如 443);socket 是「IP + 端口」绑定后形成的、操作系统可读写的通信端点对象。应用程序通过 socket 这个抽象来收发数据,而不直接操作端口数字。可以理解为:端口是「房间号」,socket 是「连上这个房间的那条专线」。

传输层两大协议:TCP 与 UDP(概览)

传输层主要由两个协议挑大梁,它们都用端口做复用/分用,但「性格」截然不同:

维度TCP(传输控制协议)UDP(用户数据报协议)
连接面向连接:通信前先握手建立连接无连接:直接发,不握手
可靠性可靠:保证不丢、不重、按发送顺序到达尽力而为:可能丢包、乱序,不补发
顺序保证按序交付不保证顺序
开销 / 速度控制机制多,开销较大、相对慢头部小、机制少,开销小、更快
典型场景Web(HTTP)、邮件、文件传输DNS、音视频流、实时游戏、QUIC
  • TCP:Vint Cerf 与 Bob Kahn 于 1970 年代设计,通过握手建立连接,保证数据按发送顺序、可靠地送达,并内置拥塞控制(从「慢启动」小流量起步、逐步增大)。它与 IP 配合无间,常合称 TCP/IP。
  • UDP:TCP 在传输层的「轻量替代品」——更快但不保证可靠,常用于视频流、在线游戏等「快比稳更重要」的场景。

本页只做「两协议是什么、有何差异」的鸟瞰;TCP 如何握手、如何保证可靠、如何做流量与拥塞控制,以及 UDP 为什么快、适合哪些场景,都留给本叶后续各页逐一讲透。

小结

  • 传输层补齐「进程到进程」:网络层(IP)只把数据送到主机,传输层靠端口进一步送到主机上正确的进程——IP 定位机器、端口定位服务。
  • 端口是 16 位(0~65535)的逻辑编号,分三段:知名端口 0~1023(核心服务、需特权)、注册端口 1024~49151动态端口 49152~65535(客户端临时用);记牢 80/443/53/22 等常见号。
  • 复用 / 分用是端口的根本用途:发送方多进程共享网络(打源端口标签即复用),接收方按目的端口分发给各进程(即分用)——同名的 HTTP/2「多路复用」属应用层,勿混。
  • socket = IP + 端口,是通信端点的唯一标识;一条连接由 (源 IP, 源端口, 目的 IP, 目的端口) 四元组唯一确定,这是单端口服务海量客户端的原理。
  • 传输层两大协议:TCP(面向连接、可靠、有序)与 UDP(无连接、尽力、轻快),且二者端口空间互相独立

铺好了传输层与端口这层地基,接下来先看那个「无连接、轻快」的协议——继续阅读 UDP 协议与适用场景