UDP协议

UDP协议是传输层中一个很重要的协议。

UDP协议报文格式

在这里插入图片描述

UDP 数据报,由 UDP报头 和 载荷(应用层数据包)构成。
UDP报头包括:2字节源端口,2字节目的端口,2字节UDP长度,2字节UDP校验和。


端口

源端口:记录当前主机中发送数据的程序的端口号。

目的端口:记录目标主机中接收数据的程序的端口号。

16位,2个字节,取值范围是:0-65535


UDP报文长度

16位,2字节,长度范围:0-65535 B

UDP数据报最大为:64KB

64KB在以前,是完全够用的,但是现在,传个图片都几个MB。

那 UDP协议 能不能升级一下,给这个字段多分配几个字节呢?

UDP 协议不能随便升级,因为 UDP 是在系统内核中实现的,要想升级 UDP ,就需要升级系统,世界上这么多台主机,要升就要一起升,如果有的升了,有的没升,这就会造成很大的麻烦。

使用UDP协议如何传输一个比较大的数据?

需要再代码层面,将数据拆分,然后通过多个 UDP 数据报,分开发送。 虽然这个方法可行,但是比较麻烦,需要写很多额外的代码来拆分数据。

所以不如使用 TCP,TCP没有限制。


校验和

作用:

网络传输并不稳定,通过网线传输,媒介是电信号,电信号用高低电平表示 0 和 1,如果遇到外部环境干扰,强磁场之类的,就可能会导致低电平变成高电平或者高电平变成低电平,这种情况称为比特翻转,此时数据传输就出错了!

校验和就是用来判定,当前传输的数据是否出错。

但是校验和也不能100%判断数据是否正确。

  • 校验和如果不对,那么数据一定出错了。
  • 校验和正确,数据不一定就没错。

如何校验:

校验和 通常是取数据内容,通过一些计算,得到的一个数值。

发送方,通过内容计算校验和,将校验和放入UDP报头,将整个UDP数据报发送过去。
接收方,收到数据,按照同样的算法通过内容计算校验和,对比UDP报头中的校验和是否一致。

如果不一致,那么数据肯定出错。如果一致,数据也是有可能出错的。


UDP的特点

  • 无连接

知道对端的 IP 和 端口号就可以进行传输,不需要建立连接。

  • 不可靠传输

发送端发送数据报后,无法知道数据报是否传输成功。

如果因为网络故障数据报没有送达,UDP协议层给应用层返回任何的错误信息。

  • 面向数据报

应用层交给 UDP协议层多长的数据,UDP原样发送,不会拆分,也不会合并。

  • 全双工

双向通信,UDP的socket既能读数据(接收),也能写数据(发送)。

  • 缓冲区

UDP只有接收缓冲区,没有发送缓冲区。

  • 大小受限

UDP数据报的报头中有个表示UDP长度的字段,16位,2个字节。

也就是说一个UDP数据报能传输的数据最大是64KB(包含UDP报头)。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值