【探索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,一经查实,立即删除!

相关文章

6.二叉树.题目2

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

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

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

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

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

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

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

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

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

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

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

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

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

郑州大学人工智能简答

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

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

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

【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(非功能性需求)补充 3.DDD 省略 4.其他 Backend for frontend (BFF) pattern: 针对不同的客户端定义不同的api gateway API组合模式:一次性返回关联后的结果 eg:ap…

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

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

威纶通模板元件功能使用,重复调用模板界面

目录 STEP 1 定义模板范围STEP 2 创建地址STEP 3 新建模板STEP 4 调用模板STEP 5 仿真测试 STEP 1 定义模板范围 选择元件-模板窗口 定义模板窗口范围 这是将窗口20-30定义为模板窗口 STEP 2 创建地址 定义几个标签地址,这里关联的内部地址 如果使用外部PLC地址…

【知识学习】Unity3D——Surface Shaderlightning的概念及使用方法示例

Unity3D是一个广泛使用的跨平台游戏引擎,它提供了强大的图形渲染功能。在Unity中,Shader是用于控制图形渲染过程的程序,它们运行在GPU上,用于计算屏幕上每个像素的颜色。Surface Shader和Lighting是Unity Shader编程中非常重要的概…

Apache HBase概述(图文并茂~)

HBase概述 1. Why we need HBase ? 在大数据时代来临之前,我们通常依赖传统的关系型数据库(如RDBMS)来处理数据存储和管理。然而,随着数据量的急剧增长和数据结构的多样化,传统数据库系统开始显露出其局限性…

深入探讨极限编程(XP):技术实践与频繁发布的艺术

目录 前言1. 极限编程的核心原则1.1 沟通1.2 简单1.3 反馈1.4 勇气1.5 尊重 2. 关键实践2.1 结对编程2.1.1 提高代码质量2.1.2 促进知识共享2.1.3 增强团队协作 2.2 测试驱动开发(TDD)2.2.1 提升代码可靠性2.2.2 提高代码可维护性2.2.3 鼓励良好设计 2.3…

RabbitMQ实践——临时队列

临时队列是一种自动删除队列。当这个队列被创建后,如果没有消费者监听,则会一直存在,还可以不断向其发布消息。但是一旦的消费者开始监听,然后断开监听后,它就会被自动删除。 新建自动删除队列 我们创建一个名字叫qu…

ee trade:黄金投资是选择短线交易还是长线投资

黄金投资既可以通过短线交易获取快速收益,也可以采取长线投资策略获得稳健回报。本文将详细比较这两种策略的特点和适用性,为新手投资者提供参考。 短线交易 短线交易指在较短的时间内多次买卖以获取利润,通常交易周期为数日到数周。以下是…

66Uptime – 网站服务器 Cronjob 监控工具 v35.0.0扩展中文版安装

66Uptime是一款自托管、易于使用、轻量级且高性能的网站服务器和Cronjob监控工具。以其丰富的功能和便捷的管理方式,为用户提供了全方位的网站服务器和Cronjob监控解决方案: 主要功能: 监控网站服务器和Cronjob的运行状态,确保它们…