用Wireshark观察IP数据分片,若原数据长度为6000字节,则:
(1)数据分成几片?
(2)每片长度为多大?
(3)观察各分片数据,验证后,用文字或表格说明
IP首部中,标识位、MF, DF, 和偏移量的值。
答案来自AIGpt
(1)假设每个IP数据报文最大传输单元(MTU)为1500字节,那么6000字节的原始数据需要被分为4片。IP数据报分片规定了每片数据的最大长度为MTU-IP首部长度20字节,即1480字节。
(2)每片长度为1480字节。
(3)观察各分片数据,可以在Wireshark中找到IP首部中标识位(Identification)、MF(More Fragments)、DF(Don't Fragment)和偏移量(Fragment Offset)的值。具体如下:
分片编号 | 分片长度 | 标识位(Identification) | MF(More Fragments) | DF(Don't Fragment) | 偏移量(Fragment Offset) |
---|---|---|---|---|---|
1 | 1480字节 | 0x1234 | 1 | 1 | 0 |
2 | 1480字节 | 0x1234 | 1 | 1 | 185 |
3 | 1480字节 | 0x1234 | 0 | 1 | 370 |
4 | 560字节 | 0x1234 | 0 | 1 | 555 |
根据上表可知,4个IP数据分片都有相同的标识位(Identification),这个标识位的值为0x1234。MF和DF标志分别指示是否还有更多分片和是否禁止进行数据分片,其中第一片和第二片都设置了MF标志,第三片和第四片则没有设置MF标志。第一片和第二片的偏移量分别为0和185,表示这两片数据分别对原始数据的前1480字节和第14812960字节进行了分片,第三片和第四片的偏移量分别为370和555,表示这两片数据分别对原始数据的第29614440字节和第4441~6000字节进行了分片。因此,接收方需要按照偏移量的值将这4个IP分片进行重组。
如果有用,麻烦采纳哦
利用 Wireshark 工具抓取网络数据,分析 IP 数据报中各个字段的内容,分析 IP 数据报的分片。
d) 等待一段时间。
此时,依次点击“Edit -> Options -> Default Settings -> Engine”,在Packet Size 框中输入 2000,再依次点击 OK -> Resume按钮。
e) 以同样的方式将数据包大小设为3500字节。
f) 停止抓包。
IP分片
首先回顾一下IP分片的知识:
a) 单击Time栏,按时间先后顺序排列数据报,找到在Ping Plotter中将分组大小改为2000字节后的第一个ICMP Echo Request报文,即下图中的报文:
b) 分析IP 数据报分片信息;
i. 首先, flags不为0;
ii. 其次,观察到fragment offset不为0,而是1480.由于我们是按照time先后顺序进行排序,因此排在前面的报文可能不是分片中前面的报文。
附:几个比较好奇的问题的总结
a) 关于IPv4与IPv6
观察到,捕获的报文使用的协议为IPv4(网际协议版本4)。在课堂上,我们简单地了解了下IPv6协议,知道该协议长度为128位,可以容纳更多的地址。IPv6的报文结构可以表示为:
具体如下:
版本:标识IP报文的版本,其作用与IPv4的版本一样。但是值为IPv66。
流量类别:指示IPv6数据流通信类别或优先级。功能类似于IPv4的服务类型(TOS)字段。用于服务质量(QOS)功能,长度为8位。
流标签:IPv6新增字段,长度为20位。标记需要IPv6路由器特殊处理的数据流。该字段用于某些对连接的服务质量有特殊要求的通信,诸如音频或视频等实时数据传输。事实上所谓的“流”事实上是一系列具备相同特性的数据集合,通常是实时数据,比如:这些数据具备相同的目标IP地址、源IP地址、目标端口等,那么它们将具备一个相同的标签值。规划这个字段的意义目标在于对实时数据进行低延迟交付应用。
载荷长度:16位负载长度表示IPv6报文中负载的长度,而不是整个IPv6数据报文的长度。没有包括整个IPv6报文中的主首部的长度。
下一个首部:长度为8位。代替IPv4中的协议字段,因为IPv6提出了扩展首部的思想,该字段就是指示下一个扩展首部的标识,也就是IPv6数据报的下一个首部。如果一个IPv6报文没有下一个首部的引入,那么该字段就和IPv4中的协议字段的作用相同。指示使用的上层协议类型。
跳数限制:该字段8位长度。替代IPv4的TTL(生命期)字段,指示在路由器之间的转发次数来限定IPv6报文的生命周期。每经过路由器一次转发,该字段减1,减到0时就把这个包丢弃。
源地址:与IPv4中的源IP地址作用一样,只是用128比特进行表示。
目标地址:与IPv4中的目标IP地址作用一样,只是用128比特进行表示。
b) Version:4代表什么?
这里的Version:4指的就是IPv4。
c) ICMP是什么协议?它就是IP协议吗?
互联网在数据传输时,必定会发生差错,有些差错是不可知的,但有些却是可以知道的。TCP/IP协议包含一个专门的用于发送差错报文的协议,这一协议即为ICMP(Internet控制报文协议)。它是TCP/IP协议族的一个IP层子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
一个标准的IP协议中,ICMP是不可少的。ICMP的主要功能包括:确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。同时ICMP的这种通知消息会使用IP进行发送,收到ICMP包的主机会分解ICMP的首部和数据与以后得知具体发生的原因。
d) ttl(time to live)具体是什么?
生存时间,表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。后来把TTL字段的功能改为“跳数限制”(但名称不变)。路由器在转发数据报之前就把TTL值减1。若TTL值降低到零,就丢弃这个数据报,不再转发。因此,如今TTL的单位不再是秒,而是跳数。TTL的意义是指明数据报在网络中至多可经过多少个路由器。