UDP协议重点总结(附实例)

news2024/11/15 11:07:26

文章目录

  • 前言
  • 一、网络的原生情况
  • 二、UDP协议
    • 2.1 UDP的特点
      • 2.1.1 不可靠性
      • 2.1.2 无连接(不是缺点)
      • 2.1.3 面向数据报(优点)
      • 2.1.4 缓冲区
      • 2.1.5 大小受限
    • 2.2 UDP协议端格式
    • 2.3 关于校验和
    • 2.4 基于UDP的应用层协议
  • 三、UDP总结(如何发送接收的)
  • 后言


前言

回顾2022年,展望2023年,博主给大家带来了网络中传输层的重点总结,附上博主本人的实例,帮助大家更好的理解数据是怎么在网络中传输的。

博主个人社区:开发与算法学习社区

博主个人主页:Killing Vibe的博客

欢迎大家加入,一起交流学习~~

一、网络的原生情况

网络中的数据,是经过路由器之间,一跳一跳地,接力一样地,传送到目标主机上的。

这带来了两个问题:(站在网络层的视角上讨论)

✦ 网络传送是不可靠的

  1. 你的发送了数据,对方不保证一定能收到
  2. 不能保证严格按照发送时的顺序被对方接收到

由于路可能不同,所以很难保证按照出发的顺序到达

在这里插入图片描述

✦ 网络传送是不安全的

  1. 你发送的所有数据,沿途的路由器都可以进行查看或者修改,窃听,篡改
  2. 别人可以伪造成你发送的数据

这两个问题需要交给网络层以上(传输层、应用层)去解决

这篇文章博主将详细总结一下传输层的重点协议

二、UDP协议

UDP全称:User Datagram Protocol 用户报文协议

UDP是一个很简单的传输层协议,它只是做到了传输层最基本的职责
(在 host to host 连通的情况下,实现了process to process)

2.1 UDP的特点

UDP传输的过程类似于寄快递

在这里插入图片描述

2.1.1 不可靠性

网络层本身是不可靠的,UDP 又没做过任何的处理,所以UDP是不可靠的!!

并不是UDP做了什么,才变得不可靠了,而是UDP什么都没做,所以网络层的不可靠特性直接表达给了应用层,所以站在应用层的角度,我们才说UDP是不可靠的!

2.1.2 无连接(不是缺点)

区别于TCP连接,UDP没有任何可靠机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。(但无连接效率高,不需要连接带来的资源损耗,成本低)

2.1.3 面向数据报(优点)

应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并;
用UDP传输100个字节的数据:

如果发送端一次发送100个字节,那么接收端也必须一次接收100个字节;而不能循环接收10次,每次接收10个字节。

2.1.4 缓冲区

UDP只有接收缓冲区,没有发送缓冲区:

  • UDP没有真正意义上的 发送缓冲区。发送的数据会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作;
  • UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致;如果缓冲区满了,再到达的UDP数据就会被丢弃;

在这里插入图片描述

UDP的socket既能读,也能写,这个概念叫做 全双工

2.1.5 大小受限

UDP协议首部中有一个16位的最大长度。也就是说一个UDP能传输的数据最大长度是64K(包含UDP首部)。

2.2 UDP协议端格式

在这里插入图片描述

  • 端口号,表示源主机和目的主机的某个进程的端口号
  • 16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度;
  • 如果校验和出错,就会直接丢弃;

所有网络协议的报头中都要具备的职责:如何进行解包(怎么把数据中的header和payload分开)?

答:由于header长度是定长(固定长度),前8个字节一定是header,剩下的一定是payload。

2.3 关于校验和

通常用来在通信中,尤其是远距离通信中保证数据的完整性和准确性。

基本原理就是利用hash函数(checksum函数就是一种hash函数),只要相同的数据,经过函数处理之后,一定得到相同的结果(hash值:checksum)

举个例子

发送方发送的时候:

  1. hash(数据) - 》 checksum_1
  2. 把checksum_1 填在UDP的header中
  3. 发送

接收方接受的时候:

  1. hash(数据) -》 checksum_2
  2. 如果checksum_1 == checksum_2 就接受,如果不等于,说明数据一定不是源数据了,数据损坏

2.4 基于UDP的应用层协议

  • NFS:网络文件系统
  • TFTP:简单文件传输协议
  • DHCP:动态主机配置协议
  • BOOTP:启动协议(用于无盘设备启动)
  • DNS:域名解析协议

当然,也包括自己写UDP程序时自定义的应用层协议。

三、UDP总结(如何发送接收的)

在这里插入图片描述

在这里插入图片描述

后言

以上就是UDP协议的重点总结了,文章要是有什么疑问或者问题,欢迎大家私信博主,有帮助的话麻烦各位点赞+收藏一波,有助于推荐给更多正在学习的朋友,关注不迷路~~

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

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

相关文章

P2279 [HNOI2003]消防局的设立

[HNOI2003]消防局的设立题目描述2020 年,人类在火星上建立了一个庞大的基地群,总共有 n 个基地。起初为了节约材料,人类只修建了 n-1 条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了一个…

HTML5本地存储详解

html5 本地存储。前言一、localStorage 对象二、sessionStorage 对象三、localstorage 与 cookie 的区别四、localStorage 和 sessionStorage 二者的区别总结前言 ☀️本地存储是指在客户端存储数据,HTML5 为我们提供了两种 API,分别是 localStorage 与 …

算法是如何炼成的?

一、算 法 简 史算法可以追溯到古代埃及人和古希腊人使用的算术方法。在古代埃及,人们使用简单的加减法来解决基本的数学问题,而在古希腊,人们开始使用更加复杂的算术方法,比如平方、立方、平方根和立方根。随着数学的发展&#x…

css元素转换(旋转函数、rotateX 和 rotateY 的使用、移动函数、缩放函数、过渡、动画)详解

文章目录旋转函数rotateX 和 rotateY 的使用移动函数缩放函数过渡transition-timing-function 属性动画旋转函数 在 CSS3 中,使用 rotate 函数能够让指定的元素对象绕原点旋转,主要在二维空间内进行操作。 其语法格式如下所示: transform: …

【C++常用算法】STL基础语法学习 | 查找算法

目录 ●find ●find_if ●adjacent_find ●binary_ search ●count ●count_if ●find 1.功能描述: 查找指定元素,如果找到则放回指定元素的迭代器,若未找到则返回结束迭代器。 2.查看find定义下底层代码的函数原型: 3.…

Day849.ThreadLocal线程本地存储模式 -Java 性能调优实战

ThreadLocal线程本地存储模式 Hi,我是阿昌,今天学习记录的是关于ThreadLocal线程本地存储模式的内容。 民国年间某山东省主席参加某大学校庆演讲,在篮球场看到十来个人穿着裤衩抢一个球,观之实在不雅,于是怒斥学校的…

用于安全医疗保健系统的基于机器学习的可伸缩区块链架构

文章目录背景相关技术简介区块链扩张性电子病历数据安全安全医疗保健的架构基于可扩展区块链架构的机器学习概述基于可扩展区块链架构的机器学习工作流程小结摘要从3.0到4.0的工业革命已经改变了医疗保健环境。患者电子健康记录(EHR)与医学研究机构共享,用于临床研究…

12月榜单丨B站UP主排行榜(飞瓜数据B站)发布!

飞瓜轻数发布2022年12月飞瓜数据UP主排行榜(B站平台),通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况,为用户提供B站号综合价值的数据参考,根据UP主成长情况用户能够快速找到运营能力强的B站UP主。飞瓜…

Python:python简介

1:特点 一种解释型,面向对象,动态数据类型的开源高级程序设计语言 其特点就是:优雅,明确,简单,完善的基础代码库和大量的第三方库。 2:解释VS解释 3:应用场景 python…

基于androidstudio校园快递APP系统的设计与实现

1.课题背景及研究的目的和意义 1.1 课题背景 在其发展速度可谓一日千里的电子商务时代,大学生群体已成为网络购物群体中不可或缺的一部分。因此,高校师生对网购的需求也愈来愈强烈,校园快递的问题也成为了焦点,其中校园快递代理…

98%的数据被浪费,企业该如何释放数据价值?

在数字经济时代,对于广大企业来说,数据就是生产资料,算力则是生产力。飞速增长的业务数据,为现代企业提供了最具价值的资产。然而另一方面,如何存储、清理、管理、挖掘、运用数据,也给广大企业提出了艰巨的…

4天带你上手HarmonyOS ArkUI开发——《HarmonyOS ArkUI入门训练营之健康生活实战》

《HarmonyOS ArkUI入门训练营之健康饮食应用》是面向入门开发者打造的实战课程系列。特邀华为终端BG高级开发工程师作为本次训练营讲师,以健康饮食为例,开展技术教学及实战案例分享,助力入门开发者快速提升技能实力进阶。 目标学员 入门开发者…

apache httpClient关于cookie解析的报错处理

报错信息:o.a.h.c.p.ResponseProcessCookies - Invalid cookie header: "Set-Cookie: account"xxxxx"; expiresFri, 03 Feb 2023 06:02:40 GMT; httponly; Path/". Invalid expires attribute: Fri, 03 Feb 2023 06:02:40 GMThttpClient版本&am…

4年翻4倍年薪30W+的测试工程师个人成长之路

欢迎同行来交流,wx 群二维码应该过不了审核,私聊要把。税收图保证真实性。 一、何为测试 简单做一下科普。测试简而言之就是应用上线前,验证应用是否存在bug,是否满足产品的需求。大家津津乐道的程序员,也就是开发&am…

stm32 的 ESP8266 wifi 模块 (ESP - 12s) 的使用

1. ESP8266 的器件介绍 2. ESP2866外设 的引脚 3. 我所用的的ESP2866 的引脚图 4. 代码 编程的串口 5.wifi 的指令 1. AT 测试指令 2. ATRST 重启模块 3. ATGMR 查看版本信息 4. ATRESTORE 恢复出厂设置 5. ATUART115200,8,1,0,0 串口设置 串口号&#xff…

【SpringBoot应用篇】SpringBoot 业务代码中常用技巧

【SpringBoot应用篇】SpringBoot 业务代码中常用技巧自定义拦截器自定义过滤器过滤器和拦截器的区别获取Spring容器对象BeanFactoryAware接口ApplicationContextAware接口ApplicationListener接口全局异常处理类型转换器参数解析器Import导入配置普通类配置类ImportSelectorImp…

异地旁路组网:zerotier

有这么一个需求:需要远程访问内网的nas。然后现成的解决方案有蒲公英这个方案,但是个人版的话限了只能3个设备,因此找了半天,最后选择了功能类似的zerotier. 创建网络 zerotier的使用很简单,首先去官网http://zeroti…

vue 时间栏选择

效果图&#xff1a; 用el-carousel 的轮播组件 将样式修改 添加change事件 区分左右点击 获取当前年 和 当前月 <el-carouseltrigger"click"height"36px":autoplay"false"arrow"always"change"carouselChange"><e…

Leetcode.189 轮转数组

题目链接 Leetcode.189 轮转数组 题目描述 给你一个数组&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步:[7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5…

数据分析师最佳选择,帆软自研函数计算满足BI复杂场景需求

‍‍数据智能产业创新服务媒体——聚焦数智 改变商业伴随着数字经济的加快推进和企业数字化转型的不断深入&#xff0c;数据时代正在朝我们走来。越来越多的企业管理者已经意识到数据的重要性&#xff0c;数据分析和商业智能也成为管理决策的重要辅助工具&#xff0c;由此而生…