【探索Linux】P.35(传输层 —— UDP协议)

news2024/10/7 5:51:18

在这里插入图片描述

阅读导航

  • 引言
  • 一、UDP协议端格式
  • 二、UDP的特点
  • 三、UDP的缓冲区
  • 四、基于UDP的应用层协议
  • 温馨提示

引言

在上一篇文章中,我们深入探讨了网络协议的应用层,揭示了各种协议如何协同工作以确保信息在网络中正确、高效地传递。从HTTP到FTP,每一层协议都扮演着至关重要的角色,为数据的传输提供了必要的结构和规则。

现在,让我们将视线转向网络的另一层——传输层。在这一层,UDP协议和TCP以其独特的特性和应用场景,成为了我们接下来要重点介绍的对象。首先UDP,即用户数据报协议,是一种无连接的传输层协议,它提供了一种简单、快速的方式来传输数据,尽管它并不保证数据的可靠交付。

准备好了吗?让我们开始探索传输层的奥秘,深入了解UDP协议的世界。

一、UDP协议端格式

UDP(用户数据报协议)是一种在IP网络中用于简单数据传输的传输层协议。它是一种无连接的协议,这意味着在数据传输之前不需要建立一个连接。UDP协议的端格式相对简单,主要包括以下几个部分:
在这里插入图片描述

  1. 源端口号(Source Port):16位,用于标识发送端的端口号。如果发送端没有指定端口,操作系统会随机选择一个可用的端口。

  2. 目的端口号(Destination Port):16位,用于标识接收端的端口号,确保数据能够正确地发送到目标应用程序。

  3. 长度(Length):16位,表示UDP数据报的总长度,包括UDP头部和UDP数据的字节数。最小长度为8字节。

  4. 校验和(Checksum):16位,用于错误检测。如果校验和为零,接收端可以选择忽略校验和的验证。校验和的计算包括UDP头部、UDP数据以及伪头部。

  5. UDP数据(Data):长度可变,是实际传输的数据部分。

伪头部加上UDP头部和数据部分,共同构成了一个完整的UDP数据报。UDP的这种简单结构使得它在需要快速传输数据且对可靠性要求不高的场景下非常有用,如视频会议、在线游戏等。

二、UDP的特点

⭕UDP传输的过程类似于寄信

  • 无连接: 知道对端的IP和端口号就直接进行传输, 不需要建立连接;
  • 不可靠: 没有确认机制, 没有重传机制; 如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息;
  • 面向数据报: 不能够灵活的控制读写数据的次数和数量

🚨注意:由于UDP不保证数据的顺序、完整性或可靠性,因此在需要这些保证的应用中,通常会使用TCP协议

三、UDP的缓冲区

  1. 发送操作UDP没有传统意义上的发送缓冲区。当应用程序调用sendto函数发送数据时,数据会直接被传递给操作系统的内核。内核随后负责将这些数据作为UDP数据报发送到网络层,进而进行网络传输。

  2. 接收缓冲区UDP提供了接收缓冲区来暂存接收到的数据报。然而,这个缓冲区并不保证接收到的数据报会按照发送时的顺序进行排列。如果接收缓冲区被填满,新到达的数据报可能会被丢弃。

  3. 全双工通信:UDP支持全双工操作,这意味着socket可以同时进行读取和写入操作。这种能力允许应用程序在接收数据的同时发送数据,两者互不干扰,提高了通信的效率

综上所述,UDP协议的设计强调了传输的效率和简洁性,但牺牲了对数据顺序和可靠性的保证。因此,使用UDP协议的应用程序可能需要在应用层实现额外的机制来处理数据顺序和丢失的问题。

四、基于UDP的应用层协议

✅基于UDP的应用层协议利用了UDP的简单性和低延迟特性,通常用于那些对实时性要求较高、可以容忍一定数据丢失的应用场景。以下是一些常见的基于UDP的应用层协议:

  1. DNS(域名系统):用于将域名转换为IP地址,DNS协议在查询和响应中使用UDP来提供快速的域名解析服务。

  2. DHCP(动态主机配置协议):用于自动分配IP地址和其他网络配置给设备,DHCP使用UDP来快速配置网络设备。

  3. SNMP(简单网络管理协议):用于网络管理,监控网络设备的状态和性能,SNMP使用UDP来传输管理信息。

  4. TFTP(简单文件传输协议):一种简单的文件传输协议,用于在客户端和服务器之间传输文件,TFTP使用UDP来实现快速文件传输。

  5. RTP(实时传输协议):用于传输实时数据,如音频和视频,RTP通常与RTCP(实时传输控制协议)一起使用,RTCP提供传输质量反馈。

  6. STUN/TURN/ICE:这些协议用于NAT穿透,允许在防火墙和NAT(网络地址转换)设备后面进行语音、视频和数据通信。

  7. VoIP(网络电话):许多VoIP服务使用UDP来传输语音数据,因为它可以提供较低的延迟。

  8. 在线游戏:许多在线多人游戏使用UDP来实现快速的游戏内通信,如玩家位置更新和实时交互。

  9. 流媒体服务:一些流媒体服务使用UDP来传输视频和音频数据,以减少缓冲和提高播放的流畅性。

  10. NTP(网络时间协议):用于同步计算机的时钟,NTP使用UDP来快速发送时间同步数据。

  11. SIP(会话初始协议):用于建立、修改和终止多媒体会话,SIP使用UDP来实现快速的会话控制。

这些协议利用UDP的特性来提供快速、高效的服务,但同时也需要在应用层实现额外的机制来处理数据的顺序、完整性和可靠性问题。

温馨提示

感谢您对博主文章的关注与支持!如果您喜欢这篇文章,可以点赞、评论和分享给您的同学,这将对我提供巨大的鼓励和支持。另外,我计划在未来的更新中持续探讨与本文相关的内容。我会为您带来更多关于Linux以及C++编程技术问题的深入解析、应用案例和趣味玩法等。如果感兴趣的话可以关注博主的更新,不要错过任何精彩内容!

再次感谢您的支持和关注。我们期待与您建立更紧密的互动,共同探索Linux、C++、算法和编程的奥秘。祝您生活愉快,排便顺畅!

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

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

相关文章

在 PMP 考试中,项目管理经验不足怎么办?

在项目管理的专业成长之路上,PMP认证如同一块里程碑,标志着从业者的专业水平达到了国际公认的标准。然而,对于那些项目管理经验尚浅的考生来说,这座里程碑似乎显得有些遥不可及。那么,在PMP考试准备中,项目…

树形结构的勾选、取消勾选、删除、清空已选、回显、禁用

树形结构的勾选、取消勾选、删除、清空已选、回显、禁用 基本页面: 分为上传文件和编辑的页面 代码实现要点: 上传文件页面: 点开选择范围弹窗,三个radio单选框都为可选状态,默认显示的是第一个单选框(按…

邮件推送怎么设计吸引邮件内容?有何策略?

邮件推送在营销策略中的作用?如何评估邮件推送效果? 设计吸引人的邮件内容不仅可以提高打开率,还能促进用户的积极参与和转换。AokSend将探讨如何设计吸引人的邮件推送内容,以确保您的邮件不被忽略,并能够有效传达您的…

MES的实施难点与解决方案

随着智能制造的发展,制造执行系统(MES)已成为诸多制造企业争相引入的宝贵资产,它能有效衔接上层ERP系统与底层自动化设备,实现生产过程的实时监控与优化。然而,MES系统的成功实施并非易事,不当的…

Java毕设服务工作室

Java毕设服务工作室:专注提供高质量Java代码解决方案 在Java编程领域,毕业设计(毕设)项目往往需要大量的代码编写和调试。为了让同学们能够更专注于项目的核心逻辑和技术实现,Java毕设服务工作室应运而生,…

OpenAI停止对中国服务:背后原因与影响深度解析

引言 近日,OpenAI宣布停止对中国地区的服务,引发了广泛关注与讨论。许多开发者和企业用户收到了OpenAI的官方邮件,通知他们从7月9日开始,OpenAI将采取额外措施阻止来自不支持地区的API流量。这一决定对中国地区的开发者和企业意味…

GO sync包——读写锁

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

OpenCV-Python——环境配置及图像基本操作

一、环境配置 1、在虚拟环境中安装以下库: opencv-python3.4.1.15 opencv-contrib-python3.4.1.15 建议安装3.4.1的版本,3.4.2之后的版本做了专利保护,有的功能不能实现。 虚拟环境的安装以及安装库的问题见PyQt5专栏中的第一节。 2、安…

Pytest+Allure+Yaml+Jenkins+Gitlab接口自动化中Jenkins配置

一、背景 Jenkins(本地宿主机搭建) 拉取GitLab(服务器)代码到在Jenkins工作空间本地运行并生成Allure测试报告 二、框架改动点 框架主运行程序需要先注释掉运行代码(可不改,如果运行报allure找不到就直接注释掉) …

使用命令行创建uniapp+TS项目,使用vscode编辑器

一:如果没有pnpm,先安装pnpm 二:使用npx工具和degit工具从 GitHub 上的 dcloudio/uni-preset-vue 仓库克隆一个名为 vite-ts 的分支,到项目中. 执行完上面命令后,去manifest.json添加appid(自己微信小程序的Id),也可不执行直接下一步,执行pnpm install ,再执行pnpm:dev:mp-weix…

BW:CP里添加信息对象小问题记录

之前做视图直接添加进CP里,以为不能直接往CP里加信息对象,还专门建了一个带信息对象的模型,把信息对象拖到CP里,然后再链接视图的字段 今天发现原来不用这样,直接加就可以,小记一下 如图直接诶创建&#x…

虚拟化 之八 详解构造带有 jailhouse 的 openEuler 发行版(ARM 飞腾派)

基本环境 嵌入式平台下,由于资源的限制,通常不具备通用性的 Linux 发行版,各大主流厂商都会提供自己的 Linux 发行版。这个发行版通常是基于某个 Linux 发行版构建系统来构建的,而不是全部手动构建,目前主流的 Linux 发行版构建系统是 Linux 基金会开发的 Yocto 构建系统。…

Revit插件|建模助手「综合模块」30+个功能全面免费

噢~我的伙计们,快来猜猜是谁快满三岁了?没错,咱们的得力干将——Revit插件「建模助手」!这三年里,【综合】模块就像那个超受欢迎的小兄弟,帮了大家大忙。说起来都激动,到今年5月底,它…

高考填报志愿的纠结,钱途重要还是兴趣爱好重要?

不管考得好不好,都会纠结怎么填报学校怎么填报专业,毕竟这与未来息息相关,这决定了未来的就业方向。为了好好规划未来,很多人会在此时犹豫不决,不知道到底是结合就业前景来安排好,还是根据个人的喜好来安排…

告别质量烦恼,精益生产培训帮你打造品质传奇!

在企业运营的复杂环境中,我们常常会观察到一种现象:尽管团队全力以赴,但效率和效果却难以达到预期。这时,精益生产(Lean Production)的理念和方法就显得尤为重要。 精益生产简介 精益生产并非只适用于大…

探索网络爬虫技术:原理、实践与挑战

一、引言 在数字化时代,信息如同潮水般汹涌而来。过去,我们可能依赖书籍、报纸或电视来获取信息,但这些渠道的信息量有限,而且筛选过的信息未必能满足我们的需求。如今,互联网为我们提供了海量的信息,但同…

Linux网络-网络层IP协议、数据链路层以太网协议、ARP协议、ICMP协议和NAT技术

文章目录 前言一、IP协议IP报头解析4位版本4位首部长度16位总长度8位生存时间8位协议16位首部校验和32位源IP地址和32位目标IP地址 网段划分子网-局域网子网掩码特殊的IP地址 公网IP地址与私网IP地址运营商路由路由表 数据链路层MAC帧格式局域网通信原理局域网数据碰撞 MTU分片…

AWS云中的VPC启用流日志保存S3(AWS中国云)

问题 需要在AWS中国云中对VPC启用流日志操作。 步骤 创建s3桶 这里设置一个s3桶名,创建即可。如果出现已存在具有相同名称的存储桶错误,就换个桶名再试一试吧。 启用vpc流日志 找到vpc流日志入口操作,如下图: 设置vpc流日志…

基于requests模块爬取网易云歌曲评论并制作热词云图

本实践大作业要求 本次实践大作业主要要求主要包括: 1、选择一个热点或者你感兴趣的主题作为本次爬虫实践作业要完成的任务。 2、为了完成本次任务,需要确定从网上爬取的数据对象与范围。 3、利用python及网络爬虫相关技术实现从网上爬取相应内容数据。 …