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 地址区分局域网设备)也会用到复用逻辑,但服务对象更偏向 "设备" 而非 "应用"。
相关推荐
H5css�海秀4 小时前
今天是自学大模型的第一天(sanjose)
后端·python·node.js·php
SuniaWang4 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
韩立学长4 小时前
Springboot校园跑腿业务系统0b7amk02(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
sheji34165 小时前
【开题答辩全过程】以 基于springboot的扶贫系统为例,包含答辩的问题和答案
java·spring boot·后端
代码栈上的思考6 小时前
消息队列:内存与磁盘数据中心设计与实现
后端·spring
程序员小假6 小时前
我们来说一下 b+ 树与 b 树的区别
java·后端
Meepo_haha7 小时前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
sheji34167 小时前
【开题答辩全过程】以 基于springboot的房屋租赁系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
Victor3568 小时前
MongoDB(57)如何优化MongoDB的查询性能?
后端
Victor3568 小时前
MongoDB(58)如何使用索引优化查询?
后端