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


目录
打赏
0
0
0
0
27
分享
相关文章
Jmeter如何对UDP协议进行测试?
`jmeter-plugins`是JMeter的插件管理器,用于管理和组织所有插件。访问[官网](https://jmeter-plugins.org/install/Install/)下载并放置于`lib/ext`目录下,重启JMeter后可在“选项”中看到插件管理器。
29 1
Jmeter如何对UDP协议进行测试?
UDP报文结构详解:一篇文章带你搞懂
本文介绍了网络基础中的重要概念——UDP报文格式,包括源端口号、目的端口号、长度和检验和四个字段。UDP是一种无连接的传输层协议,简单高效但不可靠。文中还简要介绍了IP报文的重要字段,如版本、首部长度、服务类型、总长度、标识字段、生存时间和首部检验和。最后推荐了几本深入学习网络协议的书籍,帮助读者进一步理解相关知识。
【JavaEE】——自定义协议方案、UDP协议
自定义协议,序列化,xml方案,json方案,protobuffer方案,UDP协议,校验和,比特翻转,CRC算法,md5算法
用于 syslog 收集的协议:TCP、UDP、RELP
系统日志是从Linux/Unix设备及网络设备生成的日志,可通过syslog服务器集中管理。日志传输支持UDP、TCP和RELP协议。UDP无连接且不可靠,不推荐使用;TCP可靠,常用于rsyslog和syslog-ng;RELP提供可靠传输和反向确认。集中管理日志有助于故障排除和安全审计,EventLog Analyzer等工具可自动收集、解析和分析日志。
183 2
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
109 3
|
3月前
|
TCP连接管理与UDP协议IP协议与ethernet协议
TCP、UDP、IP和Ethernet协议是网络通信的基石,各自负责不同的功能和层次。TCP通过三次握手和四次挥手实现可靠的连接管理,适用于需要数据完整性的场景;UDP提供不可靠的传输服务,适用于低延迟要求的实时通信;IP协议负责数据包的寻址和路由,是网络层的重要协议;Ethernet协议定义了局域网的数据帧传输方式,广泛应用于局域网设备之间的通信。理解这些协议的工作原理和应用场景,有助于设计和维护高效可靠的网络系统。
77 4
C# 一分钟浅谈:UDP 与 TCP 协议区别
【10月更文挑战第8天】在网络编程中,传输层协议的选择对应用程序的性能和可靠性至关重要。本文介绍了 TCP 和 UDP 两种常用协议的基础概念、区别及应用场景,并通过 C# 代码示例详细说明了如何处理常见的问题和易错点。TCP 适用于需要可靠传输和顺序保证的场景,而 UDP 适用于对延迟敏感且可以容忍一定数据丢失的实时应用。
87 1
【TCP/IP】UDP协议数据格式和报文格式
【TCP/IP】UDP协议数据格式和报文格式
293 3
不再困惑!一文搞懂TCP与UDP的所有区别
本文介绍网络基础中TCP与UDP的区别及其应用场景。TCP是面向连接、可靠传输的协议,适用于HTTP、FTP等需要保证数据完整性的场景;UDP是无连接、不可靠但速度快的协议,适合DNS、RIP等对实时性要求高的应用。文章通过对比两者在连接方式、可靠性、速度、流量控制和数据包大小等方面的差异,帮助读者理解其各自特点与适用场景。
深入解析:TCP与UDP的核心技术差异
在网络通信的世界里,TCP(传输控制协议)和UDP(用户数据报协议)是两种核心的传输层协议,它们在确保数据传输的可靠性、效率和实时性方面扮演着不同的角色。本文将深入探讨这两种协议的技术差异,并探讨它们在不同应用场景下的适用性。
119 4
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等