UDP的报文结构和注意事项

前言

UDP(User Datagram Protocol)是一种无连接的传输层协议,它提供了一种简单的数据传输方式,适用于那些对可靠性要求不高的应用。本文将总结UDP的报文结构和一些使用UDP时需要注意的事项


UDP报文结构

UDP报文相对简单(最大的携带数据是64kb),由两个主要部分组成:报头(Header)和数据(Data)部分。以下是UDP报文的详细结构:

UDP报头

UDP报头包含四个字段,每个字段的长度都是16位(2个字节),总共8字节:

  1. 源端口(Source Port):这是发送方的端口号,用于标识发送方的应用程序。

  2. 目标端口(Destination Port):这是接收方的端口号,用于标识接收方的应用程序。

  3. 长度(Length):这个字段指定了UDP报文的总长度,包括报头和数据部分。以字节为单位,最小值为8字节(包括报头)。

  4. 校验和(Checksum):UDP报头的校验和字段通常被设置为0。如果需要进行校验和计算,那么计算结果会填充到这个字段。

什么是校验和?

本质上就是一个字符串,体积比原始的数据更小,又是通过原始的数据生成的。原始的数据相同,得到的校验和一定相同**。**

如何基于校验和完成数据校验?

  1. 发送方,把要发送的数据整理好(称为 data1), 通过一定的算法, 计算出校验和 checksum1

  2. 发送方把 data1 和 checksum1 一起通过网络发送出去.

  3. 接收方收到数据,收到的数据称为 data2 (数据可能和 data1 就不一样了),收到数据 checksum1

  4. 接收方再根据 data2 重新计算校验和(按照相同的算法),得到 checksum2

  5. 对比 checksum1 和 checksum2 是否相同.如果不同, 则认为 data2 和 data1 一定不相同.如果 checksum1 和 checksum2 相同,则认为 data1 和 data2 大概率是相同的(理论上存在不同的 可能性 概率比较低 工程上忽略不计)

校验和怎么计算?

1. CRC算法

把当前要进行校验和的数据的每个字节进行累加,把结果保存到 两个字节的 变量中。(溢出也没关系),如果中间的某个数据,出现传输错误,第二次的校验和就会和第一次的不同。

2. md5算法

md5有一系列的计算公式,在这里只了解特点就行

(1)定长:无论你的原始数据多长,计算的md5都是固定长度

(2)分散:给两个原始数据,内容一样,但是只要一个字节不同,得到的md5差异也会很大

(3)不可逆:给你一个原始数据,计算md5很容易。反之,不容易。


UDP数据(Data)

UDP数据部分包含应用程序要传输的实际数据。它可以是任何长度,最大长度受到IP层和链路层的限制。


UDP的注意事项

  1. 无连接性:UDP是一种无连接的协议,不提供连接建立和维护机制,也不提供可靠的数据传输。这意味着应用程序需要自行处理丢失、重复和乱序的数据包。

  2. 不可靠传输

  3. 面向数据包

  4. 全双工:通过一个 Socket 既可以 send 也可以receive


结语

总的来说,UDP是一种简单且快速的协议,适用于某些特定的应用场景,但需要应用程序开发者自己处理一些额外的复杂性,如数据丢失和流控制。在选择UDP或TCP时,需要根据应用的性质和要求来决定。

相关推荐
喵叔哟1 小时前
9. 【Blazor全栈开发实战指南】--Blazor调用JavaScript
开发语言·javascript·udp
MaximusCoder3 小时前
等保测评命令——Anolis Linux
linux·运维·服务器·网络·经验分享·安全·php
线束线缆组件品替网3 小时前
Adam Tech NPC-6-007-BU网线组件详解
服务器·网络·数码相机·智能路由器·电脑·51单片机·电视盒子
Striver-Diligent3 小时前
您的解决方案准确吗?一种用于增强通信网络可靠性的、面向故障的性能预测方法
网络·深度学习·机器学习·网络性能估计·数字孪生网络·网络预测
cheems95273 小时前
[网络原理]http协议理论基础以及wireshark抓包分析(二)
网络·http·wireshark
双星系统3 小时前
ABB机器人DSQC 679示教器电缆选型与故障排查(附原装型号对照表)
网络·数据库·机器人·工业4.0·工业机器人
炸炸鱼.3 小时前
Nginx 代理与缓存实战:正向、反向及网络层级详解
网络·nginx·缓存
5G行业应用4 小时前
6G未来网络架构ATHENA愿景——《2026韩国SK电讯6G白皮书》
网络·架构
一去不复返的通信er4 小时前
5G系统级仿真
网络·5g
北京耐用通信5 小时前
耐达讯自动化CC-Link IE转DeviceNet网关:破解三菱与欧姆龙PLC协同壁垒的工业实践
人工智能·科技·物联网·网络协议·自动化