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

在这里插入图片描述

阅读导航

  • 引言
  • 一、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++、算法和编程的奥秘。祝您生活愉快,排便顺畅!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【分布式计算框架 MapReduce】MapReduce 初级编程

目录 一、MapReduce 示例程序的导入并运行测试 二、准备 4 个小文件(文件大小分别为 1.7M,5.1M,3.4M,6.8M) 1. 第一种情况,默认分片:不修改程序代码,直接使用 WordCount 源程序 2…

火了10年的电脑监控软件有哪些?盘点8款热门的电脑监控软件

电脑监控软件领域经历了多年的发展,一些软件因为其稳定的功能、良好的用户体验和不断更新的技术支持,得以在市场上保持长期的热度和用户基础。以下是几款在过去十年里广受好评且持续流行的内网监控软件: 1.安企神:由河北安企神网络…

c++ 子类继承父类

这个是子类继承父类 是否重写从父类那里继承来的函数 这个例子的路径 E盘 demo文件夹 fatherChildfunc

【C++ | 委托构造函数】委托构造函数 详解 及 例子源码

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

周边美食小程序系统的设计

管理员账户功能包括:系统首页,个人中心,用户管理,美食店铺管理,菜品分类管理,标签管理,菜品信息管理,系统管理 微信端账号功能包括:系统首页,美食店铺&#…

Python 面试【★★★】

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

springboot实习管理系统的设计与实现 LW +PPT+源码+讲解

第三章系统分析与设计 3.1 可行性分析 一个完整的系统,可行性分析是必须要有的,因为他关系到系统生存问题,对开发的意义进行分析,能否通过本系统来补充线下实习管理模式中的缺陷,去解决其中的不足等,通过对…

Java基础(五)——ArrayList

个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 &#x1…

蓝卓出席“2024C?O大会”,探讨智能工厂建设新路径

6月29日,“2024C?O大会”在金华成功举办。此次大会由浙江省企业信息化促进会主办,与以往CIO峰会不同,“C?O”代表了企业数字化中的核心决策者群体,包括传统的CIO、CEO、CDO等。 本次大会围绕C?O、AIGC与制造业、数据价值、未来…

[NSSCTF]-Reverse:[SWPUCTF 2021 新生赛]easyapp(安卓逆向,异或)

无壳 把后缀名改为zip,找到apk 查看jadx 这里调用了MainActivity的lambda$onCreate$0$MainActivity,然后又调用了Encoder进行异或。 exp: result棿棢棢棲棥棷棊棐棁棚棨棨棵棢棌 key987654321 flag for i in range(len(result)):flagchr(…

算法:链表题目练习

目录 链表的技巧和操作总结 常用技巧: 链表中的常用操作 题目一:反转一个单链表 题目二:链表的中间结点 题目三:返回倒数第k个结点 题目四:合并两个有序链表 题目五:移除链表元素 题目六&#xff…

Flutter TIM 项目实现

目录 1. 服务端API 1.1 生成签名 1.1.1 步骤 第一步:获取签名算法 第二步:查看函数输入输出 第三步:nodejs 实现功能 1.1.2 验证签名 小结 1.2 Rest API 调用 1.2.1 签名介绍 1.2.2 腾讯接口 生成管理员 administrator 签名 包装一个 post 请求函数 查询账号 …

ATL新能源科技薪资待遇及Verify测评语言理解数字推理题型简介

一、走进ATL新能源科技 ATL新能源公司,即东莞新能源科技有限公司,是全球领先的可充式锂离子电池研发、生产和营销企业。成立于2004年,总部位于香港,产品广泛应用于消费电子产品和电动汽车领域。ATL以其技术创新和与苹果等大客户的…

websocket基础使用学习

websocket基础使用学习 一、websocket是什么?二、使用步骤1.websocket服务的安装与启动安装服务连接与发消息 总结 一、websocket是什么? 以前,很多网站为了实现推送技术,所用的技术都是Ajax 轮询。轮询是在特定的的时间间隔&…

RocketMQ源码学习笔记:Broker接受消息和发送消息

这是本人学习的总结,主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Overview2、技术亮点2.1、消息写入时的自旋锁和可重入锁2.2、堆外内存机制2.2.1、Overview2.2.2、源码2.2.2.1、开启堆外内存的条件2.2.2.2、堆外内存的初始化2.2.2.3、写消息到堆外内存2…

医院消防设施设备管理系统

医院为人员密集场所,且多为各类病患及其陪护人员,一旦发生火灾,人员疏散逃生困难,容易造成较严重的生命与财产损失。为规范医院的消防设施设备管理,通过凡尔码系统对医院消防设施设备进行信息化管理,提高医…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-21多输入多输出通道

21多输入多输出通道 import torch from d2l import torch as d2ldef corr2d(X, K):"""计算二维互相关运算"""h, w K.shapeY torch.zeros((X.shape[0] - h 1, X.shape[1] - w 1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i,…

大创项目推荐 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

文章目录 1 简介2 传统机器视觉的手势检测2.1 轮廓检测法2.2 算法结果2.3 整体代码实现2.3.1 算法流程 3 深度学习方法做手势识别3.1 经典的卷积神经网络3.2 YOLO系列3.3 SSD3.4 实现步骤3.4.1 数据集3.4.2 图像预处理3.4.3 构建卷积神经网络结构3.4.4 实验训练过程及结果 3.5 …

HarmonyOS开发:应用完整性校验

简介 为了确保应用的完整性和来源可靠,OpenHarmony需要对应用进行签名和验签。 应用开发阶段: 开发者完成开发并生成安装包后,需要开发者对安装包进行签名,以证明安装包发布到设备的过程中没有被篡改。OpenHarmony的应用完整性校…

【Docker0】网络更改

目录 1. 停止docker服务 2. 关闭docker默认桥接网络接口 3. 从系统删除docker0接口 4. 创建一个名为bridge0的新接口 5. 添加ip地址和子网掩码 6. 启用bridge0接口 7. (如果没起来就执行该句) 8. 查看ip 1. 停止docker服务 sudo service docker…