我阅读了一些文章,并检查了inet_listen()
-> inet_csk_listen_start()
等Linux内核代码,看来syscall的backlog
参数listen()
只影响接受的队列,而不影响 SYN接收的队列:
sk->sk_max_ack_backlog = backlog;
即象征意义accept-queue + syn-received-queue != backlog
。我不知道发生了什么事。本文指出:
接受和SYN队列的最大允许长度取自应用程序传递给listen(2)syscall的backlog参数。
但是MAN页中没有类似的东西。
此外,在Linux的情况下:是backlog
的提示,提到这里也确实限制了队列?