“网络技术(广东轻工学院)”实验报告

传输层:UDP协议

相关内容链接 https://blog.csdn.net/qq_38684504/article/details/84559982

TCP和UDP的区别:
tcp是面向连接的可靠的传输协议
udp是非连接的不可靠的传输协议

UDP特点 :

  1. UDP 是无连接的,即发送数据之前不需要建立连接 。
  2. UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
  3. UDP 是面向报文的.UDP 没有拥塞控制,很适合多媒体通信的要求。
  4. UDP 支持一对一、一对多、多对一和多对多的交互通信。
  5. UDP 的首部开销小,只有 8 个字节。

对应应用场景:
1.需要资源少,在网络情况比较好的内网,或者对丢包不是很敏感的应用。
2.不需要建立链接,一对一的沟通,可以广播或者组播。
3.需要处理速度快,可以丢少量的包,比如视屏直播,前面已经过去的帧丢了就丢了,但后面的能发过去就可以了。

具体应用场景:
1.网页浏览或者app的访问。http一般都是基于TCP的传输,但是对于时延比较大的移动网络时,每次请求都要三次握手,并保证包传输先后关系,这个需要耗费大量时间。google基于UDP提出了一种改进通信方案就quick udp internet connection(快速UDP互联网链接)目的是降低互联网通信的延迟。
2.流媒体协议,直播应用很多基于UDP实现了自己的传播协议 。 3.实时游戏,基于自定义的可靠UDP,基于自定义的重传策略。 4.物联网,很多都是资源非常少的嵌入式设备,维护一个TCP代价太大,而且物联网设备对实时性要求也很高。

UDP首部格式
说明:
户数据报 UDP 有两个字段:数据字段和首部字段.首部字段有 8 个字节,由 4 个字段组成,每个字段都是两个字节。 在计算检验和时,临时把“伪首部”和UDP用户数据报连接在一起,伪首部仅仅是为了计算检验和。
image.png

发送UDP请求的客户端图释: image.png

UDP 校验和 UDP 校验和是一个端到端的传输层校验和,是对包含了IP头部中的源(Source)和目的IP地址(Destination Address)字段的 UDP 伪首部计算得到的。它由初始的发送方计算得到,由最终的目的方校验。它在传输中不会被修改(除非它通过一个NAT)。IPV4 头部中的校验和只覆盖整个头部(即它不覆盖IP分组中的任何数据),它在每个IP跳都要被重新计算(因为IPV4 TTL字段的值在数据报转发时会被路由器减少)。传输协议(如 TCP、UDP)使用校验和来覆盖它们的头部和数据。对于 UDP 来说,校验和是可选的,而其他的则是强制的。当 UDP 在IPV6中使用时,校验和的计算与使用是强制的,因为在IP层没有头部校验和。为了给应用程序提供无差错数据,像UDP这样的传输层协议,在投递数据到接收方应用程序之前,必须计算校验和或者使用其他差错监测机制。

** 伪首部** 在UDP伪首部中,包含32位源IP地址,32位目的IP地址,8位填充0,8位协议,16位UDP长度。伪首部并非TCP&UDP数据报中实际的有效成分。伪首部是一个虚拟的数据结构,其中的信息是从数据报所在IP分组头的分组头中提取的,既不向下传送也不向上递交,而仅仅是为计算校验和。 伪头部的目的是让UDP层验证数据是否已经到达正确的目的地(即,该IP没有接受地址错误的数据报,也没有给UDP一个本该其他传输协议的数据报),计算UDP校验和时覆盖的字段,包含了伪头部以及UDP头部和负载。

UDP 校验和计算方法 UDP计算校验和的方法和计算IP数据报首部校验和的方法相似。但不同的是:IP数据报的校验和只检验IP数据报的首部,但UDP的校验和是将首部和数据部分一起都检验。 在发送方,首先是将全零放入检验和字段。再将伪首部以及UDP用户数据报看是由许多16位的字串接起来。若UDP用户数据报的数据部分不是偶数个字节,则要填入一个全零字节(最后一个奇数字节应是16位数的高字节而低字节填0,此字节不发送)。 然后按二进制反码计算出这些16位字的和。 将此和的二进制反码写入校验和字段后,发送此UDP用户数据报。 在接收方,把收到的UDP用户数据报连同伪首部(以及可能的填充全零字节)一起,按二进制反码求这些16位字的和。当无差错时其结果应全为1。否则就表明有差错出现,接收方就丢弃此UDP用户数据报(也可以上交给应用层,但附上出现了差错的警告)。如果校验和字段值为0x0000表示发送方没有计算校验和。

image.png

如上图所示,伪首部的第3字段是全零;第4字段是IP首部中的协议字段的值。对于UDP,此协议字段值为17;第5字段是UDP用户数据报的长度。因此,这样的检验和,既检查了UDP用户数据报的源端口和目的端口以及UDP用户数据报的数据部分,又检查了IP数据报的源IP地址和目的地址。注意,UDP数据报的长度在校验和的计算中出现了两次。

计算原理是二进制反码求和运算 0 + 0 = 0 1 + 0 = 0 + 1 = 1 1 + 1 = 10 如果最高位有进位,就把进位的1取下来与最低位再做一次二进制加法 image.png

二进制反码求和的参考代码 image.png

作业 image.png

最新评论
暂无评论~