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可要求对方重发数据(更可靠)------下一篇文章

相关推荐
Hacker_Nightrain31 分钟前
网络安全CTF比赛规则
网络·安全·web安全
网络安全指导员1 小时前
恶意PDF文档分析记录
网络·安全·web安全·pdf
co0t2 小时前
计算机网络(11)和流量控制补充
服务器·网络·计算机网络
白总Server2 小时前
JVM解说
网络·jvm·物联网·安全·web安全·架构·数据库架构
清尘沐歌2 小时前
有什么好用的 WebSocket 测试工具吗?
websocket·网络协议·测试工具
清尘沐歌2 小时前
有什么好用的 WebSocket 调试工具吗?
网络·websocket·网络协议
Li_0304063 小时前
Java第十四天(实训学习整理资料(十三)Java网络编程)
java·网络·笔记·学习·计算机网络
Tony聊跨境3 小时前
什么是 ISP:了解互联网服务提供商的作用
网络·人工智能·isp
earthzhang20213 小时前
《深入浅出HTTPS》读书笔记(7):安全的密码学Hash算法
网络·网络协议·http·https·1024程序员节
Hacker_Oldv3 小时前
【网络工程】计算机硬件概述
前端·网络·安全·web安全