问题描述
我正在使用Scapy发送一个简单的ARP请求。我注意到,即使我只给了一个数据包,它也会发送多个数据包:
from scapy.sendrecv import sr1
from scapy.layers.l2 import ARP
from typing import Optional
def request_mac(target_ip: str,**kwargs) -> Optional[str]:
req = ARP(pdst=target_ip)
reply = sr1(req,**kwargs)
return reply and reply[ARP].hwsrc
request_mac("192.168.123.118",timeout=5)
在Wireshark中,我可以看到它发出了两个ARP而不是一个:
Begin emission:
Finished sending 1 packets.
................................................................................................................
Received 112 packets,got 0 answers,remaining 1 packets
如果将retry
参数设置为sr1
,则每显式发送一个,我都会收到两个数据包。
这是预期的行为吗?有没有办法让它只发送一个?当我做一个端口扫描器时,没有看到TCP段的重复发送,因此看来它可能特定于ARP?