计网夯实基础——UDP协议篇

UDP协议:

UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都会产生一个UDP数据报,并组装成一份待发送的IP数据报,这与面向字节流的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系(主要是在传输层就进行分段了,因此不会受IP分片的影响)。

    UDP的首部一共8个字节,很简单,可以参考书上,这里也不再详说。

    UDP的校验和

    至于UDP的校验和,这里注意下区别就好了,UDP对首部和数据部分都进行校验,而IP首部的校验和仅对IP的首部进行校验,顺带提下TCP,TCP的校验和也是对首部和数据部分都进行校验,另外,UDP的校验和是可选的,而TCP的是必选的。

    不可靠协议

    UDP是不可靠的协议,没有超时和重传功能,当UDP数据封装到IP数据报传输时,如果丢失,会发送一个ICMP差错报文给源主机,另外,如果UDP数据报的发送端没打开UDP校验和,而接收端计算校验和有差错,那么UDP数据报将会被丢掉,也不会发送ICMP差错报文。

UDP最大长度

    理论上IP数据报的最大长度为65535字节,因此理论上的UDP数据报的最大长度为65507(65535-20-8)字节,但是,大多数实现所提供的长度比这个最大值小。一般有两个因素的限制(书上给出了一些例子,见P120):

    1、应用程序可能胡受到其程序接口的限制,一些API的实现中可能有限定UDP数据报的最大长度。另外,现在大部分系统都默认提供了可读写大于8192字节的UDP数据报。

    2、受限于TCP/IP内核的实现,可能存在一些实现特性,使IP数据报长度小于65535字节。

    数据报截断

    正是由于UDP最大数据报的限制(受限于上面的两个因素,一般都会小于65507),大于这个限制的数据报会被截断,从而发生数据丢失,且不会有任何数据丢失的通知,这也是UDP协议不可靠传输的另一个体现。而TCP则没有任何信息边界,TCP首部中没有对TCP最长报文段的限制,因此TCP以应用程序读操作时所要求的长度来传送数据(理论上一次可以发送很大的数据,但考虑到网络的传输性能,最好不要一次传输太大的数据),当然在超过MSS值时会产生分段,因此不会发生数据截断。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值