在linux装了sendip之后,使用man sendip查看功能和参数。
发送icmpv6的error message的过程如下:(1和2之间的间隔不能超过30s,因为后面的包会根据前面的icmpv6的cache进行匹配)
1> ping6 64:ff9b::303:303(目的ip) (会有icmpv6 request包 (下图16)和 echo reply包(下图包19))
2> sendip -p ipv6 -6s 2001:db0::1096 -p icmp -ct 2 -cd 0 -d 0x000002006000000000403a400064ff9b00000000000000000303030320010db00000000000000000000010968100930ff13100014184c258b9150e0008090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363764:ff9b::303:303
其中-ct是type,cd是code。data由两部分组成,如下描述:
在data中00000200是填充Message body这32位的,通过wireshark分析包时,这个值会显示为MTU的值。
data后面的6000000000403a400064ff9b00000000000000000303030320010db00000000000000000000010968100930ff13100014184c258b9150e0008090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637这部分值是前面发送的icmpv6包的回包中(如下图中的包19)的IPV6和ICMPv6部分的十六进制数据()。