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

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

相关推荐
王二端茶倒水12 小时前
一套可落地的无线运营方案,不能只管 AP,还要管用户、计费和运维
网络协议
1627238160812 小时前
EtherCAT 分布式时钟(DC)原理与配置实战:把多轴真正"对齐到同一时刻"
网络协议
王二端茶倒水1 天前
宽带无线项目,怎么从一次性交付变成长期运营收入?
网络协议
用户2530171996272 天前
第6篇:从技术到产品 — Ghost Proxifier 的设计哲学
网络协议
用户2530171996272 天前
第3篇:注入的艺术 — Ghost Proxifier 核心架构拆解
网络协议
王二端茶倒水3 天前
商业 WiFi 不是免费上网,而是门店数字化的入口
网络协议
网络研究院8 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智8 天前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest8 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全