打开不带套接字的tcp / udp端口

时间:2020-10-08 06:38:18

标签: c networking tcp network-programming winpcap

我已经开始使用winpcap,并且在使用tcp / udp端口时遇到了一个有趣的情况。我写了一个数据包转发器,嗅探接口并转发来自指定端口的数据包。我没有打开端口,因为我直接从界面上嗅探。问题在于,tcp / ip堆栈在关闭的tcp端口上回答RST,ACK,而在关闭的UDP端口上无法访问ICMP目标。

我需要以关闭的端口无法回答任何会中断对话的方式来解决该问题。

有没有一种方法可以将数据包从到达的TCP / IP堆栈中删除? 我可以禁用RST,ACK和目的地不可达的自动应答吗? 我可以收听不会在SYN数据包上重播SYN ACK的TCP吗?

希望我很清楚,谢谢。

1 个答案:

答案 0 :(得分:0)

我能想到的两种解决方案:

  • 不要使用您的PC IP地址,使用其他IP地址并实施小的ARP应答逻辑,这比尝试阻止数据包到达操作系统的麻烦程度要小。
  • 使用WinDivert驱动程序https://www.reqrypt.org/windivert.html,我知道它可以使OS丢弃数据包,但不确定是否也包括SYN数据包。