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

news2024/12/29 10:24:02

前言:

学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第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.coloradmin.cn/o/1460354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLO-NAS浅析

YOLO-NAS(You Only Look Once - Neural Architecture Search)是一种基于YOLO(You Only Look Once)的目标检测算法,结合神经架构搜索(NAS)技术来优化模型性能。 YOLO是一种实时目标检测算法&…

攻防世界-web-Training-WWW-Robots

题目信息 In this little training challenge, you are going to learn about the Robots_exclusion_standard. The robots.txt file is used by web crawlers to check if they are allowed to crawl and index your website or only parts of it. Sometimes these files rev…

pytest框架学习总结:失败用例如何处理?

当我们跑用例的时候,有些用例可能会失败,可以对失败的用例设置做如下管理: 1、失败重跑: --reruns 2 --reruns-delay 5 2、失败了停止执行后续的用例:pytest -x 3、设置最多失败多少用例会停止执行:pytest --maxfail2 4、跳过用例…

《Solidity 简易速速上手小册》第7章:智能合约的部署与交互(2024 最新版)

文章目录 7.1 合约的编译和部署7.1.1 基础知识解析更全面的理解部署准备 7.1.2 重点案例:部署一个投票合约案例 Demo:创建并部署投票合约案例代码VotingContract.sol部署脚本(Truffle) 测试和验证拓展功能 7.1.3 拓展案例 1&#…

基于vue框架的环保知识普及平台设计与实现

项目:基于vue框架的环保知识普及平台设计与实现 目 录 摘要 I Abstract II 第1章 引言 1 1.1 研究的背景 1 1.2 目的和意义 1 1.3 设计思路 1 1.4 研究的主要内容 2 第2章 相关原理和技术 3 2.1 B/S 模式体系结构 3 2.2 Springboot技术 4 2.3 访问数据库…

GitHub 2FA认证(双重身份验证)

GitHub 2FA认证(双重身份验证) GitHub 向部分用户发出警告:如果在北京时间 2024 年 1 月 19 日 08:00 前仍未启用双重验证(2FA),他们将被禁用部分功能。当然,这对于 GitHub 用户来说并不算意外&#xff0c…

Leetcode 1089.复写零

目录 题目 思路 代码 题目 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改,不要从函数返回…

录屏后没有声音怎么补救?试试这几种录屏工具

录屏后没有声音怎么补救?在数字化时代,无论是为了制作教学视频、分享游戏过程,还是为了记录会议内容,录屏都扮演着重要的角色。然而,在进行录屏时,有时可能会遇到录屏后没有声音的问题,这无疑会…

MIT 6.S081---Lab: Copy-on-Write Fork for xv6

Implement copy-on write(hard) 从下图可见,xv6的pte中RSW都是可以被软件使用的未定义位,此处将pte中的第9位标记为PTE_COW位。 修改kernel/riscv.h: 修改kernel/vm.c,新增refCount代表物理页面的引用次数,根据&…

2024年2月的TIOBE指数,go语言排名第8,JAVA趋势下降

二月头条:go语言进入前十 本月,go在TIOBE指数前10名中排名第8。这是go有史以来的最高位置。当谷歌于2009年11月推出Go时,它一炮而红。在那些日子里,谷歌所做的一切都是神奇的。在Go出现的几年前,谷歌发布了GMail、谷歌…

探索水下低光照图像检测性能,基于DETR(DEtection TRansformer)模型开发构建海底生物检测识别分析系统

海底这类特殊数据场景下的检测模型开发相对来说比较少,在前面的博文中也有一些涉及,感兴趣的话可以自行移步阅读即可: 《尝试探索水下目标检测,基于yolov5轻量级系列模型n/s/m开发构建海底生物检测系统》 《基于YOLOv5C3CBAMCBA…

list链表

1. list基本概念 功能:将数据进行链式存储 链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成:链表由一系列结点组成 结点的组成:一个是存储数据…

苍穹外卖——第一天nginx

放到全是英文路径的打不开 到安装路径进入cmd,输入nginx -t nginx: the configuration file E:\Astudy\nginx-1.20.2/conf/nginx.conf syntax is ok nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbid…

C++ For循环:生成三角形*阵列图案

#include <iomanip> #include <iostream>using namespace std;int main() {int i,j,n;cout << "请输入图案的行数&#xff1a;";cin >> n;for (i 1; i < n; i){cout << setw(n-i1); //设置域宽for (j 1; j < i; j){cout <…

外汇天眼:台积电离职员工开设资金盘,4年诈骗4000人得手65亿

继去年5月爆出的im. B借贷诈骗案件后&#xff0c;近期警方又破获一个做案手法如出一辙的资金盘&#xff0c;值得注意的是&#xff0c;由于主嫌利用曾在台积电工作结识的人脉&#xff0c;因此有大量台积电员工及其亲友受害&#xff0c;甚至让公司高层决定请法务部门协助打官司。…

CentOS和Ubuntu之间的区别和联系

CentOS&#xff08;Community ENTerprise Operating System&#xff09;和Ubuntu是两种流行的Linux发行版&#xff0c;它们在企业和个人用户中都有广泛的应用。尽管它们都是基于Linux内核&#xff0c;但它们在设计理念、更新策略、包管理系统等方面存在一些关键的区别和联系。下…

hashtable的结构和扩容机制

结构 最外层封装了dictht&#xff0c;结构如下 table指向了实际存储的hash结构dictEntry。size是哈希表大小&#xff0c;也就是说dictEntry有多少空间。sizemask是掩码&#xff0c;为固定值size-1&#xff0c;然后元素的index就应该是元素哈希值&sizemask。used代表dictE…

项目经理想辞职的20个“离奇”理由

项目经理&#xff0c;这个看似风光无限的职位&#xff0c;其实背后也有许多鲜为人知的辛酸。以下是几个项目经理想辞职的“离奇”理由&#xff1a; 1、“与难缠客户斗智斗勇” 有些客户的要求比“外星人的要求”还要离奇。 2、“被‘无限需求’吞噬” 客户总是有无尽的需求…

【云原生系列之kubernetes】--Ingress使用

service的缺点&#xff1a; 不支持基于URL等机制对HTTP/HTTPS协议进行高级路由、超时、重试、基于流量的灰度等高级流量治理机制难以将多个service流量统一管理 1.1ingress的概念 ingress是k8s中的一个对象&#xff0c;作用是如何将请求转发到service的规则ingress controlle…

协和眼科牵头 ,5 家眼科中心同发力,用 AI 助力 13 种眼底疾病检测

眼睛方寸之间&#xff0c;疾病千差万别。去年底&#xff0c;由爱康集团与鹰瞳 Airdoc 联合发布的《四百万体检人群健康蓝皮书》显示&#xff0c;近年来眼底异常的总检出率连年上升&#xff0c;已从 2019-2020 年的 76.1%&#xff0c;上升至 2022-2023 年的 78.7%。眼底疾病的发…