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

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

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

相关文章

C++ Thead多线程 condition_variable 与其使用场景---C++11多线程快速学习

std::condition_variable 的步骤如下&#xff1a; 创建一个 std::condition_variable 对象。 创建一个互斥锁 std::mutex 对象&#xff0c;用来保护共享资源的访问。 在需要等待条件变量的地方 使用 std::unique_lock<std::mutex> 对象锁定互斥锁 并调用 std::conditio…

6.二叉树.题目2

6.二叉树.题目2 题目9.找树左下角的值10.路径总和11.从中序与后序遍历序列构造二叉树12.最大二叉树13.合并二叉树14.二叉搜索树中的搜索15.验证二叉搜索树16.二叉搜索树的最小绝对差 总结 题目 9.找树左下角的值 题目链接 给定一个二叉树&#xff0c;在树的最后一行找到最左边…

【LeetCode】二、链表相关:移除与反转链表

文章目录 1、链表结构2、leetcode203&#xff1a;移除链表元素3、leetcode206&#xff1a;反转链表 1、链表结构 和数组不同&#xff0c;此时不需要连续的内存空间&#xff0c;如下为单端链表&#xff0c;无pre指针 时间复杂度&#xff1a; 和数组相反&#xff0c;访问元素时…

Jackson和fastjson解决序列化时字段属性大小写改变的问题

在部分特殊场景下&#xff0c;我们可能会把实体的字段属性改成全部大写&#xff0c;但是在返回前端时&#xff0c;字段会被序列化成小写。 比如我们有一个这个类属性都是大写&#xff1a; 后端接口是这样的 然后我们请求后&#xff0c;会发现我们的字段被变成全部小写的。 …

linux服务器解压/压缩文件

在Linux服务器上&#xff0c;可以使用zip和tar命令来进行文件的打包&#xff08;压缩&#xff09;和解包&#xff08;解压缩&#xff09;。下面是它们的基本用法&#xff1a; 打包&#xff08;压缩&#xff09;与解压方法&#xff1a; 1. 使用 zip 命令 打包成 .zip 文件&am…

Java面试题:讨论如何使用JVM工具(如jconsole、jstack、jmap)诊断内存泄漏

诊断Java应用程序中的内存泄漏可以使用JVM提供的多种工具&#xff0c;如jconsole、jstack和jmap。这些工具可以帮助开发者监控和分析Java应用程序的运行状况&#xff0c;定位内存泄漏的根源。以下是这些工具的详细介绍及其使用方法&#xff1a; 1. jconsole JConsole&#xf…

CCAA:认证通用基础 7(认证的基本概念)

7认证的基本概念 7.1认证类型(产品认证、管理体系认证、服务认证)及基本特征 第一节 认证 1.认证的定义和本质 1.1认证的定义 (1)认证:与产品、过程、体系或人员有关的第三方证明。 ①”产品&#xff0c;过程&#xff0c;体系或人员”是认证的对象&#xff0c;认证是对“产…

PyQt6+mitmproxy,实现抓取网络请求并打印到桌面的窗口中

你可以将你的PyQt6应用程序与mitmproxy结合使用&#xff0c;以便在GUI中显示拦截的HTTP请求和响应。以下是修改后的代码&#xff1a; 安装依赖项&#xff1a; 确保你已经安装了PyQt6和mitmproxy&#xff1a; pip install PyQt6 mitmproxy编写Python代码&#xff1a; 创建一个Py…

软考中级:信息系统管理工程师备考资源

信息系统管理工程师备考资源 1 备考资源内容2 使用心得3 资源地址 1 备考资源内容 资源内容包含三部分&#xff1a;教程书籍pdf、备考笔记、历年真题 可以结合“软考通”APP进行练习备考&#xff0c;无偿分享。 2 使用心得 上面的资源很多&#xff0c;可以先从复习笔记开…

Kotlin作用域函数it和with的使用场景

在 Kotlin 中&#xff0c;apply、run、with 使用 this&#xff0c;而 let 和 also 使用 it&#xff0c;这背后的原因是为了提供灵活性和代码清晰度。不同的作用域函数有不同的设计目的&#xff0c;选择使用 this 或 it 是为了适应不同的使用场景。以下是详细解释&#xff1a; …

如何提高工业交换机的电源功耗?

工业交换机的电源功耗是指在工作状态下所消耗的能量。随着工业自动化技术的发展&#xff0c;工业交换机在生产和制造领域中扮演着至关重要的角色。它们通过连接各种设备和系统&#xff0c;实现信息的传输和处理&#xff0c;提高生产效率和质量。然而&#xff0c;工业交换机的大…

高质量3d建模素材网站推荐,建议收藏!

很多设计师、建模师想要制作出高质量的3D模型&#xff0c;除了扎实的技巧和丰富的经验外&#xff0c;还需要大量的高质量素材。那么到哪里去找高质量3d建模素材网站呢?本文将给大家推荐一些&#xff0c;建议收藏! 1、建e网&#xff1a;建e网是一个专注于为建筑、室内、景观设计…

郑州大学人工智能简答

第一章 1. 什么是人工智能&#xff1f; 人工智能又称机器智能&#xff0c;主要研究人工的方法和技术开发智能机器或智能系统&#xff0c;以模仿、延伸和扩展人的智能、生物智能、自然智能&#xff0c;实现机器的智能行为。 人工智能的定义分四类&#xff1a; &#xff08;1&am…

ai语音智能电销机器人的运用有哪些,呼叫系统部署

现在智能电销机器人仍是很火&#xff0c;智能电销机器人的运用有哪些&#xff0c;到底有什么效果&#xff1f;智能电销机器人运用有哪些了&#xff0c;我们一起来看看 1、确保心情丰满。电销人员在作业中&#xff0c;会由于作业比较单调而导致心情烦躁&#xff0c;不能确保全天…

Java--乐观锁

乐观锁是一种并发控制机制&#xff0c;用于处理多个事务或线程对同一数据进行并发修改的问题。它假设多个事务或线程在操作数据时不会互相干扰&#xff0c;因此不在数据上加锁&#xff0c;而是在提交数据时检查数据是否被其他事务修改过。如果数据在提交前已经被其他事务修改&a…

政务网站(.gov)应选择什么样的SSL证书

政府网站作为公共服务的重要平台&#xff0c;承载着发布政策信息、提供在线服务、促进政民互动等功能&#xff0c;其数据安全性和网站可信度尤为重要。因此&#xff0c;选择合适的SSL证书对于政府网站而言&#xff0c;不仅是遵循网络安全法规的需要&#xff0c;也是提升公众信任…

【ai】trition:tritonclient yolov4:ubuntu18.04部署python client成功

X:\05_trition_yolov4_clients\01-python server代码在115上,client本想在windows上, 【ai】trition:tritonclient.utils.shared_memory 仅支持linux 看起来要分离。 【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行 client代码远程部署在ubuntu18.0…

微服务架构设计关键点总结

1.微服务架构设计通用语言 2.微服务架构组成 NFRS&#xff08;非功能性需求&#xff09;补充 3.DDD 省略 4.其他 Backend for frontend &#xff08;BFF&#xff09; pattern: 针对不同的客户端定义不同的api gateway API组合模式&#xff1a;一次性返回关联后的结果 eg:ap…

优思学院|精益生产3大特征、5个步骤、8大浪费、10大工具

前言 精益生产作为一种先进的生产管理理念&#xff0c;起源于丰田汽车公司的生产方式&#xff0c;其核心在于消除浪费、优化流程&#xff0c;以最少的投入获取最大的产出。本文将详细解析精益生产的三大特征、五个步骤、八大浪费和十大工具&#xff0c;帮助读者深入理解这一理…