第8章 传输层_UDP协议
Posted 浅墨浓香
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第8章 传输层_UDP协议相关的知识,希望对你有一定的参考价值。
2. 用户数据报协议(UDP)
2.1 UDP的特点
(1)UDP是无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
(2)UDP使用了尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表,通信的两端不用保持连接,因此节省系统资源。
(3)UDP是面向报文的。UDP对应用层下来的报文即既不合并,也不拆分,而是保留这些报文的边界。也就是说应用层交给UDP多长的报文,UDP就原样发送,即一次发送一个报文。(这要求应用程序必须选择合适大小的报文,以免降低IP层的效率!)
(4)UDP没有拥塞控制:如果网络出现拥塞不会使主机的发送速率降低。这对某些实时应用很重要(如IP电话、实时视频会议等),它允许在网络发生拥塞时丢失一些数据,但不允许数据有太大的时延,UDP正好适合这种要求。
(5)UDP支持一对一、一对多、多对一和多对多的交互通信。
(6)UDP的首部开销小,只有8字节,比TCP的20字节的首部要短。
2.2 UDP的首部格式
(1)抓包分析(以域名解析数据包为例)
①源端口:在需要对方回信时选用。不需要时可用全0。
②目的端口:在终点交付报文时必须要使用到
③长度:UDP用户数据据的长度(数据字段和首部字段),最小值是8(仅有首部时)
④检验和:检测UDP用户数据报在传输中是否有错。有错就丢弃。
(2)UDP首部和伪首部
①UDP用户数据报有两个字段:数据字段和首部字段。其中的首部很简单,只有8个字节(源端口、目标端口、长度和校验和)
②“伪首部”:并不是UDP数据报真正的首部,只是在计算检验和时,临时添加在UDP数据报前面,得到一个临时的UDP用户数据报,检验和就是按照这个临时的UDP数据报来计算的。这个伪首部既不向下传递也不向上递交,而仅仅是为了计算检验和之用。
(3)UDP检验和的计算
①UDP的检验和是把首部和数据部分一起都检验(有别于IP数据报检验和只检验IP数据报的首部)。
②发送方首先把全零放入检验和字段,再把伪首部以及UDP用户数据报看成是由许多16位的字(如上图)一起串接起来。如果数据部分不是偶数个字节,则填入一个全零字节(但不发送)。然后按二进制反码计算出这些16位字的和。将此和的二进制反码写入检验和字段。然后发送这个UDP数据报。
③接收方把收到的UDP数据报连同伪首部(以及可能的填充全零字节)一起按二进制反码求这些16位字的和。当无差错时其结果应全为1;否则就表明有差错出现,接收方应丢弃这个UDP数据报。
以上是关于第8章 传输层_UDP协议的主要内容,如果未能解决你的问题,请参考以下文章