目录
- Wireshark操作
- 一、观察不分片标志对较短IP报文传输的影响
- Windows命令行提示窗口
- Wireshark
- 二、观察不分片标志位对较长IP报文传输的影响
- Windows命令行提示窗口
- 三、将IP报文分片
- Windows命令行提示窗口
- Wireshark
Wireshark操作
步骤1:在 PC1 上运行 Wireshark,开始截获报文,为了只截获和实验内容有关的报文,将 Wireshark 的 Captrue Filter 设置为“icmp”;
步骤2: PC1 ping PC2.
步骤3:停止截获报文,分析截获的结果。
一、观察不分片标志对较短IP报文传输的影响
Windows命令行提示窗口
打开Windows命令行提示窗口,在Windows命令行提示符中输入“ping –l 1472 –f 192.168.1.11”。参数-l 是设置ping 命令的数据的大小;参数-f是将该IP报文设置为不可分片。192.168.1.11是要ping的PC2的IP地址,这里自己修改。
系统默认是发送四个数据包,我们观察其中一个就可以
Wireshark
分析该 IP 协议的报文格式:
(不分片标志对较短IP报文传输的影响)IP协议
字段 | 报文信息 | 含义 | 说明 |
版本 | 4 | IPv4 | IP所使用版本号 |
头长 | 20bytes (5) | 头部长度20bytes | IP头的长度 |
服务类型 | 0x00 | ------ | 优先级标志位和服务类型标志位,被路由器用来进行流量的优先排序 |
总长度 | 1500 | 以太网的帧中最多可容纳 1500 字节的数据(以太网的MTU是1500) | IP头与数据包中数据的长度 |
标识 | 0xc0a5 | 表示这个是c0a5数据包 | 一个唯一的标识数字,用来识别一个数据包或者被分片数据包的次序 |
标志 | 0x40(010x xxxx) | 表示这个数据包没有分片且这个帧之后也无分片数据 | 用来标记一个数据包是否是一组分片数据包的一部分 |
片偏移 | 0 | 片位移为0 | 一个数据包是一个分片,这个域中的值就会被用来将数据包以正确的顺序重新组装 |
生存周期 (TTL) | 64 | DNS记录在DNS服务器上存在的时间 | 用来定义数据包的生存周期,以经过路由器的跳数/秒数进行描述 |
协议 | ICMP | ICMP协议 | 用来识别在数据包序列中上层协议数据包的类型 |
校验和 | 0xf115 | 用以校验 | 一个错误检测机制,用来确认IP头的内容没有被损坏或者篡改 |
源地址 | 192.168.1.10 | PC1:源IP地址 | 发出数据包的主机的IP地址 |
目的地址 | 192.168.1.11 | PC2:目的IP地址 | 数据包目的地的IP地址 |
二、观察不分片标志位对较长IP报文传输的影响
Windows命令行提示窗口
打开Windows命令行提示窗口,在Windows命令行提示符中输入“ping –l 1473 –f 192.168.1.11”
需要拆分数据包但是设置DF 指的是数据包大小超过了网络限定MTU大小,即不分片时对超过MTU的长报文无法传输。
三、将IP报文分片
Windows命令行提示窗口
打开Windows命令行提示窗口,利用wireshark捕获“ping –l 4000 -n 1 192.168.1.11”命令发送的数据包;只发送一个4000大小的数据包;分别分析各个分片相关字段(标识、标志和偏移)
原理:
Wireshark
第一个分片:
分析该 IP 协议的报文格式:
IP协议
字段 | 报文信息 | 含义 | 说明 |
版本 | 4 | IPv4 | IP所使用版本号 |
头长 | 20bytes (5) | 头部长度20bytes | IP头的长度 |
服务类型 | 0x00 | ------ | 优先级标志位和服务类型标志位,被路由器用来进行流量的优先排序 |
总长度 | 1500 | 第一个分片的总长度为最大值(MTU):1500 | IP头与数据包中数据的长度 |
标识 | 0xc0ae | 表示这个是第c0ae个数据包 | 一个唯一的标识数字,用来识别一个数据包或者被分片数据包的次序 |
标志 | 0x20(001x xxxx) | 表示这个数据包有分片且这个帧之后有帧 | 用来标记一个数据包是否是一组分片数据包的一部分 |
片偏移 | 0 | 片位移为0,这是第一个分片 | 一个数据包是一个分片,这个域中的值就会被用来将数据包以正确的顺序重新组装 |
生存周期 (TTL) | 64 | DNS记录在DNS服务器上存在的时间。 | 用来定义数据包的生存周期,以经过路由器的跳数/秒数进行描述 |
协议 | ICMP | ICMP协议 | 用来识别在数据包序列中上层协议数据包的类型 |
校验和 | 0x111a | 用以校验 | 一个错误检测机制,用来确认IP头的内容没有被损坏或者篡改 |
源地址 | 192.168.1.10 | PC1:源IP地址 | 发出数据包的主机的IP地址 |
目的地址 | 192.168.1.11 | PC2:目的IP地址 | 数据包目的地的IP地址 |
第二个分片:
分析该 IP 协议的报文格式:
IP协议
字段 | 报文信息 | 含义 | 说明 |
版本 | 4 | IPv4 | IP所使用版本号 |
头长 | 20bytes (5) | 头部长度20bytes | IP头的长度 |
服务类型 | 0x00 | ------ | 优先级标志位和服务类型标志位,被路由器用来进行流量的优先排序 |
总长度 | 1500 | 第二个分片的总长度为最大值(MTU):1500 | IP头与数据包中数据的长度 |
标识 | 0xc0ae | 表示这个是第c0ae个数据包,注意与前一帧一致,表示都是同一组数据 | 一个唯一的标识数字,用来识别一个数据包或者被分片数据包的次序 |
标志 | 0x20(001x xxxx) | 表示这个数据包有分片且这个帧之后有帧 | 用来标记一个数据包是否是一组分片数据包的一部分 |
片偏移 | 1480字节 | 注意这里wireshark换算为字节单位了,片位移以8字节为单位时是1480/8=185,帧中传输的也是185片偏移,这是第二个分片 | 一个数据包是一个分片,这个域中的值就会被用来将数据包以正确的顺序重新组装 |
生存周期 (TTL) | 64 | DNS记录在DNS服务器上存在的时间。 | 用来定义数据包的生存周期,以经过路由器的跳数/秒数进行描述 |
协议 | ICMP | ICMP协议 | 用来识别在数据包序列中上层协议数据包的类型 |
校验和 | 0x1054 | 用以校验 | 一个错误检测机制,用来确认IP头的内容没有被损坏或者篡改 |
源地址 | 192.168.1.10 | PC1:源IP地址 | 发出数据包的主机的IP地址 |
目的地址 | 192.168.1.11 | PC2:目的IP地址 | 数据包目的地的IP地址 |
第三个分片:
分析该 IP 协议的报文格式:
IP协议
字段 | 报文信息 | 含义 | 说明 |
版本 | 4 | IPv4 | IP所使用版本号 |
头长 | 20bytes (5) | 头部长度20bytes | IP头的长度 |
服务类型 | 0x00 | ------ | 优先级标志位和服务类型标志位,被路由器用来进行流量的优先排序 |
总长度 | 1068 | 最后一个分片的长度:1048+20=1068 | IP头与数据包中数据的长度 |
标识 | 0xc0ae | 表示这个是第c0ae个数据包 | 一个唯一的标识数字,用来识别一个数据包或者被分片数据包的次序 |
标志 | 0x01(000x xxxx) | 表示这个数据包有分片且这个帧之后无帧,即这是分片的最后一帧 | 用来标记一个数据包是否是一组分片数据包的一部分 |
片偏移 | 2960字节 | 注意这里wireshark换算为字节单位了,片位移以8字节为单位时是2960/8=370,帧中传输的也是370片偏移,这是最后一个分片 | 一个数据包是一个分片,这个域中的值就会被用来将数据包以正确的顺序重新组装 |
生存周期 (TTL) | 64 | DNS记录在DNS服务器上存在的时间。 | 用来定义数据包的生存周期,以经过路由器的跳数/秒数进行描述 |
协议 | ICMP | ICMP协议 | 用来识别在数据包序列中上层协议数据包的类型 |
校验和 | 0x314b | 用以校验 | 一个错误检测机制,用来确认IP头的内容没有被损坏或者篡改 |
源地址 | 192.168.1.10 | PC1:源IP地址 | 发出数据包的主机的IP地址 |
目的地址 | 192.168.1.11 | PC2:目的IP地址 | 数据包目的地的IP地址 |