首页 > 其他分享 >UDP协议

UDP协议

时间:2024-10-14 21:12:23浏览次数:1  
标签:协议 UDP 字节 首部 报文 检验 数据

UDP概述

用户数据报协议UDP只在IP的数据报服务之上增加了很少一点的功能,即复用、分用以及差错检测功能。UDP的主要特点是:

  • UDP是无连接的,即发送数据之前不需要建立连接,减少了开销和发送数据之前的时延

  • UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表

  • UDP是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层,UDP对应用层的报文既不合并,也不拆分,而是保留这些报文的边界。也就是说,应用层交给UDP多长的报文,UDP就照样发送,一次发送一个报文,如下图所示:

img

在接收方的UDP,对IP层交上来的UDP用户数据报,在去除首部后,就原封不动的交付上层的应用进程。也就是说,UDP一次交付一个完整的报文。

  • UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很多的实时应用(IP电话、视频会议)要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。

  • UDP支持一对一、一对多、多对一、多对多的交互通信

  • UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。

UDP的首部格式

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

  • 源端口
    • 在需要对方回信时选用,不需要时可用全0
  • 目的端口
    • 在终点交付报文时必须使用
  • 长度
    • UDP用户数据报的长度,最小值是8(只有首部)
  • 检验和
    • 检测UDP用户数据报在传输中是否有错,有错就丢弃

当运输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点——应用进程。下图是UDP基于端口分用的示意图:

img

如果接收方UDP发现收到的报文中的目的端口号不正确(不存在对应于该端口号的应用进程),就丢弃该报文。并由网际控制报文协议ICMP发送"端口不可达"差错报文给发送方

ICMP不是一个网络层的协议吗?为什么还能在运输层发挥作用?记得专门开一个专题学一下ICMP的细节

UDP校验

UDP 计算检验和的方法和计算P数据报首部检验和的方法相似。但不同的是:IP数据报的检验和只检验P数据报的首部,但 UDP的检验和是把首部和数据部分一起都检验。在发送方,首先是先把全零放入检验和字段。再把伪首部以及DP用户数据报看成是由许多16 位的字串接起来的。若 UDP用户数据报的数据部分不是偶数个字节,则要填入一个全零字节(但此字节不发送)。然后按二进制反码计算出这些16位字的和。将此和的二进制反码写入检验和字段后,就发送这样的UDP用户数据报。在接收方,把收到的UDP用户数据报连同伪首部(以及可能的填充全零字节)一起,按二进制反码求这些16位字的和。当无差错时其结果应为全1。否则就表明有差错出现,接收方就应丢弃这个UDP用户数据报(也可以上交给应用层,但附上出现了差错的警告)。图5-6给出了一个计算UDP检验和的例子这里假定用户数据报的长度是15字节,因此要添加一个全0的字节。读者可以自己检验下在接收端是怎样对检验和进行检验的。不难看出,这种简单的差错检验方法的检错能力并不强,但它的好处是简单,处理起来较快。

img

标签:协议,UDP,字节,首部,报文,检验,数据
From: https://www.cnblogs.com/AH20/p/18466136

相关文章

  • STP生成树协议
    作用尽可能少的阻塞端口,实现无环路径防止广播风暴,mac地址表震荡 BPDU报文STP采用的协议报文是BPDU(BridgeProtocolDataUnit),也称为配置消息。STP通过在设备间传递BPDU报文来确定网络的拓扑结构,并完成生成树的计算。BPDU报文被封装在以太网数据帧中,目的MAC是组播MAC:01-80......
  • 实现基于UDS诊断协议的CAN本地OTA升级
    一、目标在上篇文章实现基于UDSLIN诊断协议的本地OTA升级-CSDN博客博客中已经基于LINUDS诊断协议实现了通过PC端上位机对MCU进行本地的OTA升级。本篇将在上篇文章的基础上实现基于UDS诊断协议的CAN本地OTA升级。本篇文章对实现的目的、需要用到的第三方工具请查看之前的博客相......
  • 实现基于UDS LIN诊断协议的本地OTA升级
    一、目标在上篇文章LIN诊断实现MCU本地OTA升级_linota-CSDN博客中已经基于LIN诊断协议实现了通过PC端上位机对MCU进行本地的OTA升级,但是没有完全按照UDS协议实现。本篇将在上篇文章的基础上进行改进,实现基于UDSLIN诊断协议的本地OTA升级。本篇文章对实现的目的、需要用到的第三......
  • 起吊机革新:协议转换器解锁安全与效率
    重工起吊机设备在工业生产中扮演着至关重要的角色,但其在实际应用中面临着一系列痛点问题。这些问题不仅影响了起吊机的性能和安全性,还限制了生产效率的提升。明达技术自主研发的MG协议转换器能够高效解决这些痛点,同时MG协议转换器作为一种关键设备,也为解决这些问题提供了新的思路。......
  • MQTT协议
    MQTT与HTTP协议的区别:MQTT以数据为中心,而HTTP是以文档为中心的。HTTP是用于客户端-服务器计算的请求-响应协议,并不总是针对移动设备进行优化。MQTT在这些术语中的主要优点是轻量级(MQTT将数据作为字节数组传输)和发布订阅模型,这使其非常适合资源受限的设备并有助于节省带宽。......
  • CoAP协议
    本片文章通过协议的产生背景、应用场景、与MQTT对比三方面来阐述CoAP协议。完成该文的阅读能初步了解CoAP协议是什么、解决什么。CoAP协议产生的背景以及意义想要弄明白CoAP协议需要对MQTT有一定的了解,物联网的应用层面MQTT是一个绕不开的话题。而且在物联网发展的当下来说,大......
  • 智融SW3538支持 PD 的多快充协议双口充电解决方案
    1.概述SW3538是一款高集成度的多快充协议双口充电芯片,支持A+C口任意口快充输出,支持双口独立限流。其集成了7A高效率同步降压变换器,支持PPS/PD/QC/AFC/FCP/SCP/PE/SFCP/TFCP/VOOC等多种快充协议,支持140W输出功率,集成CC/CV模式、双口管理逻辑以及双芯片动态......
  • HTTP 协议详解
    HTTP协议是Web的基石,它定义了客户端和服务器之间的通信规则。本文将深入地探讨HTTP的核心概念,包括工作原理、请求方法、状态码以及不同HTTP版本的演进。一、HTTP的工作原理HTTP协议基于客户端-服务器模型,遵循请求-响应的循环:客户端发起连接: 客户端(例如浏览器)向......
  • Android 车载应用开发指南 - CAN Bus 协议详解
    ​在现代车载应用开发中,CAN(ControllerAreaNetwork)总线协议扮演着不可或缺的角色。作为一个汽车内部网络的标准协议,CANBus已经成为了车载系统通信的基础。而在Android车载应用开发的过程中,理解并利用好CANBus协议是必不可少的。那么,CANBus到底是什么?它又是如何在车载......
  • 一文带你了解生成树协议三个版本:STP、RSTP 和 MSTP
    生成树协议(SpanningTreeProtocol,STP)及其后续改进版,如快速生成树协议(RapidSpanningTreeProtocol,RSTP)和多生成树协议(MultipleSpanningTreeProtocol,MSTP),是保证网络冗余与稳定的关键技术。这些协议能够防止环路的出现,从而避免广播风暴和通信中断。本文将详细介绍STP、R......