Ric*_*son 6 ip size payload packet icmp
当类型为11时,ICMP数据包有效负载的大小是多少,即超过时间?由于它包含IP报头和生成ICMP消息的IP数据包有效负载的前8个字节,我认为其大小为20 + 8 = 28.
我正在重播TTL = 1的一些常见用户流量.在我倾倒的ICMP消息中,我注意到:
由于我需要通过比较这些字节来匹配ICMP超时消息和触发它们的数据包,因此这条信息是必不可少的,但我无法弄清楚为什么会发生这种情况.
问题是你从RFC 792引用了8字节的头部有效载荷,但是RFC 1812改变了要求......
Time Exceeded Message (in RFC 792)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Run Code Online (Sandbox Code Playgroud)
RFC 1812,第4.3.2.3节显着增加了ICMP错误消息中的允许有效负载(强调我的):
4.3.2.3原始消息头
从历史上看,每个ICMP错误消息都包含Internet标头和至少触发错误的数据报的前8个数据字节.由于使用IP-in-IP隧道技术和其他技术,这已不再适用. 因此,ICMP数据报应尽可能多地包含原始数据报,而ICMP数据报的长度不得超过576字节.返回的IP头(和用户数据)必须与接收到的相同,除了路由器不需要撤消对IP头的任何修改,这些修改通常在转发之前执行,这些修改是在检测到错误之前执行的(例如,递减TTL或更新选项).
您从Scapy数据包生成的ICMP错误应包含原始数据包的IP和TCP层的所有信息.