UDP协议和报文格式,校验和,CRC的含义

简介: UDP协议和报文格式,校验和,CRC的含义

💖💖💖每日一看,学习动力

一、UDP协议及其报文格式

UDP:特点:无连接,不可靠传输

报头里面有啥呢?

那么首先我要先提问一下?2个字节,可以表示的数据范围有多大?(挺重要的需要记住)

1字节 🌸 🌸

 有符号-128——+127

 无符号 0——255

2字节 🌸 🌸

 有符号 —32768——32767

 无符号  0——65535

4字节

 有符号-21亿——21亿

 无符号0——42亿94万

报头的内部

合法的端口范围在:0——65535不能再大了,但是我们实际上不用0,1-1024这个范围大端口号,有特殊意义——叫做知名端口号(也不建议使用,1——1024这个范围大端口号有特殊意义,连mysql都是3306🌝🌝🌝当然,你要是非想要的话,你需要有管理员权限,我们CURDboy这么会有管理员呢🌚🌚🌚润)

一次通信,涉及五元组,源端口,目的端口,源IP,目的IP,协议类型,但是上面中名气比较大的服务器,都是上个世纪的情况(这里大部分服务器都已经过气,😜)

二、UDP报头遇到的问题及解决方法

UDP报文长度->2字节换算成单位64kb 如今很小,当年很大(大佬们,也没想到互联网发展这么吊),此时我们该如何把这个报文长度改大呢?分配4个字节可以不呢——相当困难->主要原因政治上困难,网络通信,你改对端就需要改一系列东西,十分复杂(主要是你改动,别人改不改,一个地方不改,你就损失一大块蛋糕了)。

那么可能小可爱会问了,假如真超过64KB咋整啊~

改法1:

在应用层(代码中)把广告拆分成多组,通过多个UDP数据报进行传输

代码的改动会很多,很多地方要改,还要重新测试,拆分之后,传输过去,对面还要进行拼接,改这么拼?,顺序乱了怎么办,某部分丢失又怎么办

改法2:使用Tcp去代替UDP,TCP没有要求报文长度(多长都行)(更实用一些)

三、校验和

校验和:检察数据是否在网络运输的过程中出错了

一个结论:网络传输过程中,收到外界干扰,数据可能出错,本质上,光信号/电信号/电磁波/磁场,高能粒子射线(太阳耀斑这种)

可能你原先输入的是1,就会变成0,0变成1这种——》也叫做比特翻转🍀🍀

我们的校验和就是为了应对这个情况

接收方收到数据的时候,需要确认数据是否错误,校验和是最简单的方式

实际校验和,不仅仅是“长度”而是根据数据的内容生成的,当内容发生改变的时候,就能感知到错误,

UDP的校验和具体是怎么实现的呢,使用一种简单粗暴的CRC校验和算法(循环冗余校验和)

CRC会把累加结果,保存到2个字节的变量中,加着加着,可能就会溢出,溢出也无所谓,所有字节都加了一个遍,最终得到了校验和传输数据的时候,会把原始数据和校验和一起传递过去。接收方收到数据,同时也收到了发送端->送过来的校验和(旧的),接收方会同样再去算一遍,得到新校验和,如果旧的校验和和新的校验和相同,就可以视为数据传输的过程中,是正确的。

如果不同,则视为传输过程中数据出错了,数据相同->校验和不同,校验和不同也就是数据不同,(当然有一些算法进行校验,可以更高精确度,但是要付出更大的代价,简单粗暴就好)

假如说正好巧了,某个字节多了一个,后面一个字节少一个,两种相加,正好抵消(这也没有办法,不用特别严谨,项目中已经很够用了。出错就会进行丢弃。但TCP可要求对方重发数据(更可靠)——下一篇文章


相关文章
|
2月前
|
网络协议 开发者
探讨UDP协议中connect函数的作用及影响
总结来看,虽然UDP是无连接的,`connect()` 函数的使用在UDP编程中是一种可选的技术,它可以带来编程上的便利和某些性能上的改进,同时它改变的是程序逻辑上的行为,而非UDP协议本身的无连接特性。在实际应用中,根据通信模式和需求的不同,开发者可以根据情况选择是否调用 `connect()` 函数。
100 8
|
4月前
|
监控 网络协议 视频直播
UDP协议(特点与应用场景)
UDP(用户数据报协议)是传输层的一种无连接协议,具有简单高效、低延迟的特点。其主要特点包括:无连接(无需握手)、不可靠传输(不保证数据完整性)、面向数据报(独立传输)。尽管UDP不如TCP可靠,但在实时通信(如语音通话、视频会议)、在线游戏、多媒体流媒体(如直播、点播)及网络监控等领域广泛应用,满足了对速度和实时性要求较高的需求。
487 19
|
5月前
|
网络协议
为何UDP协议不可靠?DNS为何选择UDP?
总的来说,UDP和TCP各有优势,选择哪种协议取决于应用的具体需求。UDP可能不如TCP可靠,但其简单、快速的特性使其在某些场景下成为更好的选择。而DNS就是这样的一个例子,它利用了UDP的优势,以实现快速、高效的名字解析服务。
244 14
|
5月前
|
网络协议 Java 开发工具
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
264 1
|
8月前
|
缓存 网络协议
Jmeter如何对UDP协议进行测试?
`jmeter-plugins`是JMeter的插件管理器,用于管理和组织所有插件。访问[官网](https://jmeter-plugins.org/install/Install/)下载并放置于`lib/ext`目录下,重启JMeter后可在“选项”中看到插件管理器。
190 1
Jmeter如何对UDP协议进行测试?
|
9月前
|
网络协议 网络架构
UDP报文结构详解:一篇文章带你搞懂
本文介绍了网络基础中的重要概念——UDP报文格式,包括源端口号、目的端口号、长度和检验和四个字段。UDP是一种无连接的传输层协议,简单高效但不可靠。文中还简要介绍了IP报文的重要字段,如版本、首部长度、服务类型、总长度、标识字段、生存时间和首部检验和。最后推荐了几本深入学习网络协议的书籍,帮助读者进一步理解相关知识。
|
9月前
|
XML JSON 算法
【JavaEE】——自定义协议方案、UDP协议
自定义协议,序列化,xml方案,json方案,protobuffer方案,UDP协议,校验和,比特翻转,CRC算法,md5算法
|
9月前
|
存储 网络协议 安全
用于 syslog 收集的协议:TCP、UDP、RELP
系统日志是从Linux/Unix设备及网络设备生成的日志,可通过syslog服务器集中管理。日志传输支持UDP、TCP和RELP协议。UDP无连接且不可靠,不推荐使用;TCP可靠,常用于rsyslog和syslog-ng;RELP提供可靠传输和反向确认。集中管理日志有助于故障排除和安全审计,EventLog Analyzer等工具可自动收集、解析和分析日志。
506 2
|
9月前
|
监控 网络协议 网络性能优化
不再困惑!一文搞懂TCP与UDP的所有区别
本文介绍网络基础中TCP与UDP的区别及其应用场景。TCP是面向连接、可靠传输的协议,适用于HTTP、FTP等需要保证数据完整性的场景;UDP是无连接、不可靠但速度快的协议,适合DNS、RIP等对实时性要求高的应用。文章通过对比两者在连接方式、可靠性、速度、流量控制和数据包大小等方面的差异,帮助读者理解其各自特点与适用场景。
|
10月前
|
网络协议 算法 网络性能优化