IPv4_FRAGMENTS_01: IP Reconstruct fragments validation

目的

目标主机为了组装网络报文的分片包,网络层协议模块根据这些分片包的四个字段:Identification、Source、Destination、Protocol具有相同的值,来组装它们

也就是目的主机的网络层模块收到分片包后,需要组装成完整的报文,再把数据送到上层,那如何区分这些分片包是来自一条完整的报文呢,就是根据Identification、Source、Destination、Protocol这四个字段的值都相同

测试步骤

  1. Tester:构造一条ICMP Echo Request报文,发送给DUT,包括:
  • 源IP地址是Tester
  • 目的IP地址是DUT
  • Identification字段设置为id
  • Protocol字段设置为ICMP
  • Fragment Offset字段设置为0
  • Flags字段的MF标志位设置为1
  • ICMP报文的前半部分放入IP payload中
  1. Tester:发送一条IP报文,包括:
  • 源IP地址是Tester
  • 目的IP地址是DUT
  • Identification字段设置为id
  • Protocol字段设置为ICMP
  • Fragment Offset字段设置为上一个报文的IP payload字节数
  • Flags字段的MF标志位设置为0
  • ICMP报文的后半部分放入IP payload中
  1. Tester:监听在网卡上
  2. DUT:发送ICMP Echo Reply
  3. Tester:验证ICMP Echo Reply里ICMP首部的Identifier、Sequence Number和Data与发送的两个分片包组成的ICMP Echo Request的相同

从这里能看出,分片包要如何构造了

期望结果

4, DUT:发送ICMP Echo Reply
5, Tester:验证ICMP Echo Reply里ICMP首部的Identifier、Sequence Number和Data与发送的两个分片包组成的ICMP Echo Request的相同

CANoe TC8

TC8:IPv4_FRAGMENTS_01-05_网络

TC8:IPv4_FRAGMENTS_01-05_ide_02

参考

Derived from RFC 791 s2.3 p9 Function Description (Fragmentation), RFC 791 s3.2 p29 Discussion (Identification), RFC 1122 s3.3.2 p56 Reassembly (MUST)

上面参考的内容详细解释了分片与重组的思路,不过由于内容太多,我们不在这里展开,后续讲到这两个RFC文档时,再详细说明与分析

IPv4_FRAGMENTS_02: IP Reconstruct fragments, negative test on id