什么是UDP?

UDP是工作在OSI(开放系统互连,Open Systems Interconnection)模型中传输层的协议。它使用IP作为底层协议,是为应用程序提供一种以最少的协议机制向其他程序发送消息的协议。其主要特点是无连接,不保证可靠传输和面向报文。RFC 768为IETF(互联网工程部,Internet Engineering Task Force)提供的UDP标准。

协议简介

UDP(User Datagram Protocol,用户数据报协议)是在一组互连的计算机网络环境中提供分组交换计算机通信的数据报模式。该协议假定使用IP作为底层协议,按照OSI模型工作在传输层。UDP为应用程序提供了一种以最少的协议机制向其他程序发送消息的过程 。该协议是面向事务的,不保证传递和重复保护。需要有序、可靠地传输数据流的应用程序应使用传输控制协议 (TCP)。

报文格式

首部格式

用户数据报UDP有两个字段,数据字段和首部字段。首部字段有8个字节,由四个字段组成,每个字段的长度都是2字节 。各字段意义如下:

1. 源端口(Source Port)源端口号,在要求对方回信时选用,不要求时可使用全0。

2. 目的端口 (Destination Port)目的端口号。这在终点交付报文时必须使用。

3.长度(Length)UDP用户数据报的长度,包括首部和数据,其最小值是8(仅有首部)。

4. 检验和(Checksum) 若检验和用于检测UDP用户数据包在传输中是否有错,如果出错则将报文丢弃。计算检验和时,首先将全零放入检验和字段,再把伪首部以及UDP用户数据报看成是由许多16位字串接起来的。若UDP用户数据包的数据部分不是偶数个字节,则要跳入一个全零字节(此字节不发送),然后按二进制反码计算出这些16位字的和 。

伪首部(Pseudo Header)

在计算检验和时,要在UDP用户数据报之前增加12个字的伪首部。所谓伪首部是因为这种伪首部并不是真正的首部,只是在计算检验和时,临时添加在UDP用户数据报前面,得到一个临时的UDP用户数据报 。检验和就是按照这个临时的UDP用户数据报来计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和。

伪首部包含如下部分 :

1. 源地址(source address)

2.目的地址(destination address)

3. 置零域(zero)

4.协议字段(protocol)

5.UDP长度(UDP length)

主要特点

(1)无连接。UDP在发送数据前不进行连接,发送结束时也没有连接可以释放,减少了开销和发送数据之前的时延。

(2)尽最大努力交付。UDP不保证可靠交付,因此主机不维持复杂的连接状态。

(3)面向报文。发送方的UDP对应用程序交下来的报文,再添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。接收方的UDP对IP层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程 。UDP一次交付完整的报文,因此应用程序必须选择合适大小的报文。

(4)无拥塞控制。很多实时应用(如IP电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许网络发生拥塞时丢失一些数据,却不允许数据有太大的时延,UDP正好适合这种要求 。

(5)支持一对一、一对多、多对一和多对多的交互通信。

(6)首部开销小。UDP只有8个字节的首部。

协议对比

UDP是无连接的协议,也不保证可靠交付,只在IP数据报服务至上增加了很少的功能,主要是复用和分用以及差错检测的功能。这适用于要求源主机以恒定速率发送数据,允许网络拥塞时丢失数据,却不允许数据有太大时延的实时应用。

TCP则是面向连接的传输层协议,提供可靠的交付服务。TCP把连接作为最基本的抽象,连接的端点叫做套接字(socket)。每一条TCP连接唯一地被通信两端的两个端点(即套接字对 socket pair)所确定,即每一条TCP连接只能是点对点的 。应用程序在使用TCP协议之前必须先建立TCP连接,在传送数据完毕后必须释放已经建立的TCP连接。TCP提供全双工通讯,允许通信双方的应用进程在任何时候都能发送数据,TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。与面向报文的UDP不同,TCP是面向字节流的。这里的“流”(stream)指的是流入到进程或者从进程流出的字节序列 。虽然应用程序和TCP的交互是一次一个大小不等的数据块,但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流,并不知道所传送的字节流的含义。TCP适用于需要有序、可靠地传输数据流的应用程序。

接口与应用

用户界面应允许创建新的接收端口,在接收端口上执行操作,以返回数据以及源端口和源地址的指示。同时允许发送数据报,指定要发送的数据、源端口和目标端口以及地址。

UDP模块必须能够从首部确定源地址和目标地址以及协议字段。一个可能的UDP/IP接口将返回整个数据报,包括所有首部,以响应接收操作。这样的接口还允许UDP将带有首部的完整互联网数据报传递给要发送的IP。IP将验证特定字段的一致性并计算首部校验和。

UDP主要应用于协议的主要用途是 Internet Name Server和简单文件传输,其协议号为17。

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

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

相关文章

[机器学习]--线性回归算法

线性回归算法原理 线性关系在生活中有很多案例: 摄氏度和华氏度的转化: F C ⋅ 9 5 32 F C \cdot\frac{9}{5}32 FC⋅59​32学科最终成绩的计算: 最终成绩 0.3 \times 平时成绩 0.7 \times 期末成绩 线性回归(Linear regression)就是利用回归函数对一个或多个自变量…

Qt中英文支持

目的 就是想让QT编的软件支持中英文。 情况 1、首先配置项目的pro文件: 这样就会生成相应的翻译配置文件,当前是: translate1_cn.ts:中文的配置文件,因为一般默认就是中文,所以一般中文的翻译文件是不需…

小程序商城被盗刷,使用SCDN安全加速有用吗?

在电子商务蓬勃发展的今天,小程序商城因其便捷性和灵活性成为商家和消费者的新宠。然而,随着其普及,小程序商城的安全问题也日益凸显,尤其是盗刷现象频发,给商家和用户带来了巨大损失。面对这一挑战,是否可…

虚拟机安装centos7-桥接模式

1、打开虚拟机,点击文件,选择新建虚拟机 2、选择典型,点击下一步 3、选择稍后安装操作系统,点击下一步 4、选择系统类型及版本,点击下一步,因centos7是Linux操作系统,且是64位的,所以…

主存编址例题

知识点 存储单元个数最大地址-最小地址1 存储单元个数BFFFFH-80000H13FFFFH140000H 这是个十六进制,转换为十进制4*16^44*2^4^44*2^164*2^6*2^10字节 1kb1024字节2^10字节 因此可以转换为4*2^6kb256kb 1byte8bit,1个字节8比特 16k*4bit16*1024*0.5…

高性能web服务器

目录 一、简介 (一)nginx-高性能的web服务端 (二)用户访问体验 二、I/O模型 (一)概念 (二)网络I/O模型 (三)阻塞型 I/O 模型 (四&#xf…

数据库MySQL之事务、索引

目录 1.概述 2.事务 3.索引 3.1索引结构 3.2操作语法 1.概述 场景:假如我们需要解散教学部,那么该部门下的所有员工都需要删除。如果教学部成功删除了,但员工出于某些原因(比如SQL语句写错了等)并没有删除,此时就会出现数据…

Unity Dots学习 (一)

先学习怎么使用,再研究底层代码。Dots大家都有所耳闻。一直没时间研究,最近研究一下 看上图可知,哪怕是CPU的第三级缓存也比内存要快2-5倍。 资料: 《DOTS之路》第零节——前导课(1)——DOTS的5W1H问题_哔哩哔哩_bilibili 《DOT…

保姆级-C#与Halcon的窗体界面展示阈值分割图像教程(机器视觉保姆级教程)

经历上一篇《零基础小白实现C#调用halcon dll的过程,并测试程序证明C#halcon联合开发成功》的发布已经过去三天啦, 零基础小白实现C#调用halcon dll的过程,并测试程序证明C#halcon联合开发成功-CSDN博客 在友友的催更下,我将用我…

人脸识别设计

总体思路 人脸识别使用的算法思路为:首先,定位一张图像中所有的人脸位置;其次,对于同一张脸,当光线改变或者朝向方位改变时,算法还能判断是同一张脸;然后找到每一张脸不同于其他脸的独特之处&a…

【秋招笔试】8.18大疆秋招(第一套)-后端岗

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

Linux安装redis和使用redisDesktop连接

目录 Linux安装redis及启动 第一步:下载redis压缩包 第二步:下载gcc-c 第三步:解压redis文件 第四步:进入redis-4.0.0.0目录执行make命令 第五步:安装redis到redis目录 第五步:复制redis.conf配置文件…

std::wcout,std::cout控制台输出中文乱码,std::cerr字符串的字符无效

系列文章目录 文章目录 系列文章目录前言一、中文乱码原因二、解决方法1.如果是windos11下,使用英文语言,需要加以下代码2.如果是中文语言只需要一行关键代码3.如果在异常处理中显示宽字符中文4.完整代码如下:实现文件测试代码输出打印 前言 …

Java异常捕获与处理:深入理解与实践

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

SAM 2——视频和图像实时实例分割的全新开源模型

引言 源码地址:https://github.com/facebookresearch/segment-anything-2 过去几年,人工智能领域在文本处理的基础人工智能方面取得了显著进步,这些进步改变了从客户服务到法律分析等各个行业。然而,在图像处理方面,我…

高考志愿智能推荐系统-计算机毕设Java|springboot实战项目

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

数据采集监控平台内置SPC系统 提供统计控制功能

数据采集监控平台为了能多方位的为工作人员提供可视化界面,而不仅仅是采集显示这种单一功能,内置多种配置,而SPC系统就是提供统计控制功能的一个重要系统。 数据采集监控平台内置的统计过程控制(Statistical Process Control, SPC…

Python3 运算符,数据类型,基本方法,学习

注意:部分代码直接复制菜鸟教程,在本地编辑器里运行 运算符 算术运算符 #!/usr/bin/python3a 21 b 10 c 0c a b print ("1 - c 的值为:", c)c a - b print ("2 - c 的值为:", c)c a * b print (&quo…

【电子数据取证】AES解密侵犯隐私案件数据

关键词:电子数据取证、手机取证、计算机取证 一、前言 在大数据时代,数据安全和隐私保护的重要性愈发显著。近期,我们遇到一起侵犯公民隐私的案件,其复杂性与敏感性要求我们采取更为精细和专业的技术手段。在还原涉案数据库至本地…

【JAVA入门】Day24 - 排序算法

【JAVA入门】Day24 - 排序算法 文章目录 【JAVA入门】Day24 - 排序算法一、冒泡排序二、选择排序三、插入排序四、快速排序4.1 递归4.2 快速排序 排序,是把混乱的数据排成从小到大或从大到小。 排序一共有十种左右,它们是:冒泡排序、…