gpt4 book ai didi

c++ - 拒绝来自主机的连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:50 31 4
gpt4 key购买 nike

我正在使用套接字编写一个简单的 TCP 服务器应用程序。据我所知,我可以在调用 accept() 后获得客户端的 ip 地址和端口。

现在假设我有一个黑名单,我想从我的服务器上禁止一些 IP 地址。有比接受连接然后断开连接更好的方法吗?

有没有办法在接受连接之前获取客户端的ip和端口?如果我们有 accept() 为什么我们没有类似 refuse() 的东西呢?有没有办法拒绝连接或简单地忽略来自主机的连接尝试?

最佳答案

TCP 实现通常在用户进程访问连接之前完成 TCP 3 次握手,而 accept() 函数只是从队列中获取下一个连接。所以假装服务器宕机已经来不及了。这与常规 TCP 数据的工作方式相同;在发送 TCP ACK 之前,TCP 实现不会等待应用程序实际recv() 数据。这可以防止另一端不必要地重新传输正确接收的数据包,并允许吞吐量保持高水平,即使应用程序因其他事情而陷入困境。在新连接(SYN 数据包)的情况下,这也允许内核保护自己(和应用程序)免受 SYN 泛洪攻击。

虽然不可移植,但许多平台提供某种防火墙功能,允许根据 IP 地址/端口过滤传入连接。然而,这通常是在系统范围内配置的,而不是由单个应用程序配置的。

关于c++ - 拒绝来自主机的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1116225/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com