当前位置:   article > 正文

UDP协议_udp不需要建立连接怎么理解

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数据报。

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/84466
推荐阅读
相关标签
  

闽ICP备14008679号