Networking 如何在没有应答的情况下监听tcp端口?

Networking 如何在没有应答的情况下监听tcp端口?,networking,tcp,winsock,winsock2,syn,Networking,Tcp,Winsock,Winsock2,Syn,我一直在用C实现一个数据包转发器,但遇到了这个有趣的问题 我注意到,如果我使用winsock在tcp端口上侦听,当接收到syn时,它会发回一个syn ack。如果我不侦听,它将发送rst ack以指示端口已关闭。我希望端口根本不会应答,因为我直接在winpcap接口上进行嗅探 我的问题有什么解决办法或变通办法吗?我在UDP上也有同样的问题,但打开端口当然可以修复它,并防止无法访问ICMP主机。现在我需要一个TCP的解决方案 谢谢如果您想在不建立连接的情况下转发数据包,那么最好使用iptables

我一直在用C实现一个数据包转发器,但遇到了这个有趣的问题

我注意到,如果我使用winsock在tcp端口上侦听,当接收到syn时,它会发回一个syn ack。如果我不侦听,它将发送rst ack以指示端口已关闭。我希望端口根本不会应答,因为我直接在winpcap接口上进行嗅探

我的问题有什么解决办法或变通办法吗?我在UDP上也有同样的问题,但打开端口当然可以修复它,并防止无法访问ICMP主机。现在我需要一个TCP的解决方案


谢谢

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

TCP在两个对等方之间建立双向链路,并且在连接打开供使用之前,每一端必须同步并确认另一端的SYN。另一方面,UDP是一种“即发即忘”协议,它不关心是否接收到任何其他设备。转发数据包与TCP、UDP或任何其他传输或更高级别的协议无关,因此我不确定为什么会出现问题。TCP和其他传输协议是数据包的有效负载,而网络协议不知道数据包的有效负载是什么,因此,数据包的转发与传输协议无关。数据包由网络协议地址转发。Ron,尽管我想执行端口转发?An tyChen,听起来不错,但我很乐意在windows上用C语言编程实现platform@EranNahshon看来你还不明白我和Ron Maupin的意思。没有连接就无法转发。@Eranahshon,端口转发不是包转发。您正在混淆网络层。端口转发与NAPT有关,但数据包转发只是一种简单的路由,二者实际上没有任何关系,只是在WAN路由器上进行NAT通常比较方便。路由器在没有NAT或NAPT的情况下可以很好地路由数据包。