【计算机网络篇】UDP协议

news2024/9/23 13:24:26

✅作者简介:大家好,我是小杨
📃个人主页:「小杨」的csdn博客

🐳希望大家多多支持🥰一起进步呀!


UDP协议

1,UDP 简介

UDP(User Datagram Protocol)是一种无连接的传输层协议,它提供了一种简单的、不可靠的数据传输服务。

UDP 提供了不面向连接的通信,且不对传送的数据报进行可靠的保证,适用于一次传送少量的数据,不适用于传输大量的数据。


2,UDP 特点

UDP 的主要特点为无连接,不可靠传输,面向数据报,全双工通信。下面对这些特点进行逐一解释:

1,无连接:UDP是一种无连接的传输协议,这意味着在通信之前不需要进行连接建立的过程。发送方直接向目标主机发送数据报,接收方无需事先建立连接就能接收数据。

2,不可靠传输:UDP不保证数据传输的可靠性。它将数据划分为独立的数据报,并通过网络发送,但不提供丢包重传、数据校验和错序整理等机制。如果在传输过程中发生数据丢失、损坏或重复,UDP协议不会进行任何处理,这使得UDP的传输不可靠。

3,面向数据报:UDP以数据报(Datagram)为单位进行通信。每个UDP数据包是一个独立的数据报,具有自己的报头,其中包含源端口号、目标端口号和数据长度等信息。这使得UDP的通信单位独立,不受其他数据报的影响,独立地发送和接收数据。

4,全双工通信:UDP支持全双工通信,允许发送方和接收方同时发送和接收数据。发送方可以随时发送数据报,而接收方可以在任何时间接收数据报,而不受发送方的限制。这使得UDP在实现实时双向通信时具有优势。


3,UDP 段格式

UDP协议的数据包(也称为UDP报文)由两部分组成:UDP头部和UDP数据部分。

UDP 协议段格式示意图:

UDP 数据包中的各字段代表含义如下:

1,源端口号(Source Port):16位字段,表示发送方的端口号,用于标识发起UDP通信的应用程序的发送端口。

2,目标端口号(Destination Port):16位字段,表示接收方的端口号,用于标识接收方应用程序的接收端口。

3,长度(Length):16位字段,表示UDP报文的长度,包括UDP头部和数据部分的总长度。

4,校验和(Checksum):16位字段,用于检测UDP报文在传输过程中是否发生错误或被篡改。

5,数据区(Data):可选字段,用于携带实际的应用数据内容。

UDP 数据包中的注意事项:

1,UDP协议的首部固定为8个字节,即源端口、目的端口、长度和校验和,其中校验和字段为可选字段,可以不包含校验和。

2,UDP报文长度包括UDP头部和数据部分,最大长度为16位,UDP数据报的最大长度被限制为65535 B ,也就是最多只能传输64KB的数据。如果应用程序需要传输更大的数据,则需要将数据进行分片,并在应用层协议中进行重组,或者采用TCP协议。

3,UDP首部中的源端口和目的端口用于标识发送方和接收方的应用程序或服务。这两个字段共同决定了数据包的传输路径,以确保正确地将数据包传送到相应的应用程序或服务。


4,UDP 扩展知识


拓展:端口号介绍

端口号是在传输层中使用的概念,用于标识不同应用程序或服务的网络进程。

在传输层协议中,头部中的源端口和目的端口用于标识发送方和接收方的应用程序或服务。

这两个字段共同决定了数据包的传输路径,以确保正确地将数据包传送到相应的应用程序或服务。

端口号是一个16比特(2字节)的无符号整数,代表的取值范围为0 ~ 65535,在该范围内被划分3部分,分别为:

  1. 知名端口:从0到1023的端口号被指定为知名端口,用于一些广泛使用的标准服务。
  2. 注册端口:从1024到49151的端口号被指定为注册端口,用于一些用户注册的应用程序或服务。
  3. 动态或私有端口:从49152到65535的端口号是动态或私有端口,也称为临时端口。

下面是一些常见的知名端口号的定义和用途:

  • 22:SSH端口,用于安全外壳协议,用于远程登录和安全文件传输。
  • 53:DNS端口,用于域名系统解析域名到IP地址。
  • 80:HTTP端口,用于超文本传输协议,用于Web浏览器和服务器之间的通信。
  • 143:IMAP端口,用于Internet消息访问协议,用于电子邮件客户端与服务器之间的通信。
  • 443:HTTPS端口,用于安全的超文本传输协议,通过SSL/TLS加密的HTTP通信。
  • 3306:MySQL数据库服务器的默认端口号。

进程与端口号之间的关系:

一个进程可以绑定多个端口号,但是一个端口号不能被多个进程绑定。


拓展:校验和字段介绍

校验和的作用是用于验证UDP数据包的完整性,以确保数据在传输过程中没有被篡改或损坏。

校验和的作用过程:发送方在发送UDP数据包时,会计算数据包的校验和(校验和的计算涉及UDP头部和数据部分),并将校验和值存储在校验和字段中。接收方在接收到UDP数据包后,会重新计算数据包的校验和,并将计算得到的校验和值与接收到的校验和字段进行比对。如果两者一致,则说明数据包在传输过程中没有损坏;如果两者不一致,则说明数据包可能在传输过程中发生了错误。

校验和字段为可选字段,在UDP协议中是可以不选,是否使用校验和可以根据应用程序的需求和对数据完整性的要求来决定。

  • 对于实时性要求高、数据可靠性要求较低的应用,可以选择不使用校验和以减少开销和延迟。
  • 对于对数据的可靠性要求较高的应用,可以自行添加校验和机制来保证数据的完整性。

经典问题:基于传输层UDP协议,来实现一个可靠传输,应该如何设计?

问题引入:虽然校验和可以提供一定程度的数据完整性检查,但是因为UDP本身是一种不可靠传输协议,即使检测到错误或数据篡改,UDP也不会进行任何恢复操作,具体就是不提供丢包重传、数据校验和错序整理等机制。

若想基于传输层UDP协议,来实现一个可靠传输,那就是从下面这几个方面来考虑:

  1. 数据包序列号:为每个发送的数据包分配一个唯一的序号。序号可以是一个递增的数字或其他唯一标识符,接收方根据序列号对接收到的数据包进行排序和重组,以确保数据包按正确的顺序传递给应用层。
  2. 确认应答机制:接收端需要向发送端发送确认消息以确认已收到的数据包。发送端在收到确认消息后才能发送下一个数据包。如果发送端没有收到确认消息,则会启动超时重传机制。
  3. 超时重传:当发送端发送一个数据包后,如果在一定时间内没有收到确认消息,则认为数据包丢失或发生了错误。发送端需要启动超时重传机制,重新发送丢失的数据包。

结语

这就是本期博客的全部内容啦!如果有什么其他的问题无法自己解决,可以在评论区留言哦!

最后,如果你觉得这篇文章写的还不错的话或者有所收获的话,麻烦小伙伴们动动你们的小手,给个三连呗(点赞👍,评论✍,收藏📖),多多支持一下!各位的支持是我最大的动力,后期不断更新优质的内容来帮助大家,一起进步。那我们下期见!

在这里插入图片描述


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

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

相关文章

集成DTM实现跨语言分布式事务V1.0

集成DTM实现跨语言分布式事务V1.0 简介 DTM是一款开源的分布式事务管理器,解决跨数据库、跨服务、跨语言栈更新数据的一致性问题。 通俗一点说,DTM提供跨服务事务能力,一组服务要么全部成功,要么全部回滚,避免只更新…

Qt编程基础 | 第六章-窗体 | 6.5、QTableWidget 使用过程注意的问题

一、QTableWidget 使用过程注意的问题 1、添加行时要先设置行数 往表格重添加行时&#xff0c;要先设置行数&#xff0c;不然添加的内容看不到&#xff0c;如下&#xff1a; void QCustomWidget::InitTableContent() {for (int row 0; row < m_rowData.size(); row ){// 注…

DAY4,ARM(用c语言点亮LED灯,封装库代码,软件编程控制硬件)

---gpio.h头文件--- #ifndef __LED_H__ #define __LED_H__//1RCC_MP_AHB4ENSETR寄存器封装 #define RCC_MP_AHB4ENSETR (*(volatile unsigned int*)0x50000a28)//2GPIO封装结构体 typedef struct {volatile unsigned int MODER;volatile unsigned int OTYPER;volatile unsigne…

Python系统学习1-9-类二之MVC框架

一、模型说明 View视图:处理界面逻辑,输入输出 Controller控制器:处理核心逻辑,存储计算 Model模型:将多个变量组合为一种类型 二、注意事项 类外通过自定义对象名调用 类中通过self调用 """疫情信息管理系统学习MVC的软件架构View Controller Model视…

汇川脉冲伺服SV630P常用参数设置(博途PLC脉冲输出控制)

有关博途PLC脉冲输出控制功能块详细介绍,请查看下面博客链接: 博途1200PLC轴控功能块(脉冲轴)_博图 轴控块_RXXW_Dor的博客-CSDN博客STRUCT// 轴使能// 轴正向点动// 轴反向点动// 轴回原// 轴复位// 轴暂停// 轴快速停机// 轴绝对定位// 轴相对定位// 轴匀速运行// 修改轴参…

Dubbo基础学习

目录 第一章、概念介绍1.1&#xff09;什么是RPC框架1.2&#xff09;什么是分布式系统1.3&#xff09;Dubbo概述1.3&#xff09;Dubbo基本架构 第二章、服务提供者(直连)2.1&#xff09;目录结构和依赖2.2&#xff09;model层2.3&#xff09;service层2.4&#xff09;resources…

Java课题笔记~ 日期处理

2.8 日期处理 2.8.1 日期注入 日期类型不能自动注入到方法的参数中。需要单独做转换处理。 使用DateTimeFormat注解&#xff0c;需要在springmvc.xml文件中添加mvc:annotation-driven/标签。 &#xff08;1&#xff09;在方法的参数上使用DateTimeFormat注解 RequestMappi…

浅谈SPA

1. 基本概念 ● SPA(single-page application) 单页应用,默认情况下我们编写Vue,React都只有一个html页面并且提供一个挂载点,最终打包后会在此页面中引入对应的资源.(页面渲染全部由js动态进行渲染).切换页面时通过监听路由变化,渲染对应的页面(client side rendering,客户端…

探秘分布式大数据:融合专业洞见,燃起趣味火花,启迪玄幻思维

文章目录 一 数据导论二 大数据的诞生三 大数据概论3.1 大数据的5V特征3.2 大数据的工作核心 四 大数据软件生态4.1 数据存储软件4.2 数据计算软件4.3 数据传输软件 五 Apache Hadoop概述5.1 Apache Hadoop框架5.2 Hadoop的功能5.3 Hadoop的发展5.4 Hadoop发行版本 一 数据导论…

使用Python批量将Word文件转为PDF文件

说明&#xff1a;在使用Minio服务器时&#xff0c;无法对word文件预览&#xff0c;如果有需要的话&#xff0c;可以将word文件转为pdf文件&#xff0c;再存储到Minio中&#xff0c;本文介绍如果批量将word文件&#xff0c;转为pdf格式的文件&#xff1b; 安装库 首先&#xff…

由于找不到msvcp140.dll无法继续执行代码是什么原因

使用计算机过程中&#xff0c;有时会遇到一些错误提示&#xff0c;其中之一就是关于msvcp140.dll文件丢失或损坏的错误。msvcp140.dll是Windows系统中非常重要的文件&#xff0c;是Microsoft Visual C Redistributable中动态链接库的文件&#xff0c;如果缺失或损坏&#xff0c…

Git 入门到熟悉

一、版本控制 1.1 什么是版本控制 版本控制&#xff08;Revision control&#xff09;是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史&#xff0c;方便查看更改历史记录&#xff0c;备份以便恢复以前的版本的软件工程技术。简单说就是用于管理多人协同开…

管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——三段论——第二节 规则

文章目录 第二节 三段论-规则题-三段论-规则-补前提-“特推特&#xff0c;否推否&#xff0c;两特两否无结论”得前提是“有的/所有”→所有概念出现两次→中项要周延。题-三段论-规则-补前提-“特推特&#xff0c;否推否&#xff0c;两特两否无结论”得前提是“有的/所有”→…

css 文字排版-平铺

序&#xff1a; 1、表格的宽度要有&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 2、容器不能是display:inline 3、扩展---》node全栈框架 代码 text-align-last: justify; width: 70px; display: inline-block; 主要是用于表单左侧文字排序&#xff01;

AI如何看待能力,学历,文凭

1 假设&#xff1a; {文凭}⊂{学历}⊂{能力} 2 证明&#xff1a; 首先&#xff0c;我们需要明确这些集合的定义和关系。 {能力}是一个包含各种能力的集合&#xff0c;例如学习能力、沟通能力、创新能力、领导能力和专业技能等。 {学历}是一个包含各种学历的集合&#xff0c…

ps安装找不到msvcp140.dll,分享msvcp140.dll丢失三个修复方法

当在安装PS&#xff08;Adobe Photoshop&#xff09;时遇到找不到msvcp140.dll的错误提示时&#xff0c;我首先感到有些困惑&#xff0c;因为这个错误可能会影响我使用某些程序或软件。但是&#xff0c;通过尝试不同的修复方法&#xff0c;我发现问题可以得到解决。 首先缺失ms…

Linux多线程【初识线程】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、什么是线程&#xff1f;1.1、基本概念1.2、线程理解1.3、进程与线程的关系…

[oneAPI] Neural Style Transfer

[oneAPI] Neural Style Transfer oneAPINeural Style Transfer特殊环境定义使用包加载数据Neural Style Transfer模型与介绍训练过程结果 比赛&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI&#xff1a;https://devcl…

1609.奇偶数

目录 一、题目 二、代码 三、完整测试代码 一、题目 1609. 奇偶树 - 力扣&#xff08;LeetCode&#xff09; 二、代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0),…