UDP报文结构和注意事项

目录

一、UDP报文结构图

二、UDP结构报文

2.1 16位源端口号和16位目的端口号。

2.2 16位报文长度

2.3 16位UDP校验和


一、UDP报文结构图

要想了解UDP报文结构,那就先让我们看一下UDP的报文结构图是什么样的,UDP的报文结构到底包含什么。

UDP报文结构和注意事项_第1张图片

 这就是UDP的报文结构图,总体来说,UDP的报文结构包括五个部分。分别是:16位源端口号、16位目的端口号、16位UDP长度、16位UDP校验和。那么接下来,我们就针对这五个部分来进行说明。

二、UDP结构报文

2.1 16位源端口号和16位目的端口号。

我们知道,一次网络通信,涉及到五元组。分别是:源IP,源端口,目的IP,目的端口,协议类型。因此在UDP报文中,端口号是必不可少的。源端口就是UDP发送方(程序所占用的)的端口号,而目的端口就是UDP要将数据发送到目的主机的某个程序上,那个程序所占用的端口号。这两个如果缺少一个,那么这次网络通信将无法进行。

2.2 16位报文长度

16位报文长度描述的是UDP数据报中数据的大小。其大小是2个字节,其表示的范围就是0-65535,换算出来就是64KB的大小。因此,一个UDP数据报一次最大只能传输64KB大小的数据。

但如果应用层数据报超过了64KB怎么办?那么我们就可以:

1.在应用层,通过代码的方式针对应用层数据报进行手动的分包,拆分成多个UDP数据报进行传输(send多 次)。

2.使用TCP进行传输。

2.3 16位UDP校验和

UDP校验和的目的是为了验证传输的数据是否是正确的。因为,网络环境是复杂多变的,在进行网络传输的过程中,可能会受到一些干扰,在这些干扰下就可能出现“比特翻转”的情况(1变成0/0变成1的情况)。

当传输的数据变了,数据的含义的改变有时候可能是影响巨大的。因此要避免这种情况,我们就需要使用校验和来进行数据正确性的验证。其过程是这样的:发送方发送数据的时候,会计算一下校验和,并且放到UDP报头中去,接着接收方拿到了数据,再算一遍校验和。

如果数据在传输过程中没有改变,那么发送方计算出来的校验和就应该和传输方计算出来的校验和一样。如果数据发生改变了,那么双方计算出来的校验和就不一样。

计算校验和的算法有一下几种:CRC,MD5,SHA1。

1.CRC

循环冗余校验。其特点是简单粗暴。把数据的每个字节循环向上累加,如果累加溢出了,高位就不要了。这样虽然很简单,但是 如果数据改变了两个bit位(一个字节少

1,一个字节多1),那么CRC计算出来的校验码就没有改变。因此,这种方法计算校验和是比较容易出现漏洞的。

2.MD5

MD5的方式不是简单相加,而是利用一系列公式来进行复杂的数学运算。其特点是:

① 定长:无论你原始数据多大,计算出来的MD5值总是一样的长度(4字节版本,8字节版本...).

② 冲突概率小:MD5计算出来的校验和,哪怕数据只改变了一个地方,其校验和也会改变巨大。

③ 不可逆:通过原始数据计算MD5和容易,但是想要通过MD5还原成原始数据,几乎是不可能能的。

你可能感兴趣的:(服务器,http)