华东师范大学软件工程学院实践报告
实验课程:计算机网络实践 | 姓名:刘佳奇 | 学号:10225101455 |
---|---|---|
实验名称:Lab5 UDP | 实验日期:2023/12/22 | 指导老师:刘献忠 |
实验目的
- 学会通过Wireshark获取UDP消息
- 掌握UDP数据包结构
- 掌握UDP数据包各字段的含义
- 了解UDP协议适用领域
实验内容与实验步骤
- 捕获数据
- 启动wireshark,利用udp过滤捕获
- 捕获时在dos命令行输入nslookup pluseven-sechs.site
- 启动wireshark,利用udp过滤捕获
- 分析UDP包并解析DNS
- 问题与思考
实验环境
- windows
- wireshark
实验过程与分析
- 捕获数据
win + x 以管理员身份运行命令行
运行wireshark,选择已连接的网络,设置过滤条件为udp,开始捕获
命令行输入nslookup pluseven-sechs.site,捕获完成
- 分析UDP包
选择一个数据帧,分析其UDP包头字段
- Source
Port,发送端口号,2字节,需要对方回信时用到,不需要时全置0
- Destination
Port,接收端口号,2字节,在向接收方交付报文的时候需要用到
- Length,2字节,即是UDP的数据报包括头部和数据的长度,故其最小值,在只有头部时,为8
- Checksum,2字节。与IP校验和不一样的地方在于,无论主机是接收方和发送方,校验和都是需要计算的
- 分析UDP报文
(1)UDP数据包头中的Length字段指的是UDP有效载荷,还是UDP有效载荷加上UDP头的总长度,还是UDP有效载荷和UDP头以及低层协议的头部三者总长度?
UDP有效载荷加上UDP头的总长度。如本实验截取的UDP报文Length为280,头部占8字节,有效载荷占272字节
(2)UDP头中的校验和的长度是多少位?
如上图中Checksum为0x9451,长度为16位
(3)整个UDP头的长度是多少字节?
如上图中,为8字节
(4)win+R,输入cmd启动命令行,输入ipconfig获得计算机的ip地址,与数据包中的Source比较
本地IP地址为192.168.31.108
(这里换了个网络环境,重新抓了个包
可知:query发送端的IP地址为本机IP地址
(5)在IP协议中哪个字段指明交给上一层的UDP传输进程?该字段值是多少?
IP协议中在Protocol字段指明交给上一层的UDP传输进程,该字段值是17
(6)有的数据包的source和destination IP地址都不是你计算机的IP地址,给出该数据包的destination IP地址
该数据包的destination IP地址为255.255.255.255,是广播地址
(7)一般UDP消息的长度是多少?
UDP协议的长度字段是16位,因此可以表示的最大长度为 \(2^{16} - 1 = 65535\)字节。这个长度包括UDP首部的8字节,而以太网规定帧的负载必须小于MTU(最大传输单元),一般为1500字节。这包括IP数据报、UDP首部以及UDP数据部分。IP数据报头部一般为20字节,因此IP数据报的负载为MTU减去IP头部长度,即1500 - 20 = 1480字节。在考虑UDP协议的8字节首部后,UDP数据报的负载为IP数据报的负载减去UDP首部长度,即1480 - 8 = 1472字节
(8)在计算校验和时,为什么要加上ipv4伪头部,伪头部和UDP首部中都有UDP length字段,该字段出现两次是无意义的重复吗?还是有什么意义?
伪头部提供了额外的信息,包括源和目标IP地址、协议号以及UDP长度字段,这有助于确保UDP数据包在传输过程中的完整性。它模拟了整个IP头部,使校验和覆盖更多的信息,减少了出错的可能性
UDP首部中的长度字段指的是UDP头部和数据部分的总长度。而伪头部中的UDP长度字段指的是UDP头部和数据部分的长度,用于计算校验和。这两个字段的出现不是重复的,因为一个用于标识长度,另一个用于校验和计算
(9)计算校验和时,为补足偶数字节在UDP载荷数据末尾加上的0,是否在UDP长度字段中体现? 没有。计算校验和时,UDP长度字段表示UDP头部和数据部分的总长度,包括偶数或奇数字节。如果UDP数据部分的长度是奇数,那么它会被补足为偶数字节,而这个补足的字节不会在UDP长度字段中明确体现。相反,伪头部和UDP首部中的校验和字段会反映整个UDP头部和数据部分(包括补足字节)的信息
实验结果总结
通过本次实验认识了解了UDP协议、UDP包的结构,以及UDP头部校验码的计算方法