tcp/ip 中的多路复用

要理解网络中的多路复用,以及它在 TCP/IP 协议栈中的位置,我们可以从概念定义、核心逻辑,再到分层应用逐步拆解。

当然,应用层 L7 http 层也是有的:比如多个 DNS 可以复用同一个端口

一、什么是 "多路复用"(Multiplexing)?

多路复用 是指:在一条共享的传输介质 (如网线、光纤、无线信道)上,同时传输多个独立的数据流 (或信号)的技术。其核心目的是提高传输资源的利用率------ 避免一条物理链路仅为一个应用 / 设备服务,从而降低成本、提升效率。

与多路复用对应的是多路分解(Demultiplexing):接收端根据数据流的 "唯一标识",将混合传输的数据流拆分并交付给对应的应用 / 设备。两者是同一过程的 "发送端 - 接收端" 对应操作,通常合称为 "复用 / 分解"。

二、核心逻辑:用 "唯一标识" 区分数据流

多路复用的关键是给每个数据流分配一个唯一标识(类似 "快递单号")。发送端给每个数据包打上标识,接收端通过标识 "分拣",确保数据不会 "送错门"。

三、TCP/IP 协议栈中,多路复用在哪些层次使用?

TCP/IP 协议栈自上而下分为应用层、传输层、网络层、数据链路层、物理层 。多路复用并非某一层的专属技术,而是贯穿多个层次的核心逻辑 ------ 只是不同层次的 "唯一标识" 和服务对象不同。其中,传输层的多路复用最具代表性,直接服务于端到端的应用程序。

下表清晰梳理了各层的多路复用逻辑:

协议层 复用的 "唯一标识" 服务对象(区分什么) 典型场景举例
传输层 TCP/UDP 端口号(Port) 同一主机上的不同应用程序 浏览器(80/443 端口)、微信(随机端口)、FTP(21 端口)的数据流共用同一 IP 链路
网络层 IP 地址(IPv4/IPv6) 不同的主机 / 网络设备 电脑(192.168.1.100)和手机(192.168.1.101)的数据包共用同一家庭路由器链路
数据链路层 MAC 地址(物理地址) 同一局域网内的不同设备 办公室内的电脑、打印机、交换机的帧(Frame)共用同一网线传输
物理层 频率 / 时间 / 波长(如 FDM/TDM) 不同的电信号 / 光信号 有线电视网用不同频率传输多个频道,光纤用不同波长传输多路光信号

四、重点:传输层的多路复用(最关键、最典型)

传输层的多路复用是 TCP/IP 协议中端到端通信的核心,直接解决了 "同一主机上多个应用如何共享网络连接" 的问题。

具体逻辑:

  1. 发送端(复用)

电脑上同时运行的浏览器、微信、QQ 等应用,都会产生数据需要发送。操作系统的传输层(TCP 或 UDP 模块)会给每个应用分配一个端口号(如 HTTP 默认 80,HTTPS 默认 443,微信用随机动态端口),然后将应用数据封装成 "TCP 段" 或 "UDP 报",并打上对应的端口号标识。最终,所有应用的 TCP/UDP 数据包会共用同一 IP 协议栈和物理链路发送。

  1. 接收端(分解)

接收端的传输层收到数据包后,会解析 TCP/UDP 头部中的目标端口号,然后根据端口号将数据交付给对应的应用程序(比如端口 443 的数据交给浏览器,动态端口的数据交给微信)。

总结

  • 多路复用的本质:用 "唯一标识" 给数据流 "打标签",实现共享链路的高效利用。
  • TCP/IP 中的核心层次传输层(通过端口号区分应用)是最典型的多路复用场景,直接支撑了多应用同时联网;网络层(IP 地址区分主机)、数据链路层(MAC 地址区分局域网设备)也会用到复用逻辑,但服务对象更偏向 "设备" 而非 "应用"。
相关推荐
开心就好202510 小时前
免 Xcode 的 iOS 开发新选择?聊聊一款更轻量的 iOS 开发 IDE kxapp 快蝎
后端·ios
Java编程爱好者10 小时前
为什么国内大厂纷纷”弃坑”MySQL,转投PostgreSQL阵营?
后端
神奇小汤圆11 小时前
金三银四Java面试题及答案汇总(2026持续更新)
后端
颜酱11 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
神奇小汤圆11 小时前
加了 limit 1,查询竟然变慢了?
后端
Java水解11 小时前
SpringBoot3全栈开发实战:从入门到精通的完整指南
spring boot·后端
Java水解11 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
千寻girling11 小时前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python
南风99911 小时前
Claude code安装使用保姆级教程
后端
爱泡脚的鸡腿11 小时前
Node.js 拓展
前端·后端