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

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的变动就会很大

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值