目录
UDP是传输层层的网络协议之一,学习一个协议最好的方式就是了解这个协议的报文格式.即怎么组织的这个数据.
下图为一个UDP数据报文的格式:
1.端口
- 源端口和目的端口.
源IP和源端口表明了数据是从哪里来的,目的IP和目的端口表明了数据要到哪里去.
下面,我们举个例子更好的去理解它们:小曹从重庆来,到洛阳去旅游.此时的小曹就是源端口,旅游就是目的端口.重庆就是源IP,洛阳就是目的IP.
- 端口号
每个端口号在UDP报文里占2个字节,取值范围为0-65535(2^16-1).
注意:端口号<1024[1-1023]为知名端口号,通常情况下我们是不应该使用的.例如(http:80).
2.报文长度
一个UDP报文的最大长度为64KB
我们都知道64KB对于现状的程序来说,真的很小.那既然这么小,为什么不可以扩容呢?
原因有以下两点:
1.如果要扩容,就意味着要升级,那么就必须全世界的主机都要进行升级,否则会因为版本不兼容而无法进行交互.这样的代价是非常大的;
2.全世界主机操作系统也不同,有windows,linux,mac等.
3.校验和
网络传输不稳定,可能会出错.举个例子:网线传输电信号(高低电平).由于受到磁场干扰,低->高,高->低(比特翻转),就会造成很严重的后果.
那么,为了避免这种后果,我们就引入了校验和,用来检验传输数据是否出错.
例1:
顾医生让小宇中午去买菜,有西红柿,鸡蛋,土豆丝,青椒,告诉小宇一共四样菜,不要买漏了!!!
于是小宇来到了菜市场,当小宇转了一圈准备回家时,核对,发现只买了三样菜,于是又去买遗漏的!!!
然而,上述是存在问题的!!!校验和不能证实,只能证伪.无法确定买的四样菜都是对的.只能在买了三样菜时,发现数量不对.
所以,为了校验和识别率更高,通常使用数据内容作为参数进行计算.
例2:
KFC有个套餐(奥尔良鸡腿堡+中杯可乐+中份薯条);前台根据点单跟厨房人员说,一个奥堡,中可,中薯(这个就是以数据内容为校验和).上菜时,再跟单子上的内容匹配,进行核销.
- 流程
1.发送方把载荷数据代入到校验和算法中,计算得到的结果记为sum1;
2.发送方把上述这一整串数据发送给接收方;(接收方接收到的数据既有载荷,也有校验和sum1)
3.接受方在收到这一串数据时, 把载荷再次根据校验和算法计算,得到结果sum2;
4.对比sum1和sum2是否相同.
如果不同,则说明数据一定出现问题.
总
祝大家顺顺利利健健康康,下次见!!!