ICMP目标不可达(端口不可达)数据包中的字段Raw无效

时间:2014-03-19 10:22:55

标签: python udp scapy icmp

我正在使用scapy编写python两个脚本,在服务器端执行,另一个在客户端执行。在客户端,脚本将UDP数据包发送到服务器上的关闭端口。我的脚本的目的是测试客户端是否接受从服务器收到的无效ICMP数据包。在服务器端,我将嗅探传入流量并响应每个UDP数据包,ICMP端口无法访问,每次我将修改ICMP数据包中的字段(false值)以测试是否收到数据包。我的问题是:当我修改Raw字段(有效负载)时,客户端是否接受此ICMP数据包是否正常?我的意思是Raw字段没有控制权。我希望我的问题很明确。非常感谢你。

1 个答案:

答案 0 :(得分:0)

好吧,至少对于ID和序列字段,这些可以是任何16位编号组合,内核将接受该数据包并将其转发给所有已注册的ICMP套接字处理程序。

但是如果校验和字段不正确,接收内核将不会将标头传递给处理程序(但它会链接层嗅探器)。此外,根据我测试的内容,如果您将类型/代码标志更改为已知数字的错误组合或协议未定义的数字,则接收内核不会将其传递给处理程序(但链接层嗅探器仍会看到它)。

注意我没有使用scapy,只使用直接的python / socket代码,而我的系统是Linux。