UDP协议

1.概述
2.UDP首部
3.校验和
4.最大UDP数据报长度
5.UDP的优缺点

1.概述

  UDP是无连接,不可靠的数据报传输层协议,为应用程序发送和接收数据报,只是将数据报的分组从一台主机发送到另一台主机,但并不保证数据报能够到达另一端,任何必须的可靠性都有应用程序提供。在UDP情况下,虽然可以确保发生消息的大小,却不能保证消息一定会到达目的端。没有超时和重传功能,当UDP数据封装到IP数据报传输时,如果丢失,会发送一个ICMP差错报文给源主机。
  即使出现网络阻塞情况,UDP也无法进行流量控制。此外,传输途中即使出现丢包,UDP也不负责重发,甚至当出现包的到达顺序杂乱也没有纠正功能。若需要这些细节控制,则必须交给应用程序去处理。

2.UDP首部

  UDP首部由源端口号,目标端口号,UDP包长度和校验和组成。UDP首部只有8字节,每个部分占2个字节(16位)。其结构如下图所示:
  这里写图片描述
  

  • 源端口号:表示发送端的端口号,字段长度为16位。该字段是可选的,有时可能不会设置源端口号,没有端口号时该字段的值设为0。此时,可用于不需要返回的通信中;
  • 目标端口号:表示接收端的端口号,字段长度为16位;
  • UDP包长度:该字段保存了UDP首部的长度与UDP的字节长度之和,该字段的最小值为8字节,IP数据报是指数据报总的长度,因此,UDP数据报的长度是总的长度减去IP首部的长度;
  • 检验和:检验和是为了提供可靠的UDP首部和数据而设计;

3.校验和

  首先先说明UDP检验和引入UDP伪首部的原因。在前面介绍的《TCP与UDP协议基本概述》中说到,为了防止相同端口号之间通信混乱,TCP/IP或UDP/IP通信中通常采用5个信息来识别一个通信。它们分别是”源IP地址“,”目的IP地址“,”协议号“,”源端口号“,“目的端口号”。只要其中某一项不同,则被认为是其他通信。然而在UDP首部中只有源端口号和目的端口号,余下的3项都包含在IP首部中。假如其他三项信息(协议号,源IP地址,目的IP地址)被破坏,可能导致无法正确接收所需要的包(即可能收不到需要的包,而收到不该收的包)。为了避免这类问题的出现,有必要验证一个通信中必要的5项识别码是否正确。因此,在校验和的计算中引入了伪首部信息,UDP伪首部为12字节,它包含IP首部的一些字段,其目的是让UDP两次检查数据是否已正确到达目的地。
  在IP首部的校验和中,只需要对IP首部进行检验,而UDP和TCP的检验和,对UDP首部和UDP数据或者TCP首部和TCP数据都进行检验。UDP的检验和是可选的,而TCP的检验和是必须的。
  UDP检验和是一个端到端的检验和,它由发送端计算,然后由接收端验证。其目的是为了发现UDP首部和数据在发送端和接收端之间发生变化。如果UDP数据报的发送端没打开UDP校验和,而接收端计算校验和有差错,那么UDP数据报将会被丢掉,不产生任何差错报文。
     这里写图片描述

4.最大UDP数据报长度

  理论上IP数据报的最大长度为65535字节,去掉20字节的IP首部和8字节的UDP首部,因此UDP数据报的最大长度为65507。但是,大多数实现所提供的长度比这个最大值小。由于UDP最大数据报的限制,大于这个限制的数据报会被截断,从而发生数据丢失,且不会有任何数据丢失的通知。一般有两个因素的限制:
  

  1. 应用程序可能会受到其程序接口的限制,一些API的实现中可能有限定UDP数据报的长度。另外,现在大部分系统都默认提供了可读写大于8192字节的UDP数据报。
  2. 受限于TCP/IP内核的实现,可能存在一些实现特性,使IP数据报长度小于65535字节。

5.UDP的优点和缺点

  1. 优点:在少量数据的传输时,使用UDP协议传输信息流,可以减少TCP连接的过程,提高工作效率。
  2. 缺点:当使用UDP协议传输数据流时,用户应用程序必须解决数据报排序,差错确认等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值