我尝试在本地网络上发送 SYN 数据包并使用 Wireshark 监控它们,一切正常,除了当我尝试将数据包发送到我自己的 IP 地址时,它“似乎”工作,因为它说 Sent 1 packet,但它是没有真正发送,我在 Wireshark 中看不到数据包,也看不到数据包的任何答案。我的设置是一台计算机 A ( 192.168.0.1 ) 和一台计算机 B ( 192.168.0.2 ),其 TCP 套接字服务器在端口 40508 上侦听。
在计算机 B 我测试:
ip=IP(src="192.168.0.2",dst="192.168.0.1")
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)
它工作正常,我看到 Wireshark 上的 SYN 数据包和来自 192.168.0.1 的 SYN/ACK 响应
在计算机 A 我测试:
ip=IP(src="192.168.0.1",dst="192.168.0.2")
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)
它也可以正常工作,我看到来自 192.168.0.2 的 SYN 数据包和 RST/ACK(没有服务器在 192.168.0.2 上的端口 40508 上侦听,因此它发送 RST/ACK)响应
但是当我尝试使用计算机 A 时:
ip=IP(src="192.168.0.2",dst="192.168.0.1")
SYN=TCP(sport=40508,dport=40508,flags="S",seq=12345)
send(ip/SYN)
Wireshark 中什么也没有出现,好像数据包从未发送过,但它像其他测试一样说:发送了 1 个数据包。并且没有返回任何错误。如果我在计算机 B 上运行相同的测试并尝试将数据包发送到它自己的 IP 地址,我会遇到同样的问题。
对于我的程序,我真的需要向我自己的 IP 地址发送一个 SYN 数据包,有没有办法做到这一点还是不可能?
提前致谢,
诺利安