UDP:用户数据报协议 是什么

用户数据报协议英语:User Datagram Protocol,缩写为UDP),又称用户数据报文协议,是一个简单的面向数据报的传输层协议,正式规范为RFC 768。


在TCP/IP模型中,UDP为网络层以上和应用层以下提供了一个简单的接口。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加入了复用和数据校验(字段)。


UDP首部字段由4个部分组成,其中两个是可选的。各16bit的来源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以来源端口是可选的,如果来源端口不用,那么置为零。在目的端口后面是长度固定的以字节为单位的长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte。首部剩下地16bit是用来对首部和数据部分一起做校验和(Checksum)的,这部分是可选的,但在实际应用中一般都使用这一功能。


由于缺乏可靠性且属于非连接导向协议,UDP应用一般必须允许一定量的丢包、出错和复制粘贴。但有些应用,比如TFTP,如果需要则必须在应用层增加根本的可靠机制。但是绝大多数UDP应用都不需要可靠机制,甚至可能因为引入可靠机制而降低性能。流媒体(流技术)、即时多媒体游戏和IP电话(VoIP)一定就是典型的UDP应用。如果某个应用需要很高的可靠性,那么可以用传输控制协议(TCP协议)来代替UDP。


由于缺乏拥塞控制(congestion control),需要基于网络的机制来减少因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送者不能够检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。数据报拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中,增加主机拥塞控制,来减小这个潜在的问题。

典型网络上的众多使用UDP协议的关键应用一定程度上是相似的。这些应用包括域名系统(DNS)、简单网络管理协议(SNMP)、动态主机配置协议(DHCP)、路由信息协议(RIP)和某些影音流服务等等。


UDP的分组结构

UDP报头
偏移字节0123
字节 0 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031
00来源连接端口目的连接端口
432报文长度校验和


UDP报头包括4个字段,每个字段占用2个字节(即16个二进制位)。在IPv4中,“来源连接端口”和“校验和”是可选字段(以粉色背景标出)。在IPv6中,只有来源连接端口是可选字段。


报文长度
该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。实际上通过IPv4协议传输时,由于IPv4的头部信息要占用20字节,因此数据长度不可能超过65507字节(65,535 − 8字节UDP报头 − 20字节IP头部)。
在IPv6的jumbogram中,是有可能传输超过65535字节的UDP数据包的。依据RFC 2675,如果这种情况发生,报文长度应被填写为0。
校验和

校验和字段可以用于发现头部信息和数据中的传输错误。该字段在IPv4中是可选的,在IPv6中则是强制的。如果不使用校验和,该字段应被填充为全0。


UDP校验和计算


IPv4伪头部

当UDP运行在IPv4之上时,为了能够计算校验和,需要在UDP数据包前添加一个“伪头部”。伪头部包括了IPv4头部中的一些信息,但它并不是发送IP数据包时使用的IP数据包的头部,而只是一个用来计算校验和而已。

0 – 78 – 1516 – 2324 – 31
0来源地址
32目的地址
64全零协议名UDP报文长度
96来源连接端口目的连接端口
128报文长度检验和
160+ 
数据
 


IPv6伪头部

0 – 78 – 1516 – 2324 – 31
0来源地址
32
64
96
128目的地址
160
192
224
256UDP报文长
288全零下一个指针位置
320来源连接端口目的连接端口
352报文长校验和
384+ 
数据
 


转自**百科。

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

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

相关文章

随想录(程序员和收入)

距离上一次写博客已经很长时间了,大约过了三个星期。这三个星期发生了很多事情,这中间也有我自己的思考积累,也有工作上的变故。总之,自己想了很多,也得到了很多。每到这个时候,毕业生朋友们都在寻找工作&a…

iOS进阶之正则表达式

最近一直在弄正则表达式,于是在这里整理一下,便于日后查阅。 1、常用符号 ^:字符串的开始$:字符串的结束*:表示零个或若干个?:表示零个或一个:表示一个或若干个| :表示 或 操作. &a…

akshare分析涨停板股票数据

导入包,获取日期数据 import pandas as pd import numpy as np import akshare as ak #画图 import matplotlib.pyplot as plt #正确显示中文和负号 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False #处理时间 from dateutil.parser…

DNS(域名系统) 是什么

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。 它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 DNS使用TCP和UDP端口53。当前,对于每一级域…

《The Art of Readable Code》学习笔记(一)

放寒假回家有些颓废,就是不想看书。但是已经大三了,春节过后就要找实习了。哎,快乐的大学生活终于要过去了。 先从简单的书看起吧!在图书馆借了本《The Art of Readable Code》,就是教你咋写好优雅的代码的&#xff0c…

文件基本处理

1 打开文件,将文件句柄赋值给一个变量 2 拿句柄对文件进行操作 3 关闭文件 将一个文件第一行写道另外一个文件 f open("test","r",encoding"utf-8") # open找的是系统的编码 x f.readlines() f.close() f1 open("test1"…

C++ ofstream和ifstream详细用法

ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符&…

如何将JAR包发布到Maven中央仓库?

将jar包发布到Maven中央仓库(Maven Central Repository)&#xff0c;这样所有的Java开发者都可以使用Maven直接导入依赖&#xff0c;例如fundebug-java&#xff1a; <!-- https://mvnrepository.com/artifact/com.fundebug/fundebug-java --> <dependency><grou…

SSH、SSL与HTTPS

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 关于加密 在解释SSH、SSL与HTTPS协议之前我先介绍一下非对称加密协议。在1976年以前&#xff0c;所有的加密都采用对称加密&#xff0c…

北向资金运作akshare

import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline from pylab import mpl mpl.rcParams[font.sans-serif][SimHei] mpl.rcParams[axes.unicode_minus]False#获取交易日历 import datetime def get_cal_date(start,end):dates ak.to…

网络性能测试工具iperf详细使用图文教程【转载】

原文&#xff1a;https://www.cnblogs.com/yingsong/p/5682080.html 转载于:https://www.cnblogs.com/luo30zhao/p/10512042.html

代码审查:程序员内炼之道

摘要&#xff1a;“关注并弄清楚桥梁修建细节&#xff0c;否则你建起来的桥梁有可能坍塌。”代码审查更重要的是一种技术分享或者代码共享。程序员如何提升自我修炼之道&#xff0c;欢迎来支招。 代码审查更重要的是一种技术分享或者代码共享。在审查过程中&#xff0c;通过被…

扎实的基础是成功的法宝

转载链接&#xff1a;https://baijiahao.baidu.com/s?id1610187127874738836&wfrspider&forpc好基础是好成绩的根本,无论做任何事情,基本功的训练是成功的前提:“还没有学会走,就想学跑,那不行,肯定会摔跟头。”这是成功人士的经验之谈。要建成高楼大厦,地基必须打好。…

发送qq邮件

import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication# 写成了一个通用的函数接口&#xff0c;想直接用的话&#xff0c;把参数…

排序代码(python,c++) 及 基本算法复杂度

0.导语 本节为手撕代码系列之第一弹&#xff0c;主要来手撕排序算法&#xff0c;主要包括以下几大排序算法&#xff1a; 直接插入排序 冒泡排序 选择排序 快速排序 希尔排序 堆排序 归并排序 1.直接插入排序 【算法思想】 每一步将一个待排序的记录&#xff0c;插入到前面…

TCP/IP四层模型与OSI参考模型

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 TCP/IP四层模型&#xff1a; 1.链路层&#xff08;数据链路层/网络接口层&#xff09;&#xff1a;包括操作系统中的设备驱动程序、计算…

Metal日记:使用步骤指南

本文参考资料&#xff1a; juejin.im/post/5b1e8f… xiaozhuanlan.com/topic/04598… developer.apple.com/videos/play… github.com/quinn0809/G… cloud.tencent.com/developer/a… devstreaming-cdn.apple.com/videos/wwdc… Metal处理逻辑 无论是CoreImage、GPUImage框架&…

还驾驭不了4核? 别人已模拟出百万核心上的并行

摘要&#xff1a;不管是台式机还是笔记本&#xff0c;四核双核都已经不是新鲜的事了。计算机领域的你可能已经认识到了给电脑选配4核的处理器完全是一种浪费&#xff0c;因为大多数的程序都不支持多核心的并行处理。然而斯坦福的计算机科学家最近公布&#xff0c;他们已经模拟出…

docker安装并运行ubuntu

拉取镜像 docker pull dorowu/ubuntu-desktop-lxde-vnc 运行容器&#xff1a; docker run -p 6080:80 dorowu/ubuntu-desktop-lxde-vnc 之后就可以http://localhost:6080/

Django内置权限扩展案例

当Django的内置权限无法满足需求的时候就自己扩展吧~ 背景介绍 overmind项目使用了Django内置的权限系统&#xff0c;Django内置权限系统基于model层做控制&#xff0c;新的model创建后会默认新建三个权限&#xff0c;分别为&#xff1a;add、change、delete&#xff0c;如果给…