一:实验目的
1:理解IP数据报分片的工作原理。
2:理解IP协议报文类型和格式。
二:实验仪器设备及软件
硬件:RCMS-C服务器、网线、Windows 2019/2003操作系统的计算机等。
软件:记事本、WireShark、Chrome浏览器等。
三:实验方案
【实验的网络拓扑图】
四:实验步骤
1:设计网络拓扑图,执行wireshark。
2:PC1上执行ping,向PC2发送大小为7000个字节的数据报文。
发送固定大小的数据报文的命令为:ping [PC] -l [Byte_size]。其中,PC为接收方的IP地址,Byte_size为数据报文的字节数。
3:停止捕获报文,保存捕获结果。
五:实验结果及分析
1:将属于同一ICMP请求报文的分片找出来截图,pc1向pc2发送的ICMP请求报文分成了几片?
捕获报文的截图如下。可以看到共有4个数据包,每个数据包包含4个ipv4帧和1个icmp帧,这5个帧属于同一个ICMP请求报文。
ICMP请求报文被分成了5片,如下图所示。
2:ICMP报文各分片的数据长度是多少?
第1分片的长度是1480字节。
第2分片的长度是1480字节。
第3分片的长度是1480字节。
第4分片的长度是1480字节。
第5分片的长度是1088字节。
3:若要让pc1向pc2发送的数据分成2个分片,则ping命令中的报文长度应该为多大范围?为什么?
MAC帧的数据部分的最大长度为1500字节,IP数据报会在数据部分加上20个首部字节,ICMP会在整个报文中加上8个字节。因此,假设ping命令的报文长度为X字节,数据分成2个分片需要满足以下方程组。
X + 20 + 8 > 1500
X + 20 * 2 + 8 ≤ 3000
求解可得,1472 < X ≤ 2952。因此,报文长度的范围是1473~2952字节。
六:实验总结及体会
1:虽然wireshark里面一次请求报文中被分割成4个ipv4和1个icmp,但是本质上一次请求报文包含5个ipv4帧信息,最后一个帧由于包含icmp属性才显示为icmp帧。
2:一个完整的ipv4帧的捕获信息,如下图所示。
在上图中,Ethernet Ⅱ处的信息包括接收方的物理地址、发送方的物理地址、类型等,这些内容属于数据链路层。
IPv4处的信息包括接收方的IP地址、发送方的IP地址、首部长度、分片总长度、标识、生存时间、协议类型等,这些内容属于网络层。