UDP报文格式详解

前言

UDP(User Datagram Protocol,用户数据报协议)是**无连接、不可靠、面向数据报,全双工·**的传输层协议,核心特点是轻量、高效、低延迟,适用于对实时性要求高、可容忍少量丢包的场景

udp报文 分为报头和载荷数据两部分

报头包含四个部分 源端口,目的端口,长度,校验和 。报头占八个字节

源端口与目的端口

源端口与目的端口我们无须过多赘述 是传输层涉及到的端口号

但主要的一点就是 端口号占两个字节,就是16个比特位 16位无符号整数大小为2的十六次方-1,也就是65535

端口号合法最大应为65535 一般1~1024为系统保留端口号,1025~65535时程序员可自定义的

主要介绍长度和校验和

长度

长度在udp数据报报头,占据两个字节,同样也是16个比特位,16位无符号整数大小为2的十六次方-1,也就是65535

长度代表着UDP数据报头和载荷一共的长度,最大是65535 也就是64kb(理论上)

64kb对于如今 信息爆炸的年代长度已经不适用了,如果想要以UDP进行传输数据 ,如果数据超过最大长度,会发生截断,超出的数据无法传输

校验和

校验和是用来核对数据是否发生改变 UDP是二进制传输数据

在 数据的 传输过程中可能会发生比特翻转

就是1>>0 0>>1这样导致数据出现问题

校验和就是来判断数据 是否出现问题 如果出现问题就丢弃

把数据和校验和一起发送给对端

接收方接收到之后,重新计算校验和,并和收到的校验和进行对比,如果发现不一致直接丢弃

UDP的 校验和使用了CRC方式来进行校验,把每个字节(除了校验和位置的部分之外),都当做整数,进行累加,溢出也没关系,继续加最后得到结果 crc校验和

认为 两个原始数据相同,使用相同的校验和算法,得到的校验和是相同的

反之,如果两个校验和相同,原始数据一定相同 其实也可能存在变数,例如前一个字节翻转小了1,后一个字节也翻转 刚好大了1,最终校验和是一样的。

这里的校验和不涉及安全性,只是为了防止比特翻转

但其实比特翻转是小概率事件,发生比特翻转 校验和没发生变化,更是小概率中的小概率。

相关推荐
9523614 小时前
网络原理(协议)
网络
M1582276905515 小时前
8 通道 Modbus 模拟信号采集卡|工业传感器数据一键上云
网络
RTC老炮15 小时前
带宽估计算法(gcc++)架构设计及优化
网络·算法·webrtc
十年编程老舅16 小时前
深入 Linux 中断:原理详解 + 实战落地
linux·网络·linux内核·c/c++·中断
以神为界16 小时前
Web后端入门:PHP核心基础全解析(含安全要点)
网络·安全·web安全·php·web
XDHCOM16 小时前
Python os.system() 和 subprocess 怎么选?运行系统命令哪个更好用?
开发语言·网络·python
北京耐用通信16 小时前
耐达讯自动化CAN转EtherCAT网关:3步配置,赋能电机启动器智能化升级
人工智能·物联网·网络协议·自动化·信息与通信
@insist12316 小时前
网络工程师-网工核心:网闸 / 防火墙 / IDS/IPS 全解析,构建纵深防御体系
网络·网络工程师·软考·软件水平考试
FS_Marking16 小时前
使用SFP-10GM-T-30 10GBASE-T电口模块实现经济高效的网络升级
网络·信息与通信
xixixi7777717 小时前
AI自主挖洞 + 通信网络扩散:全域风险指数级放大,如何构建密码-沙箱-终端联动闭环?
开发语言·网络·人工智能·ai·大模型·php·通信