- 实验目的
- 掌握 UDP 协议的报文格式
- 掌握 UDP 协议校验和的计算方法
- 理解 UDP 协议的优缺点
- 理解协议栈对 UDP 协议的处理方法
- 理解 UDP 上层接口应满足的条件
- 实验环境
该实验采用网络结构一
- 实验内容
练习一:编辑并发送 UDP 数据报
各主机打开工具区的“拓扑验证工具”,选择相应的网络结构,配置网卡后,进行拓扑验证,如果通过拓扑验证,关闭工具继续进行实验,如果没有通过,请检查网络连接。 本练习将主机 A 和 B 作为一组,主机 C 和 D 作为一组,主机 E 和 F 作为一组。现仅以 主机 A、B 所在组为例,其它组的操作参考主机 A、B 所在组的操作。
- 主机 A 打开协议编辑器,编辑发送给主机 B 的 UDP 数据报。
MAC 层:
目的 MAC 地址:接收方 MAC 地址
源 MAC 地址:发送方 MAC 地址
协议类型或数据长度:0800,即 IP 协议
IP 层:
总长度:包括 IP 层、UDP 层和数据长度
高层协议类型:17,即 UDP 协议
首部校验和:其它所有字段填充完毕后填充此字段
源 IP 地址:发送方 IP 地址
目的 IP 地址:接收方 IP 地址
UDP 层:
源端口:1030
目的端口:大于 1024 的端口号
有效负载长度:UDP 层及其上层协议长度
其它字段默认,计算校验和。
- UDP 在计算校验和时包括哪些内容?
- 包含伪首部(IP首部的一部分字段),UDP首部和UDP数据,该字段是可选的。如果该字段为零就说明不进行校验。
- 在主机 B 上启动协议分析器捕获数据,并设置过滤条件(提取 UDP 协议)。
- 主机 A 发送已编辑好的数据报。
- 主机 B 停止捕获数据,在捕获到的数据中查找主机 A 所发送的数据报。
思考问题:
- 为什么 UDP 协议的“校验和”要包含伪首部?
- 伪首部是IP首部的一部分,其中有些字段要填入0。用户数据报封装在IP数据包中。若校验和不包括伪首部,用户数据报也可能是安全的和正确的。但是,若IP首部受到损伤,则它可能被交付到错误的主机。伪首部中包含高层协议类型字段是为了确保这个数据包是属于UDP而不是属于TCP的。使用UDP的进程和使用TCP的进程可以使用同一个端口号。UDP的高层协议类型字段是17。若在传输过程中这个值改变了,在接收端计算校验和时就可检测出来,UDP就可丢弃这个数据包。这样就不会交付给错误的协议
- 比较 UDP 和 IP 的不可靠程度?
- 二者都是不可靠的。IP协议负责主机到主机的通信。作为一个网络层协议,IP协议只能把报文交付给目的主机。这是一种不完整的交付,因为这个报文还没有送交到正确的进程。像UDP这样的传输层协议负责进程到进程的通信。UDP协议负责把报文交付到正确的进程。
练习二:UDP 单播通信
本练习将主机 A、B、C、D、E、F 作为一组进行实验。
- 主机 B、C、D、E、F 上启动实验平台工具栏中的 UDP 工具”,作为服务器端,监听端口设置为 2483,“创建”成功。
- 主机 C、E 上启动协议分析器开始捕获数据,并设置过滤条件(提取 UDP 协议)。
- 主机 A 上启动“实验平台工具栏中的 UDP 工具”,作为客户端,以主机 C 的 IP 为目的 IP 地址, 以 2483 为端口,填写数据并发送。
- 察看主机 B、C、D、E、F 上的“UDP 工具”接收的信息。
- 哪台主机上的“UDP 工具”能够接收到主机 A 发送的 UDP 报文?
- C能收到主机A发送的UDP报文
- 察看主机 C 协议分析器上的 UDP 报文,并回答以下问题:
- UDP 是基于连接的协议吗?阐述此特性的优缺点。
- P不是基于连接的协议,是无连接的协议。优点:传输效率高,无需编码。无需创建以及断开连接。当某个程序的目标是尽快地传送尽可能多的信息(其中任意给定数据的重要性相对较低)时,可使用UDP协议。缺点:安全性低,它不能保证数据包以正确的顺序被接收,也不能保证数据会准确无误到达目的地。
- UDP 报文交互中含有确认报文吗?阐述此特性的优缺点。
- UDP报文交互中不含有确认报文。提高了传输效率,但是在传输过程中可能有丢失,重复,乱序等现象。
- 主机 A 上使用协议编辑器向主机 E 发送 UDP 报文,其中:
目的 MAC 地址:E 的 MAC 地址
目的 IP 地址:主机 E 的 IP 地址
目的端口:2483
校验和:0
有效负载长度:UDP 层及其上层协议长度
首部校验和:其它所有字段填充完毕后填充此字段
总长度:包括 IP 层、UDP 层和数据长度
发送此报文,并回答以下问题:
- 主机 E 上的 UDP 通信程序是否接收到此数据包?UDP 是否可以使用 0 作为校验和进行通信?
- 能收到。UDP可以使用0作为校验和进行通信。
- 主机 B、C、D、E、F 关闭服务端,主机 A 关闭客户端。
思考问题:
- 思考 UDP 的差错处理能力。
- UDP使用端口来完成这种通信。另一种责任就是在传输层提供控制机制。UDP在一个非常低的水平上完成这个功能。UDP没有流量控制机制,在收到分组时也没有确认。但是,UDP提供了某种程度的差错控制。如果UDP检测出在收到的分组中有差错,即当校验和为0时,它就悄悄地丢弃这个分组,使报文不能发送成功,而当校验和计算正确时,报文就可以成功发送。
练习三:UDP 广播通信
本练习将主机 A、B、C、D、E、F 作为一组进行实验。
- 主机 B、C、D、E、F 上启动实验平台工具栏中的“UDP 工具”,作为服务器端,监听端口设为 2483。
- 主机 B、C、D、E、F 启动协议分析器捕获数据,并设置过滤条件(提取 UDP 协议)。
- 主机 A 上启动 UDP 工具,作为客户端,以 255.255.255.255 为目的地址,以 2483 为端口,填写数据并发送。
- 察看主机 B、C、D、E、F 上的“UDP 工具”接收的信息。
- 哪台主机能够接收到主机 A 发送的 UDP 报文?
- BCDEF能够收到。
- 察看协议分析器上捕获的 UDP 报文,并回答以下问题:
- 主机 A 发送的报文的目的 MAC 地址和目的 IP 地址的含义是什么?
- FFFFFF-FFFFFF为广播MAC地址,255.255.255.255为广播IP地址;以其作为地址是数据广播到网络上的所有主机。
思考问题:
- 如果将目的 MAC 地址换成某一个主机的 MAC 地址,是否所有主机还会收到这种报文?
- 不会,不在一个共享模块的主机接收不到。
- 如果将目的 MAC 地址设成广播地址,目的 IP 设成某一主机的 IP 地址,结果怎样?
- 所有主机都能够接收。
- 在可靠性不是最重要的情况下,UDP 可能是一个好的传输协议。试给出这种特定情况的一些示例。
- 网络视频的播放。
- UDP 协议本身是否能确保数据报的发送和接收顺序?