gpt4 book ai didi

sockets - 是 gen_tcp :accept/1 safe?

转载 作者:行者123 更新时间:2023-12-04 20:22:54 28 4
gpt4 key购买 nike

我正在实现一个接受许多并发连接的服务器。

我使用了这个结构:

loop(Sock) ->
case gen_tcp:accept(Sock) of
{ok, CSock} ->
fork_handling_process(CSock);
{error, Reason} ->
do_something_else();
end,
loop(Sock).

我想知道是否有人向我发送了 SYN,但从未向我发送 SYN ACK 以响应我的服务器 ACK,因为我调用 gen_tcp:accept 没有超时,我的服务器会被该客户端永远阻塞吗?

顺便说一下,我认为这种情况很难模仿,所以如果您有尝试的方法,请告诉我。

提前谢谢。

最佳答案

当您聆听/接受时,它与您描述的有点不同:

一些客户端想要连接:它发送一个 SYN,然后您的操作系统发送一个 SYN/ACK(不涉及 erlang),当您收到 ACK 时 gen_tcp:accept 将返回。

当有人向您发送 SYN 而没有其他任何内容时(如果大量发送,这将是 SYN 洪水攻击),那么操作系统资源将被保留,但您的 erlang 代码中不会发生任何事情,因为三向握手尚未完成。

许多操作系统都特别注意 SYN 泛洪攻击,以避免过多的资源消耗。

关于sockets - 是 gen_tcp :accept/1 safe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4385319/

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