传输层—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。二者相加,正好抵消。

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

相关推荐
ipooipoo11881 天前
跨境电商IP选型指南:静态IP vs 动态IP 的区别
网络·网络协议·tcp/ip
克里斯蒂亚诺更新1 天前
理解即时通信Socket以及用NodeJs实现WebSocket
网络·websocket·网络协议
stillaliveQEJ1 天前
【计算机网络】网络发展历程与网络模型
网络·计算机网络
码农很忙1 天前
从0到1搭建实时日志监控系统:基于WebSocket + Elasticsearch的实战方案
websocket·网络协议·elasticsearch
normanhere1 天前
码头网络设计方案
网络
bkspiderx1 天前
UDP打洞的核心依赖:NAT特性深度解析
网络·网络协议·udp·nat·udp打洞·nat特性
心之伊始1 天前
HTTP 与 HTTPS 协议深度剖析:从基础原理到现代演进与实践
网络协议·http·https
哟哟耶耶1 天前
随笔小计-前端经常接触的http响应头(跨域CORS,性能-缓存-安全,token)
前端·网络协议·http
开开心心就好1 天前
音频格式互转工具,支持Mp3ApeWavFlac互转
java·网络·c++·windows·qt·电脑·excel
上海云盾-小余1 天前
im即时通讯被攻击使用游戏盾高防方案有效解决
网络·网络协议·web安全·游戏·金融·ddos