UDP协议

UDP概述

UDP只在IP的数据报服务上增加了两个最基本的服务:复用和分用以及差错检验。UDP相对于TCP有以下优点:

  1. UDP不需要建立连接。也就是说UDP不会有建立连接的时延。DNS如果运行在TCP上而不是UDP上,会慢很多,而HTTP之所以会运行在TCP上是因为对于基于文本数据的Web而言,数据链路的可靠性是很重要的。

  2. 无连接状态。TCP需要在端系统中维护连接状态,这个连接状态包括收发:缓存、拥塞控制参数、序号参数、确认号参数等数据。而UDP不用维护这些状态,也不用跟踪这些参数,所以使用UDP协议的服务器往往能支持更多的活动客户机

  3. 分组首部开销小。TCP有20B的首部开销,而UDP只有8B的首部开销。

  4. 应用层能够更好地控制要发送的数据和数据的发送时间。UDP没有拥塞控制,网络中的拥塞不会影响主机的发送速率。有些应用需要以稳定的速度发送数据报,能够容许部分数据丢失,但不允许有较大的时延,正好UDP能满足需求

  5. UDP支持一对一,一对多,多对一,多对多的通信

UDP通常用于一次性传输较少数据的网络应用。UDP不保证可靠交付,维护可靠性的工作可以由用户在应用层完成。UDP是面向报文的,也就是说不论应用层传给UDP多大的数据报,UDP都只是加个首部就往下传;对于从IP层传过来的数据报也是,只是把首部除去就往上传。

UDP数据报

UDP数据报包含两部分:UDP首部和用户数据。UDP首部长度为8B,由4个字段组成,每个字段占2B

 

 

各个字段意义如下:

  1. 源端口:源端口号。在需要对方回信时选用,不需要的时候可以全为0

  2. 目的端口:目的端口号。在终点交付报文的时候必须使用到

  3. 长度:UDP数据报的长度(包括首部和数据部分),其最小值时8(只用到首部)

  4. 校验和:检验UDP数据报在传输中是否有出错。有错就丢弃。该字段为可选字段,当源主机不想计算校验和的时候,就直接令该字段为全0

当传输层从IP层收到UDP数据报的时候,就根据首部中的目的端口,把UDP数据报通过相应的端口上交给应用程序。

如果接收方UDP发现收到的报文中的目的端口号不正确(也就是说不存在对应于端口号的应用进程),那么就丢弃这个报文,并由ICMP发送"端口不可达报文"给发送方

UDP校验

这里说的校验指的是UDP数据报首部的校验和字段的计算方式。

在我们计算校验和的时候,需要在UDP数据报之前增加一个12B的伪首部,伪首部不是UDP真正的首部,只是在计算校验和的时候临时增加的一个用于计算的字段。伪首部既不向下传送又不向上递交,只是在传输层用于计算。

 

如图所示,伪首部由5个字段组成:

  1. 源IP地址占4B,从IP层的首部获得

  2. 目的IP地址占4B,从IP层的首部获得

  3. 全0字段占1B

  4. 协议字段占1B,写17意味着该处的协议是IP协议,也就是说这个伪首部伪的是IP数据报

  5. UDP长度占2B,指的是整个UDP数据报的长度

UDP校验和的计算方法和IP数据报首部校验和的计算方法相似,但是IP数据报的校验和只校验IP数据报的首部,而UDP的校验和会校验首部和数据部分。

发送方首先把全0放入校验和字段并添加伪首部,然后把UDP数据报视为许多个16位的自负穿接起来。如果UDP数据报的数据部分不是偶数个字节,那么就在数据部分末尾填入全0字节(这个字节不发送)。然后按照二进制反码计算出这16位字的和,将此和的二进制的反码写入校验和字段,然后发送出去。

接收方接收到这个UDP数据报后,将UDP数据报加上伪首部(如果不是偶数个字节,那么还需要补上全0字节)后,按照二进制反码进行求和,。当无差错时其结果应全为1,否则就表明出错了,接收方应该丢弃这个UDP数据报。

                                发送方的计算过程如图所示

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楚江_wog1st

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值