UDP数据报

一、UDP的概述(User Datagram Protocol,用户数据报协议)

UDP是传输层的协议,功能即为在IP的数据报服务之上增加了最基本的服务:复用分用以及差错检测

  • UDP提供不可靠服务,具有TCP所没有的优势:
  • UDP无连接,时间上不存在建立连接需要的时延。空间上,TCP需要在端系统中维护连接状态,需要一定的开销。此连接装入包括接收和发送缓存,拥塞控制参数和序号与确认号的参数。UCP不维护连接状态,也不跟踪这些参数,开销小。空间和时间上都具有优势。

    举个例子:

    DNS如果运行在TCP之上而不是UDP,那么DNS的速度将会慢很多。
    HTTP使用TCP而不是UDP,是因为对于基于文本数据的Web网页来说,可靠性很重要。
    同一种专用应用服务器在支持UDP时,一定能支持更多的活动客户机。

    分组首部开销小**,TCP首部20字节,UDP首部8字节。

  • UDP没有拥塞控制,应用层能够更好的控制要发送的数据和发送时间,网络中的拥塞控制也不会影响主机的发送速率。某些实时应用要求以稳定的速度发送,能容 忍一些数据的丢失,但是不能允许有较大的时延(比如实时视频,直播等)
  • UDP提供尽最大努力的交付,不保证可靠交付。所有维护传输可靠性的工作需要用户在应用层来完成。没有TCP的确认机制、重传机制。如果因为网络原因没有传送到对端,UDP也不会给应用层返回错误信息
  • UDP是面向报文的,对应用层交下来的报文,添加首部后直接乡下交付为IP层,既不合并,也不拆分,保留这些报文的边界。对IP层交上来UDP用户数据报,在去除首部后就原封不动地交付给上层应用进程,报文不可分割,是UDP数据报处理的最小单位。正是因为这样,UDP显得不够灵活,不能控制读写数据的次数和数量。比如我们要发送100个字节的报文,我们调用一次sendto函数就会发送100字节,对端也需要用recvfrom函数一次性接收100字节,不能使用循环每次获取10个字节,获取十次这样的做法。
  • UDP常用一次性传输比较少量数据的网络应用,如DNS,SNMP等,因为对于这些应用,若是采用TCP,为连接的创建,维护和拆除带来不小的开销。UDP也常用于多媒体应用(如IP电话,实时视频会议,流媒体等)数据的可靠传输对他们而言并不重要,TCP的拥塞控制会使他们有较大的延迟,也是不可容忍的

二、UDP的首部格式

UDP数据报分为首部和用户数据部分,整个UDP数据报作为IP数据报的数据部分封装在IP数据报中,UDP数据报文结构如图所示:

UDP首部有8个字节,由4个字段构成,每个字段都是两个字节,
1.源端口: 源端口号,需要对方回信时选用,不需要时全部置0.
2.目的端口:目的端口号,在终点交付报文的时候需要用到。
3.长度:UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部)
4.校验和:检测UDP数据报在传输中是否有错,有错则丢弃。
该字段是可选的,当源主机不想计算校验和,则直接令该字段全为0.
当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给应用进程。
如果接收方UDP发现收到的报文中的目的端口号不正确(不存在对应端口号的应用进程0,),就丢弃该报文,并由ICMP发送“端口不可达”差错报文给对方。

UDP校验

在计算校验和的时候,需要在UDP数据报之前增加12字节的伪首部,伪首部并不是UDP真正的首部。只是在计算校验和,临时添加在UDP数据报的前面,得到一个临时的UDP数据报。校验和就是按照这个临时的UDP数据报计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算校验和。这样的校验和,既检查了UDP数据报,又对IP数据报的源IP地址和目的IP地址进行了检验。

UDP校验和的计算方法和IP数据报首部校验和的计算方法相似,都使用二进制反码运算求和再取反,但不同的是:IP数据报的校验和之检验IP数据报和首部,但UDP的校验和是把首部和数据部分一起校验。

发送方,首先是把全零放入校验和字段并且添加伪首部,然后把UDP数据报看成是由许多16位的子串连接起来,若UDP数据报的数据部分不是偶数个字节,则要在数据部分末尾增加一个全零字节(此字节不发送),接下来就按照二进制反码计算出这些16位字的和。将此和的二进制反码写入校验和字段。在接收方,把收到得UDP数据报加上伪首部(如果不为偶数个字节,还需要补上全零字节)后,按二进制反码计算出这些16位字的和。当无差错时其结果全为1,。否则就表明有差错出现,接收方应该丢弃这个UDP数据报。


注意:
1.校验时,若UDP数据报部分的长度不是偶数个字节,则需要填入一个全0字节,但是次字节和伪首部一样,是不发送的。
2.如果UDP校验和校验出UDP数据报是错误的,可以丢弃,也可以交付上层,但是要附上错误报告,告诉上层这是错误的数据报。
3.通过伪首部,不仅可以检查源端口号,目的端口号和UDP用户数据报的数据部分,还可以检查IP数据报的源IP地址和目的地址。
这种差错检验的检错能力不强,但是简单,速度快

转载:(210条消息) UDP协议的详细解析_李大坝超欧的的博客-CSDN博客_udp

UDP(用户数据报协议)相关推荐

  1. 互联网协议 — UDP 用户数据报协议

    目录 文章目录 目录 UDP 协议 UDP Header UDP 协议 UDP(User Datagram Protocol,用户数据报协议),是一种无连接的.非可靠的传输层协议.换句话说,当 UDP ...

  2. TCP/IP UDP用户数据报协议 运输层

    快速导航 UDP在TCP/IP中的位置? 用户数据报的格式? UDP协议对数据进行封装和解封? 队列与端口实现? 复用与分用? UDP的一些特点? UDP输入队列? 输入模块伪代码欣赏? User D ...

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

    用户数据报协议(英语:User Datagram Protocol,缩写为UDP),又称用户数据报文协议,是一个简单的面向数据报的传输层协议,正式规范为RFC 768. 在TCP/IP模型中,UDP为 ...

  4. 【计算机网络】Internet原理与技术3 — 端口及套接字、用户数据报协议UDP、传输控制协议TCP

    Internet原理与技术 一.端口及套接字 1.传输层编址 2.套接字(socket) 3.无连接服务和面向连接服务 二.用户数据报协议UDP UDP协议格式 [例]校验UDP报文 UDP小结 三. ...

  5. 用户数据报协议(UDP)

    一.UDP协议的概念 用户数据报协议(UDP) 只在IP的数据报服务之上增加了很少一点功能,就是复用和分用的功能以及差错检测的功能,这里所说的复用和分用,就是使用端口标识不同的应用层协议. 二.UDP ...

  6. 【计算机网络】运输层:用户数据报协议UDP

    UDP在IP数据报服务之上增加复用分用的功能,以及差错检测的功能(使用UDP的原因) (所以应用进程不可以跳过UDP直接交给IP层) UDP特点: (1)UDP无连接:发送数据之前不需要建立连接 (2 ...

  7. 用户数据报协议---UDP协议【详解】

    一.UDP简介 UDP(User Datagram Protocol,用户数据报协议)是一个简单地面向数据报的运输层协议,为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据报的方法. UDP ...

  8. RFC768:用户数据报协议(UDP)

    介绍 定义此用户数据报协议(User Datagram Protocol,UDP),以在一组互连的计算机网络环境中提供数据包交换计算机通信的数据报模式.该协议假定将Internet协议(IP)用作基础 ...

  9. 用户数据报协议UDP

    用户数据报协议UDP 1.UDP概述 用户数据报协议UDP只在IP的数据报服务之上增加了很少一点功能,这就是复用和分用的功能以及差错检测的功能.UDP的主要特点是: (1)UDP是无连接的. 即发送数 ...

最新文章

  1. 把Redis当作队列来用,真的合适吗?
  2. box-sizing 属性
  3. python——文件和数据格式化
  4. 31.openssl编程——SSL实现
  5. 嵌入式linux启动根文件系统,嵌入式Linux根文件系统制作和挂载
  6. python 日志不会按照日期分割_python 按照日期切分大日志文件(重点)和按照指定大小切分日志文件...
  7. vs 2017 无法安装任何 nuget package,提示“库没有注册。。。”
  8. 高频电子线路_实验一:调谐放大器
  9. 如何将Word转换成PDF的几种使用方法
  10. PaddlePaddle入门实践——手写数字识别
  11. 德阳计算机办公培训,德阳2017计算机办公软件培训
  12. Spring学记笔记
  13. GA125整经机普罗菲斯触摸屏程序+西门子PLC S7-200程序
  14. 软件测试Python编程基础学习分享
  15. 如何在Linux系统中将无线网卡配置为AP
  16. December, 14
  17. 基于华为云人脸服务接口设计的人脸考勤打卡签到系统
  18. 第一天python学习打卡
  19. 【c51】LCD1602__num++显示 (超详细)
  20. MMPBSA结合自由能计算原理

热门文章

  1. LCD1602液晶 - 开发技术详解
  2. 区块链项目ICO评估模型
  3. 剖析Solidity合约创建EVM bytecode
  4. Mask R-CNN训练日记
  5. 鼠标悬停物体上时,出现一个跟随光标的标签
  6. java中String.contains方法的使用详解
  7. JAVA WEB之XSS防御工具类代码示例
  8. **Hadoop Ubuntu系统搭建攻略全详细!!!附带Hadoop搭建成功后测试案例**
  9. Ironic console
  10. Mac Xnip 截图软件快捷键设置