我使用 UNIX 套接字 API 的用户空间应用程序是否有可能接收到 IP TTL 值等于 0 的 UDP 数据包,或者它是否总是必须为 1 或更大?
收到时 IP TTL 值为零
网络工程
ip
包分析
2022-02-04 14:45:52
2个回答
数据包将以 TTL >= 1 传送。
Internet 协议RFC 760说“生存时间:8 位 [...] 如果此字段包含值零,则应销毁数据报。” 如果路由器减少 TTL 并找到零,它应该向发起者发送 ICMP TTL 过期消息;如果数据包中还有任何生命,它会转发它。
对相隔几个路由器的两台主机进行快速测试证实了这一点:
发送 TTL 3 时未到达
$ ping -c 1 -t 3 192.168.0.28
From 192.168.253.0 icmp_seq=1 Time to live exceeded
发送 TTL 4 到达
$ ping -c 1 -t 4 192.168.0.28
64 bytes from 192.168.0.28: icmp_req=1 ttl=62 time=51.0 ms
在接收端到达 TTL 1
17:53:19.346312 IP (tos 0x0, ttl 1, id 12703, offset 0, flags [DF], proto ICMP (1), length 84)
172.30.20.88 > 192.168.0.28: ICMP echo request, id 4949, seq 1, length 64
可能的?是的,如果上游路由器没有丢弃它,则忽略标准。通常?不会。TTL 值为 1 是应该转发的最低值。
其它你可能感兴趣的问题