当前位置: 首页 > news >正文

UDP-复用分用

核心思想:多路复用与多路分用

想象一下,一栋大楼(主机)里有很多个房间(应用程序/进程),每个房间都有一个唯一的门牌号(端口号)。邮递员(传输层)负责接收和发送信件(数据报)。

  • 复用:大楼里不同房间的人要把信寄出去,他们都把信交给同一个邮递员。邮递员收集所有信件,统一从大楼的出口寄出。

  • 分用:邮递员从外面收到一大堆信件,他查看每个信封上写的目标房间号,然后准确地将信件投递到对应的房间里。

这就是复用和分用的直观比喻。


1. UDP 分用

定义:当主机接收到一个UDP数据报时,传输层(这里是UDP)根据数据报头部的目的端口号,将数据正确地交付给指定套接字(Socket),进而传递给对应应用程序的过程。

过程详解

  1. 主机从网络层接收到一个IP数据报,其载荷是一个UDP数据报。

  2. 操作系统(传输层)会解析UDP数据报的头部,提取出目的端口号字段。

  3. 系统会检查当前是否有应用程序创建了套接字并绑定(Bind)到了这个目的端口号。

  4. 如果找到:系统将UDP数据报的应用数据部分(即报文载荷)放入该套接字的接收缓冲区,等待应用程序来读取。

  5. 如果没找到:系统通常会丢弃这个数据报,并可能(取决于系统配置)向发送方回复一个“端口不可达”的ICMP错误消息。

关键点

  • 分用的依据是目的端口号

  • UDP套接字是由一个二元组全面标识的:(目的IP地址,目的端口号)。这意味着,对于UDP来说,只要目的IP和目的端口相同,无论数据来自哪个源IP或源端口,都会被交付到同一个套接字。这与TCP的四元组标识不同。

分用示例
假设你的主机(IP: 192.168.1.100)正在运行:

  • 一个DNS客户端(使用端口号 53

  • 一个视频播放器(正在从网络接收视频流)

当一个UDP数据报到达你的主机,其头部信息为:

  • 目的端口:5353
    系统检查后发现端口 5353 被DNS客户端进程绑定,于是将数据交给DNS客户端处理。

当另一个UDP数据报到达,其头部信息为:

  • 目的端口:60000
    系统检查后发现端口 60000 被视频播放器进程绑定,于是将数据交给视频播放器。

这个过程就是分用——将来自网络的数据流正确地分发给不同的应用程序。


2. UDP 复用

定义:当主机上的多个应用程序需要发送UDP数据时,它们都将数据交给传输层(UDP)。UDP为每个数据包封装上头部信息(主要是源端口号和目的端口号),然后交给网络层,由同一个IP协议发送出去的过程。

过程详解

  1. 应用程序(如浏览器、游戏客户端)通过系统调用(如 sendto)将数据和目标地址(IP和端口)传递给UDP。

  2. UDP会为每个数据块创建一个UDP数据报。

    • 在数据报头部填入应用程序指定的目的端口号

    • 填入数据来源的源端口号(这个端口号通常是应用程序绑定的端口,如果没绑定,则由系统自动分配一个)。

    • 计算校验和等其他字段。

  3. 将这个封装好的UDP数据报交给网络层(IP层)。

  4. IP层会进一步封装成IP数据报,并通过底层的网络接口发送出去。

关键点

  • 复用的体现是多个应用进程使用同一个传输层协议(UDP)和同一个IP协议发送数据

  • 源端口号非常重要,它告诉接收方“谁发送的”,以便接收方能够回复消息。

复用示例
你的主机(IP: 192.168.1.100)上同时运行着:

  • 一个浏览器(系统为其分配了源端口 54321),正在向DNS服务器(IP: 8.8.8.8, 端口 53)发送查询。

  • 一个在线游戏(绑定了源端口 7777),正在向游戏服务器(IP: 1.2.3.4, 端口 8888)发送位置数据。

浏览器进程和游戏进程都会调用UDP。UDP会为它们分别创建数据报:

  • 数据报A(来自浏览器)

    • 源端口:54321

    • 目的端口:53

    • 数据:DNS查询内容

  • 数据报B(来自游戏)

    • 源端口:7777

    • 目的端口:8888

    • 数据:游戏位置数据

然后,这两个数据报都被交给IP层。IP层不管它们来自哪个应用,只是将它们都从同一个网络接口(比如你的网卡)发送到互联网上。

这个过程就是复用——多个应用程序的数据流共享底层的传输层和网络层服务。


总结与对比TCP

特性UDPTCP
分用依据目的端口号四元组:(源IP,源端口,目的IP,目的端口)
套接字标识二元组:(目的IP,目的端口)四元组:(源IP,源端口,目的IP,目的端口)
核心特点无连接。来自不同客户的数据,只要目的IP和端口相同,就进入同一个套接字。面向连接。每个TCP连接都由一个独立的套接字处理,即使目的IP和端口相同,来自不同源的数据也会进入不同的套接字。

一个形象的比喻来区分UDP和TCP的分用

  • UDP像一个公共信箱:所有人都把寄给“A公司”(目的IP和端口)的信扔进同一个大信箱里。A公司的人从信箱里取信时,只看信是寄给“A公司”的,不关心是谁寄的。

  • TCP像公司的前台接待:每个来访者(客户端连接)都会被分配一个专门的接待员(套接字)。前台(TCP)会严格区分张三的接待员和李四的接待员,即使他们都是来找“A公司”的

http://www.dtcms.com/a/573597.html

相关文章:

  • 做网站需要什么特色网站制作入门
  • QListWidget的图标模式
  • 【大模型实战笔记 6】Prompt Engineering 提示词工程
  • 能源生态系统的架构设计:利益相关方治理与跨行业协作
  • 潍坊seo管理浙江seo外包
  • BuildingAI二开 用户信息增加Coze套餐名称和剩余天数技术架构
  • 韦东山嵌入式Linux学习第3篇环境搭建与开发板操作:IMX6ULL_Pro
  • 自动驾驶深度学习模型的SOTIF优化方案
  • 对销售和营销的思考
  • 图像显示框架四——应用与SurfaceFlinger构建桥梁(基于Android 15源码分析)
  • 设计网站首页1农村自建房设计图纸及效果图大全
  • Git 同一个文件多次修改的 revert 的顺序
  • RFSOC29DR教程:iberf光口自环模块测试
  • (未完)超超超详版Sentinel2-L1C 数据获取及预处理 | hello,GEE!
  • wordpress企业网站入门嘉兴网站建设多少钱
  • 国外网站为啥速度慢为企业规划网络促销方案
  • 25微软MOS认证考试|时间 + 科目 + 备考攻略全梳理
  • 数控直流电流源设计指南:基于MCU+FPGA的精密控制与低功耗优化
  • mlir 编译器学习笔记之五 -- 开发避坑
  • 对接网站建设是什么意思网站的实用性
  • 深圳网站优化页面全功能多国语言企业网站
  • web开发之前后端分离的优势
  • 外贸网站推广平台有哪些网站建设公司南京
  • Linux 常用命令大全:从入门到精通
  • Linux-通过端口转发访问数据库
  • IPD PDT 团队月例会
  • 网站如何被百度收录之探索笔记
  • 番茄小说畅听红果短剧提示“低版本不安全“解决方案 【巨魔篇】
  • 付网站建设服务费什么科目查关键词排名软件
  • k8s——service详解