什么是UDP?

news2024/11/30 18:48:42

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.coloradmin.cn/o/2059549.html

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

相关文章

汽车线束智能制造:MES系统与工艺深度融合的革新之路

万界星空科技汽车线束工厂MES系统解决方案是针对线束制造行业特定需求而设计的一套集成化管理系统,旨在提高生产效率、优化资源配置、确保产品质量并增强企业竞争力。 一、汽车线束制造工艺 汽车线束,作为连接汽车各个电子部件的桥梁,承载着…

论文:NeRF on the go:Exploiting Uncertainty for Distractor-free NeRFs in the Wild

随时随地使用NeRF。本文的目标是利用在野外随意捕捉的图像序列或视频作为输入,训练一个用于静态场景的NeRF,并有效地移除场景中的所有动态元素(如汽车、电车、行人等),即干扰物。与现有的方法如NeRF-W [27]和RobustNeR…

python依赖包安装失败的解决办法(适用于conda安装)

版权声明:本文为博主原创文章,如需转载请贴上原博文链接:python依赖包安装失败的解决办法(适用于conda安装)-CSDN博客 前言:这个问题之前一直困扰着我,因为最近要升级Anaconda-Navigator&#x…

代码随想录算法训练营第十八天(二叉树 六)

力扣题部分: 530.二叉搜索树的最小绝对差 题目链接:. - 力扣(LeetCode) 题面: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 思路: 写关于二…

第T11周:优化器对比实验

>- **🍨 本文为[🔗365天深度学习训练营]中的学习记录博客** >- **🍖 原作者:[K同学啊]** 本次主要是探究不同优化器、以及不同参数配置对模型的影响 🚀我的环境: 语言环境:Python3.11.…

CSS 布局

CSS 页面布局技术允许我们拾取网页中的元素,并且控制它们相对正常布局流、周边元素、父容器或者主视口/窗口的位置。布局有一下几种 正常布局流display属性弹性盒子网格浮动定位CSS 表格布局多列布局 每种布局都有它们的用途,各有优缺点,相…

CSS伪类选择器和伪元素

伪类(Pseudo-classes) 伪类用于定义元素的特殊状态。它们被添加到选择器中以指定元素在其生命周期的特定状态下的样式。伪类不创建新的文档内容,也不创建新的文档树中的元素。相反,它们提供了一种方法来根据元素的状态来应用样式…

统信UOS系统连接打印机操作步骤

系统版本 操作步骤 首先点击开始菜单 搜索框输入打印,点击打印管理器 点击图下所示的号 按照图下所示,手动查找->输入打印机的ip地址->点击查找 等到如图下所示,出现打印机的时候,选择打印机,然后选择驱动&…

嵌入式AI快速入门课程-K510篇 (第三篇 环境搭建及开发板操作)

第三篇 环境搭建及开发板操作 文章目录 第三篇 环境搭建及开发板操作1.配置VMware使用桥接网卡1.1 vmware设置1.2 虚拟网络编辑器设置 2.安装软件2.2 安装 Windows 软件2.3 使用MobaXterm远程登录Ubuntu2.4 使用FileZilla在Windows和Ubuntu之间传文件2.5编程示例:Ub…

迎接“云+AI”智算时代!生态案例分论坛议程一览 | 2024 龙蜥大会

2024 龙蜥操作系统大会由中国计算机学会开源发展委员会、中关村科学城委员会、海淀区委网信办、中国开源软件推进联盟指导,龙蜥社区主办,阿里云、中兴通讯、Intel、浪潮信息、Arm、中科方德等 24 家理事单位共同承办,主题为“进化重构赴未来”…

海南云亿商务咨询有限公司助力抖音商家破浪前行

在当下这个短视频与直播电商风起云涌的时代,抖音作为头部平台,正以其庞大的用户基数和强大的算法推荐机制,成为众多品牌与商家竞相追逐的新蓝海。而在这片波澜壮阔的海洋中,海南云亿商务咨询有限公司如同一艘稳健的航船&#xff0…

软件测试 —— JMeter 参数化4种方式!

一、JMeter参数化简介 1.JMeter参数化的概念 当使用JMeter进行测试时,测试数据的准备是一项重要的工作。若要求每次迭代的数据不一样时,则需进行参数化,然后从参数化的文件中来读取测试数据。 参数化:是自动化测试脚本的一种常…

【Prettier】代码格式化工具Prettier的使用和配置介绍

前言 前段时间,因为项目的prettier的配置和eslint格式检查有些冲突,在其prettier官网和百度了一些配置相关的资料,在此做一些总结,以备不时之需。 Prettier官网 Prettier Prettier 是一种前端代码格式化工具,支持ja…

从ESG尽职调查、ESG立法与ESG诉讼谈ESG营销(01)

哈佛大学2024年中回顾全球ESG发展近况 作者:哈佛大学 编辑:数字化营销工兵 2024年上半年,环境、社会和治理(ESG)问题以及对方法的不同意见继续成为全球头条新闻。今年年初,公司及其利益相关者在ESG的支持…

AppenTalk | 不止于赛场,巴黎奥运会上的中国AI科技

当地时间8月11日,第33届夏季奥林匹克运动会在巴黎法兰西体育场落下帷幕。本届奥运会,中国体育代表团收获令人振奋的40金27银24铜总计91枚奖牌,其中金牌数更是创下了境外参加奥运会的最佳成绩。 在中国健儿闪耀奥运赛场时,中国AI科…

Transformer系列-4丨DETR模型和代码解析

1 前言 往期的文章中,笔者从网络结构和代码实现角度较为深入地和大家解析了Transformer模型、Vision Transformer模型(ViT)以及BERT模型,其具体的链接如下: 基础Transformer解析 ViT模型与代码解析 BERT模型与代码解…

嵌入式AI快速入门课程-K510篇 (第七篇 系统BSP开发)

第七篇 系统BSP开发 文章目录 第七篇 系统BSP开发1. 嵌入式Linux系统介绍嵌入式Linux系统组成产品形态嵌入式芯片启动流程Linux系统Linux系统框架嵌入式编译环境 2.嵌入式Linux开发准备手册文档开发工具配套硬件工程源码 3.嵌入式Linux开发组成概述编译工具链什么是工具链什么是…

[Linux#43][线程] 死锁 | 同步 | 基于 BlockingQueue 的生产者消费者模型

目录 1. 死锁 解决死锁问题 2. 同步 2.1 条件变量函数 cond 2.2 条件变量的使用: 3.CP 问题--理论 4. 基于 BlockingQueue 的生产者消费者模型 1. 基本概念 2.BlockQueue.hpp 基本设置: 生产关系控制: 消费关系的控制 ⭕思考点 …

公开整理-全国各省AI算力数据集(2000-2024年)

数据来源:本数据来源于,根据显卡HS编码筛选统计后获得时间跨度:2000-2024年数据范围:省级层面数据指标: 由于未发布2015至2016年的数据,因此该年份数据存在缺失。下表仅展示了部分指标及数据 年份 省份…

Mac apache 配置

命令 sudo apachectl -v //查看apache 版本 sudo apachectl -k start //启动apache sudo apachectl -k stop //停止apache sudo apachectl -k restart //重启apache配置 apache 的配置在 /etc/apache2/httpd.conf 默认情况下httpd.conf 为锁定状态,无法编辑 使用…