通过我们自己的IP地址发送

2024-05-31 13:31:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在我的本地网络上发送SYN包,并用Wireshark监视它们,一切都很好,除了当我试着将包发送到我自己的ip地址时,它“似乎”工作了,因为它说发送了1个包,但它不是真的发送的,我看不到Wireshark中的包,也看不到包的任何答案。我的设置是一台计算机a(192.168.0.1)和一台计算机B(192.168.0.2),它的TCP套接字服务器监听端口40508。

在计算机B i上测试:

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 i测试中:

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)

它也工作得很好,我看到SYN包和RST/ACK(192.168.0.2上的端口40508上没有服务器监听,因此它从192.168.0.2发送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地址,我也会遇到同样的问题。

对于我的程序,我真的需要发送一个SYN包到我自己的IP地址,有没有办法或是不可能?

提前谢谢你

诺尔希安


Tags: ipsrcsend计算机数据包seqtcpdst
1条回答
网友
1楼 · 发布于 2024-05-31 13:31:40

您的Wireshark安装监听的网络设备是什么?我怀疑它是在监听实际的网卡(以太网、wifi或其他方式,按照Wireshark FAQ),当从计算机发送给自己时,操作系统当然可以绕过设备(为什么要麻烦它?)只需通过在内核内存中的TCP/IP堆栈中复制位来完成“发送”。

换句话说,我怀疑你的包发送正常,只是Wireshark可能看不到它。为了验证这一假设,您可以尝试(例如)使用浏览器访问本地计算机上存在的和不存在的端口,并查看Wireshark是否看到那些数据包。

相关问题 更多 >