传输层—UDP—校验和

传输层---UDP---校验和

学习一个协议,当然要掌握协议的特性,还需要理解协议报文格式。

UDP

UDP 基本特点:无连接、不可靠传输、面向数据报、全双工

UDP报头包含:源端口、目的端口、UDP报文长度、校验和。

UDP载荷中:是完整的应用层协议数据

在传输层,一次通信,涉及到 5 元组。(源端口、目的端口、源IP、目的IP,协议类型)

端口号:最大是2个字节,能表示多大的数据范围呢? 0 ~ 65535,这就是合法端口号的有效范围,不能再大了(实际上 0 不会使用的)。1-1024 这个范围的端口号,系统赋予了特定的含义,一般也不建议咱们使用。(相当于飞机的头等舱仓,都是知名端口号)

UDP报文长度:最大2个字节,传输数据时是16位,其范围也是 0~65535 字节,换算一下就是 64 kb。一个 UDP 报文长度最长也就是 64kb.

对于 199x 那个年代来说,64kb 可谓是一个很大的数字,可以表示很多东西。

但对于现在的我们来说,64kb 非常小。那我们能不能把这个长度给改大呢,用4个字节来表示??答案是否定的。

那我们在写程序的时候,传输的报文超过2字节怎么办??

  1. 在应用层中,把数据拆分成多组,通过多个UDP数据报进行传输
  2. 使用 TCP 代替 UDP。TCP 没有要求报文长度。

以下的字节范围大小需要牢记。

校验和

在网络传输中,受到外界干扰,数据可能会出错!!

因此,在接收方收到数据后,就需要先确认一下,这个数据是否是一个错误的数据。校验和就是简单有效的方式。

例子:

我去市场买菜,列出一个清单:黄瓜、鸡蛋、西红柿、芹菜。一共四样。

当我卖完菜了,清点一下数目发现不对劲,只买了三样菜,此时就发生了异常。

实际的校验和,不仅仅是一个"长度",而是根据数据的内容来生成的。当内容发生改变的时候,就能感知出错误。

UDP 的校验和具体是咋实现的? 使用了一种简单粗暴的 CRC 校验算法。(循环冗余校验和)

加着加着,可能就溢出了~~溢出也无所谓。所有字节都加了一遍,最终就得到了校验和。传输数据的时候,就会把原始数据和校验和一起传递过去。接收方收到数据,同时也收到了发送端送过来的校验和(I日的校验和)。接收方按照同样的方式再算一遍,得到新的校验和。如果旧的校验和和新的校验和相同,就可以视为数据传输过程中是正确的。如果不同,则视为传输过程中数据出错了。

但是,有时候会出现,校验和相同,但是传输的数据和发送时候的数据不同,也就是数据发生错误,但校验和是对的。

原因:好巧不巧,某个字节,多了1。某个字节,少了1。二者相加,正好抵消。

此校验和方法并不是那么严谨,但在工程上,也是够用的。

相关推荐
czy87874751 小时前
深入理解 TCP 协议中三次握手建立连接和四次挥手关闭连接的核心逻辑
网络·网络协议·tcp/ip
咖啡の猫1 小时前
微信小程序网络数据请求
网络·微信小程序·小程序
boring_1111 小时前
AI时代本质的思考
网络·人工智能·智能路由器
BEOL贝尔科技1 小时前
通过采集器监测环境的温湿度如果这个采集器连上网络接入云平台会发生什么呢?
网络·人工智能·数据分析
这儿有一堆花1 小时前
实战:FastAPI与WebSocket的高并发足球数据API开发指南
websocket·网络协议·fastapi
wearegogog1231 小时前
基于MATLAB的D2D仿真场景实现
开发语言·网络·matlab
Godspeed Zhao1 小时前
现代智能汽车中的无线技术00——智能汽车的无线依赖
网络·汽车
独自破碎E1 小时前
【字符串分割】验证IP地址
服务器·网络·tcp/ip
数通工程师2 小时前
实操教程:华为防火墙HRP主备模式完整配置步骤
运维·服务器·网络·网络协议·tcp/ip·华为
弥生赞歌2 小时前
防御保护课程综合实验
网络