29. 传输层(1) —— UDP协议

2022-10-26 15:50:35 浏览数 (2)

UDP协议的特点

  • 无连接:类似于发短信,无需先建立连接,就可以直接进行通信
  • 不可靠:发送者不知道接收者是否接受到了数据
  • 面向数据报:以DatagramPacket为单位进行读写操作

在UDP协议代码实现这篇文章中已经通过代码实现一个简易版服务器的形式来体现了“无连接”、“面向数据报”的两大特点,有需要的小伙伴可以参考

UDP协议原理

比如说现在要发消息,那么QQ这个进程就会构造出来一个应用层数据报

下面需要使用Socket API 进行send的时候,就交给了传输层(这里是UDP实现的)

在UDP报头中的序号“1,2,3,4”都分别占有2bit,其解释如下:

  • 1: 源端口(是由操作系统自动分配的)
  • 2: 目的端口(服务器哦提前准备好的)
  • 3: UDP长度(表示一个UDP的协议报头有多长) 【由于只占有2bit,因此UDP数据报最大长度就是64k,一旦超出了这个长度,超出的部分就会被截断,就会发送一个残缺的数据,这种情况的解决办法有两个:一个就是在应用层拆分数据报,也就是使用多个UDP传输;一个就是直接换成TCP传输;一般会选择后者来解决问题】
  • 校验和:(用于检查数据传输的过程有没有出错) 【当校验和不符合预期的时候,就一定出错了】 【进一步解释:例如现在需要下载一个大文件,下载端会提供一个md5,下载下来的文件也会有一个自己的md5,文件通过两个md5进行比较,如果不一样就说明文件下载失败,被损坏了】 【md5解释如下:md5在hash中有提到。其特点如下:】

md5解释: 1.无论输入的字符串有多长,计算的md5是定长的 2.通过源字符串计算md5很容易,但是逆向计算很难 3.源字符串只要有一点变动,md5的变动就会很大

0 人点赞