IPv4_TTL_01: A host MUST NOT send a datagram with a Time-to-Live (TTL) value of zero

目的

主机不能发送TTL值为0的数据报

换句话说,主机发送的IP报文的TTL值必须不为0

测试步骤

  1. Tester:发送一条ICMPv4 Echo Request报文
  2. DUT:发送一条ICMPv4 Echo Reply,其中TTL值大于0

期望结果

2, DUT:发送的IP数据报中的IP首部里的TTL字段值大于0

3.0中期望结果的描述有所不同,“DUT:发送一条ICMPv4 Echo Reply,其中TTL值大于0”

CANoe TC8

TC8:IPv4_TTL_01-05_udp

参考

Derived from RFC791 section 3.1 and 3.2, RFC1122 section 3.2.1.7

Time to Live: 8 bits

This field indicates the maximum time the datagram is allowed to remain in the internet system. If this field contains the value zero, then the datagram must be destroyed. This field is modified in internet header processing. The time is measured in units of seconds, but since every module that processes a datagram must decrease the TTL by at least one even if it process the datagram in less than a second, the TTL must be thought of only as an upper bound on the time a datagram may exist. The intention is to cause undeliverable datagrams to be discarded, and to bound the maximum datagram lifetime.

TTL:8bit

该字段表示允许数据报在网络中保留的最长时间。如果该字段值为0,则数据报必须被销毁。此字段在处理IP报头时被修改。时间以秒为单位,但由于每个处理数据报的模块必须将TTL 至少减少1,所以即使它在不到一秒的时间内处理数据报,也把TTL减少1,因此TTL被认为是数据报在网络中可能存在的最大时间,而不是实际能存在的时间。TTL的目的是使无法传递的数据报被丢弃,并限制数据报最大生命周期

这里没有说明白的是,TTL值为0,报文必须被销毁,指的是在网络中,被路由器等路由转发设备接收到时,不能转发出去,因为TTL值已经为0,无法再减去了,所以就只能丢弃,而目的主机收到TTL值为0的IP报文时,是可以接收的,不会丢弃

IPv4_TTL_03: Ensure that the DUT decrements the TTL of a forwarded IPv4 Packet by at least 1

这条case在TC8 2.0中被弃用,在3.0中被删除,弃用的原因是这条用例仅适用于路由器

目的

确保DUT把接收到的IP报文转发出去时TTL值比接收时的要小

路由设备在接收到IP报文时,会把TTL值至少减1,然后再路由转发出去

测试步骤

  1. Tester:发送一条IPv4报文,TTL值为TTL1,且大于2
  2. DUT:发送这条IPv4报文,TTL值小于TTL1

期望结果

2, DUT:转发这条IPv4报文,其中TTL值小于TTL1

CANoe TC8

由于在TC8 2.0规范中已弃用,CANoe TC8 demo中这条case无法执行

参考

Derived from RFC791 section 3.1 and 3.2, RFC1122 section 3.2.1.7

上一条case已经描述过,这里不再赘述

IPv4_TTL_04: Ensure that the DUT discards an IPv4 packet with a TTL of 0 if the IPv4 packet has to be forwarded

这条case在TC8 2.0中被弃用,在3.0中被删除,弃用的原因是这条用例仅适用于路由器

目的

确认DUT接收到TTL值为0的IP数据报后,不会转发而是丢弃

测试步骤

  1. Tester:发送一条TTL值为0的ICMPv4 Echo Request报文
  1. DUT:不转发这条ICMPv4 Echo Request

期望结果

2, DUT:不转发丢弃这条报文

CANoe TC8

由于在TC8 2.0规范中已弃用,CANoe TC8 demo中这条case无法执行

参考

Derived from RFC791 section 3.1 and 3.2, RFC1122 section 3.2.1.7

TTL值为0的报文,会被丢弃,上面已经介绍过

IPv4_TTL_05: Packets with 0 or 1 TTL are not discarded by hosts

目的

主机不能仅仅因为接收到的数据报的TTL小于2就丢弃它

这和报文的TTL值为0时主机不能发送它,不矛盾

测试步骤

  1. Tester:发送一条ICMP Echo Request报文,其中TTL值为:
  • 0
  • 1
  1. Tester:监听在网卡上
  2. DUT:发送ICMP Echo Reply

期望结果

3, DUT:发送ICMP Echo Reply

CANoe TC8

TC8:IPv4_TTL_01-05_字段_02

TC8:IPv4_TTL_01-05_IPv4_03

参考

Derived from RFC 1122 s3.2.1.7 p34 Time-to-Live: RFC-791 Section 3.2 (MUST)

RFC1122中

A host MUST NOT discard a datagram just because it was received with TTL less than 2.

主机不能仅仅因为接收到的数据报的TTL小于2就丢弃它

如果是目的主机,就会接收