如何在不应答的情况下监听tcp端口?

问题描述

我一直在用C实现数据包转发器,偶然发现了这个有趣的问题。

我注意到,如果我用winsock在tcp端口上侦听,则在收到syn时会发回syn-ack。如果我不听,它会发送rst-ack来指示该端口已关闭。我希望该端口根本不回答,因为我直接在Winpcap的界面上嗅探。

我的问题是否有解决方案或解决方法?我在UDP上也遇到了同样的问题,但是打开端口当然可以解决该问题,并且可以防止ICMP主机无法访问。现在我找到了TCP的解决方案。

谢谢

解决方法

如果要在不建立连接的情况下转发数据包,则最好使用iptables设计一些规则。 TCP是一种可靠的传输协议,这意味着如果您想接收数据包(它不在乎是要使用它还是仅转发),那么它必须通过三向握手建立连接。