中科大计网学习记录笔记(十四):多路复用与解复用 | 无连接传输:UDP

前言:

学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程
该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信息量过大,有太多无法理解的地方,在我第一次点开的时候也有相同的感受,但经过了一段时间项目的学习,对计网有了更多的了解,所以我准备在这次学习的时候做一些记录并且加入一些我的理解,希望能够帮助到大家。
往期笔记可以看专栏中的内容😊😊😊

文章目录

      • 3.2 多路复用与解复用
        • 3.2.1 TCP 的多路复用与解复用
        • 3.2.2 UDP 的多路复用与解复用
      • 3.3 无连接传输:UDP
        • 3.3.1 基本概念
        • 3.3.2 UDP 报文段格式
        • 3.3.3 UDP 校验和

3.2 多路复用与解复用

💡 在了解多路复用之前先要知道端口的概念:

  • 在TCP/IP协议中,端口用于 标识应用程序的通信终点,允许 多个应用程序在同一台计算机上同时进行网络通信
  • 端口分为两种类型:TCP端口和UDP端口。
3.2.1 TCP 的多路复用与解复用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

👉 在上面 socket 编程了解到:TCP 协议会将 源IP、源端口 和 目标 IP、目标端口封装到 socket

  • 封装了这些信息的 TCP 报文段(Segment)被作为 SDU 交给下一层,网络层
  • 通过对等实体的传输到对方主机的网络层
  • 对方主机通过传输过来的四元组信息找到对应的 socket 来达到解复用,将信息传输给不同的应用进程。

💡 sock 其实就是 socket 的简称,指的是套接字。

3.2.2 UDP 的多路复用与解复用

💡 UDP 的 socket 与 TCP 不同,其中只封装了本主机的信息,也就是源 IP 和 源端口

  • 目标 IP 和目标端口作为调用 API 的参数传入

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

👉 通过 UDP 的 socket 同样也可以实现多路复用

  • 解复用即当信息通过网络层传输到对方的主机,对方主机从网络层中获取到 源 IP 和 源端口 以及 本主机的 IP 和 端口,由此可以找到本主机的进程来实现解复用。

💡 多路复用就是通过本机的不同端口来使得信息分流传输

  • 解复用就是通过传输来的信息找到请求的是哪个端口(port)

3.3 无连接传输:UDP

3.3.1 基本概念

💡 UDP:User Datagram Protocol(用户数据数据报协议)

👉 与 TCP 不同的是,UDP 在网络层端到端传输的基础上只是简单的将数据封装成数据报,实现了进程之间的通信而没有像 TCP 那样做拥塞控制、流量控制等的操作。

  • 所以 UDP 提供的是一种 “尽力而为” 的服务,报文段可能会丢失或者乱序
  • 但是需要注意的是,并不是说 UDP 无法实现可靠的传输,通过 应用层 自身是可以实现可靠传输的。

👉 UDP 被用于:

  • 流媒体(对于丢失不敏感而对于速率敏感,应用可控制传输速率)
  • DNS
  • SNMP

💡 应用可控制传输速率

  • 因为没有 TCP 提供的控制服务,UDP 接收到应用传输的数据就直接将其通过 IP 发送出去,所以使用 UDP 应用是可以控制传输速率的,这对流媒体来说非常重要。
3.3.2 UDP 报文段格式

💡 报文段是指在传输层使用该协议时,从发送端到接收端单次传输的数据单元,也就是前面提到的 PDU。

👉 UDP 的报文段包含如下的数据

  1. 源端口号(Source Port):占用2个字节,用于标识发送方的端口号。
  2. 目标端口号(Destination Port):占用2个字节,用于标识接收方的端口号。
  3. 长度(Length):占用2个字节,表示UDP报文段的长度,包括头部和数据部分。
  4. 校验和(Checksum):占用2个字节,用于检测UDP报文段在传输过程中是否发生了错误。
  5. 数据(Data):占用可变长度,包含了传输的实际数据。

❓ 为什么要有 UDP?

  • UDP 不建立连接,前面学到的 TCP 三次握手过程来建立连接毫无疑问会增加延迟
  • 状态较为简单,发送端和接收端没有链接的状态
  • 报文段的头部很小,只包含上面提到的四种内容,相比于 TCP 的十一种提升很大
  • 没有拥塞控制和流量控制,UDP 可以尽可能快的发送报文段
    • 应用传输的速率近似登录主机向网络中的传输速率
3.3.3 UDP 校验和

💡 UDP校验和(Checksum)是为了检测在传输过程中数据报文是否出现差错而设立的一种机制。它通过计算特定的数据序列的二进制反码求和,并确保在网络中传递时数据的完整性。

👉 下面是形成 UDP 校验和的步骤

  1. 构造伪首部:伪首部(Pseudo Header)是TCP和UDP在计算校验和时临时构造的一个数据结构,它并不实际存在于网络传输的数据包中,而是在发送方和接收方计算校验和时分别创建并使用的。
    • 伪首部由以下部分组成,其结构类似于IP头部的一部分:源IP地址、目的IP地、协议字段、UDP长度
  2. 准备数据:将UDP首部(8字节,包含源端口号、目的端口号、长度和校验和字段,但此时校验和字段应置为0)与UDP数据载荷一起考虑进来。
  3. 逐16位相加:将所有16位数据单元(包括伪首部、UDP首部以及数据载荷中的每一对字节)按照网络字节顺序(大端序)进行二进制相加。
  4. 补溢出:如果在累加过程中产生了进位(即结果超过16位),则将高16位与低16位相加,直到没有进位为止。
  5. 取反:最终得到一个无进位的16位数字,对该16位数求取反码,得到的结果就是UDP校验和。
  6. 设置到首部:将计算得出的校验和写入UDP首部的校验和字段。

💡 为什么要取反码?

  • 接收方接收到的的首部是是取反码构建的,其再通过相同的步骤对上述内容求和再与反码进行相加,得到的就是 16 位的全 1,检验较为简单。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/261493.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转载】企业资产收集与脆弱性检查工具

简介 云图极速版是针对拥有攻击面管理需求的用户打造的 SaaS 应用,致力于协助用户管理互联网资产攻击面的 SaaS 化订阅服务产品。可实现对备案域名、子域名、IP、端口、服务、网站、漏洞、安全风险等场景进行周期性监控,支持多维度分析攻击面。利用可视化…

多个.C 文件关于全局变量如何使用

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

pytest基本应用

文章目录 1.pytest安装2.用例运行规则3.常用参数断言运行参数用例控制setup和teardownini配置文件 4.常用插件5.pytest高阶用法用例跳过参数化 6.pytest之Fixture使用fixture使用装饰器usefixtures 7.pytest之conftest.py8.conftestfixtureyieldyield介绍前后置使用 1.pytest安…

LVGL8.1在Windows显示图片

1、将这些宏的值改成1,以便支持这些格式: 2、 这两个地方: LV_USE_FS_WIN32 设置符号,大小写字母、“\”、“”等符号都可以。 LV_FS_WIN32_PATH 为一个目录,图片放入此目录。 3、载入图片: “M:color.pn…

TestNG与ExtentReport单元测试导出报告文档

TestNG与ExtentReport集成 目录 1 通过实现ITestListener的方法添加Reporter log 1.1 MyTestListener设置 1.2 输出结果 2 TestNG与ExtentReporter集成 2.1 项目结构 2.2 MyExtentReportListener设置 2.3 单多Suite、Test组合测试 2.3.1 单Suite单Test 2.3…

问题:Spark SQL 读不到 Flink 写入 Hudi 表的新数据,打开新 Session 才可见

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

k8s版本升级后,pod一直无法被调度

故障现象:升级完k8s后,部署pod时发现pod无法被调度到node节点,pod的状态一直是pending状态。 报错内容:User-scheduler pods fail with “no kind “KubeSchedulerConfiguration” is registered for version “kubescheduler.co…

HCIP---OSPF综合实验

一:实验要求 1、R4为ISP,其上只能配置IP地址,R4与其所有直连设备间均使用公有IP 2、R3-R5/6/7为MGRE环境,R3为中心站点 3、整个OSPF环境IP基于R4的环回 4、所有设备均可访问R4的环回 5、减少LSA的更新量,加快收敛…

怿星科技测试实验室(EPT LABS)服务介绍

据中国汽车工业协会数据,2023年我国汽车产销量分别达3016.1万辆和3009.4万辆,年产销量双双创历史新高,汽车行业进入了新时代。新汽车时代下的OEM竞争更激烈,汽车电子架构更复杂,研发周期更短,软件迭代更快&…

Cesium 问题:加载 gltf 格式的模型之后太小,如何让相机视角拉近

文章目录 问题分析问题 刚加载的模型太小,如何拉近视角放大 分析 在这里有两种方式进行拉近视角, 一种是点击复位进行视角拉近一种是刚加载就直接拉近视角// 模型三加载 this.damModel = new Cesium.Entity({name: "gltf模型",position:</

【AI大语言模型】ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

Maven私服搭建Nexus3

第一部分&#xff1a;仓库部署 下载地址&#xff1a;https://help.sonatype.com/en/download.html 备用下载链接&#xff0c;部分已经失效了 解压后会有两个文件夹&#xff1a; nexus-3.20.1-01 sonatype-work 访问地址配置路径 \nexus-3.20.1-01\bin\nexus.vmoptions -Xms1…

【广度优先搜索】【网格】【割点】【 推荐】1263. 推箱子

作者推荐 视频算法专题 涉及知识点 广度优先搜索 网格 割点 并集查找 LeetCode:1263. 推箱子 「推箱子」是一款风靡全球的益智小游戏&#xff0c;玩家需要将箱子推到仓库中的目标位置。 游戏地图用大小为 m x n 的网格 grid 表示&#xff0c;其中每个元素可以是墙、地板或…

Android13 针对low memory killer内存调优

引入概念 在旧版本的安卓系统中&#xff0c;当触发lmk&#xff08;low memory killer&#xff09;的时候一般认为就是内存不足导致&#xff0c;但是随着安卓版本的增加lmk的判断标准已经不仅仅是内存剩余大小&#xff0c;io&#xff0c;cpu同样会做评判&#xff0c;从而保证设备…

挑战杯 基于人工智能的图像分类算法研究与实现 - 深度学习卷积神经网络图像分类

文章目录 0 简介1 常用的分类网络介绍1.1 CNN1.2 VGG1.3 GoogleNet 2 图像分类部分代码实现2.1 环境依赖2.2 需要导入的包2.3 参数设置(路径&#xff0c;图像尺寸&#xff0c;数据集分割比例)2.4 从preprocessedFolder读取图片并返回numpy格式(便于在神经网络中训练)2.5 数据预…

阿里巴巴中国站获得淘口令真实url API(1688.item_password)

阿里巴巴&#xff08;1688.com&#xff09;是一个B2B电商平台&#xff0c;而淘口令&#xff08;或称为淘宝口令&#xff09;是一种在阿里巴巴集团旗下的淘宝和天猫平台中分享商品或活动链接的特殊形式。淘口令通常包含一串字符&#xff0c;用户可以复制这串字符并在淘宝或天猫的…

YOLOv5代码解读[02] models/yolov5l.yaml文件解析

文章目录 YOLOv5代码解读[02] models/yolov5l.yaml文件解析yolov5l.yaml文件检测头1--->耦合头检测头2--->解耦头检测头3--->ASFF检测头Model类解析parse_model函数 YOLOv5代码解读[02] models/yolov5l.yaml文件解析 yolov5l.yaml文件 # YOLOv5 &#x1f680; by Ult…

Maven 私服 Nexus3

一、Maven和Nexus3 简介 Maven是一个采用纯Java编写的开源项目管理工具&#xff0c;采用一种被称之为Project Object Model(POM)概念来管理项目&#xff0c;所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个生命周期&#xff0c;包括…

Unity xLua开发环境搭建与基础进阶

Unity是一款非常流行的游戏开发引擎&#xff0c;而xLua是一个为Unity开发者提供的Lua框架&#xff0c;可以让开发者使用Lua语言来进行游戏开发。在本文中&#xff0c;我们将介绍如何搭建Unity xLua开发环境&#xff0c;并进行基础进阶的学习。 环境搭建 首先&#xff0c;我们需…

华为算法题 go语言

1 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返…