【发布时间】:2021-01-25 07:51:30
【问题描述】:
我一直在用 C 实现一个数据包转发器,偶然发现了这个有趣的问题。
我注意到如果我用winsock 监听tcp 端口,它会在收到syn 时发回syn-ack。如果我不听,它会发送 rst-ack 以指示端口已关闭。我希望端口根本不会响应,因为我正在使用 winpcap 直接在接口上嗅探。
我的问题有什么解决方案或变通方法吗?我对 UDP 也有同样的问题,但当然打开端口修复它并防止 ICMP 主机无法访问。现在我找到了 TCP 的解决方案。
谢谢
【问题讨论】:
-
TCP 在两个对等点之间建立了一条双向链路,并且每一端都必须先 SYN 并 ACK 另一个 SYN,然后才能打开连接以供使用。另一方面,UDP 是一种即发即弃的协议,它不关心任何其他设备是否接收到。转发数据包与 TCP、UDP 或任何其他传输或更高级别的协议无关,所以我不确定为什么会出现问题。
标签: networking tcp winsock winsock2 syn