【计算机网络篇】UDP协议

✅作者简介:大家好,我是小杨
📃个人主页:「小杨」的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. 超时重传:当发送端发送一个数据包后,如果在一定时间内没有收到确认消息,则认为数据包丢失或发生了错误。发送端需要启动超时重传机制,重新发送丢失的数据包。

结语

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

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

在这里插入图片描述


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

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

相关文章

序列模型和循环网络

Sequence Modeling and Recurrent Networks Sequence modeling tasks 在以往的模型中,各个输入之间是独立分布的 x ( i ) x^{(i)} x(i) 之间是相互独立的,同样输出 y ( i ) y^{(i)} y(i)之间也是相互独立的。 但是在序列模型中,输入输出是…

Windows电脑快速搭建FTP服务教程

FTP介绍 FTP(File Transfer Protocol)是一种用于在计算机网络上进行文件传输的标准协议。它提供了一种可靠的、基于客户端-服务器模型的方式来将文件从一个主机传输到另一个主机。在本文中,我将详细介绍FTP的工作原理、数据传输模式以及常见…

Fortinet数据中心防火墙及服务ROI超300%,Forrester TEI研究发布

近日,专注网络与安全融合的全球网络安全领导者 Fortinet(NASDAQ:FTNT)联合全球知名分析机构Forrester发布总体经济影响独立分析报告,详细阐述了在企业数据中心部署 FortiGate 下一代防火墙(NGFW&#xff09…

postgresql 分类排名

postgresql 分类排名 排名窗口函数示例CUME_DIST 和 NTILE 排名窗口函数 排名窗口函数用于对数据进行分组排名。常见的排名窗口函数包括: • ROW_NUMBER,为分区中的每行数据分配一个序列号,序列号从 1 开始分配。 • RANK,计算每…

基于YOLOv8模型的人体摔倒行为检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型的人体摔倒行为检测系统可用于日常生活中检测与定位摔倒行人,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数…

214、仿真-基于51单片机温度甲醛一氧化碳(co)电机净化报警Proteus仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&a…

Qt5开发环境-银河麒麟V10ARM平台

目录 前言1.源码下载2.编译安装2.1 安装依赖2.2 编译2.3 遇到的问题2.4 安装 3.编译qtwebengine3.1 安装依赖库3.2 编译3.3 遇到的问题3.4 安装 4.配置开发环境5.测试6.程序无法输入中文的问题总结 前言 近期因参与开发的某个软件需要适配银河麒麟v10arm 平台,于是…

C++之map的emplace与pair插入键值对用例(一百七十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

论文阅读 - Understanding Diffusion Models: A Unified Perspective

文章目录 1 概述2 背景知识2.1 直观的例子2.2 Evidence Lower Bound(ELBO)2.3 Variational Autoencoders(VAE)2.4 Hierachical Variational Autoencoders(HVAE) 3 Variational Diffusion Models(VDM)4 三个等价的解释4.1 预测图片4.2 预测噪声4.3 预测分数 5 Guidance5.1 Class…

小程序多图片组合

目录 子组件 index.js 子组件 index.wxml 子组件 index.wxss 父组件引用: 子组件:preview-image 子组件 index.js Component({properties: {previewData: {type: Array,default: [],observer: function (newVal, oldVal) {console.log(newVal, ol…

美国FDA医疗器械分类目录数据库查询

最近我们在接到FDA医疗器械咨询项目时,经常收到客户关于公司产品在美国FDA医疗器械认证中或是国内所属的产品类别以及如何查询产品分类的疑问。在这里,我将为大家解答这些问题,希望能够提供帮助! 美国FDA医疗器械产品目录中包含了…

Windows权限维持—自启动映像劫持粘滞键辅助屏保后门WinLogon

Windows权限维持—自启动&映像劫持&粘滞键&辅助屏保后门&WinLogon 1. 前置2. 自启动2.1. 路径加载2.1.1. 放置文件2.1.2. 重启主机 2.2. 服务加载2.2.1. 创建服务2.2.2. 查看服务2.2.3. 重启主机 2.3. 注册表加载2.3.1. 添加启动项2.3.2. 查看注册表2.3.3. 重启…

【JAVA】数组练习

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 数组练习 1. 数组转字符串2. 数组拷贝3.…

Android设备通过蓝牙HID技术模拟键盘实现

目录 一,背景介绍 二,技术方案 2.1 获取BluetoothHidDevice实例 2.2 注册/解除注册HID实例 2.3 Hid report description描述符生成工具 2.4 键盘映射表 2.5 通过HID发送键盘事件 三,实例 一,背景介绍 日常生活中&#xff0…

vue : 无法加载文件 F:\nodejs\vue.ps1,因为在此系统上禁止运行脚本。

报错信息如下 在使用Windows PowerShell输入指令查看版本时或者用脚手架创建vue项目时都有可能报错,报错信息如下:vue : 无法加载文件 F:\nodejs\vue.ps1,因为在此系统上禁止运行脚本 解决方案: 原因:因为Windows Po…

儿童学python语言能做什么,小孩学python到底好不好

大家好,小编来为大家解答以下问题,儿童学python语言能做什么,小孩学python课程需要多久,现在让我们一起来看看吧! 对于刚开始学习编程的孩子来说,图形化的Scratch是很好的启蒙语言。它用类似于拼图的模式&a…

自适应AI chatgpt智能聊天创作官网html源码

我们致力于开发先进的自适应AI智能聊天技术,旨在为用户提供前所未有的聊天体验。通过融合自然语言处理、机器学习和深度学习等领域的顶尖技术,我们的智能聊天系统能够准确理解用户的需求并给出相应的回应。 我们的自适应AI智能聊天系统具备以下核心特点…

软件需求-架构师之路(五)

软件需求 软件需求: 指用户 对系统在功能、行为、性能、设计约束等方面的期望。 分为 需求开发 和 需求管理 两大过程。 需求开发: 需求获取需求分析需求定义(需求规格说明书)需求验证:拉客户一起评审&#xff0c…

Golang 局部变量、全局变量 声明

文章目录 一、局部变量二、全局变量 一、局部变量 四种声明方式 多变量声明: package mainimport "fmt"//局部变量声明 func main() {//方法一: 声明一个变量和数据类型,不初始化值;默认值为0;var lvA intfmt.Printl…

1572. 矩阵对角线元素的和

题目描述: 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例: 解题思路: 同时求对角线和副对角线上元素的和再减去重合的元素 相关代码&#xf…