在哪种情况下,TCP接收器会收到一个有效的SYN段但仍然会发送一个SYN-ACK段作为响应?
答案 0 :(得分:1)
这与平台有关。在Unix中,如果积压队列已满,则会丢弃传入的SYN。在其他平台中,这种情况会导致RST。
答案 1 :(得分:0)
如果系统内存不足,可以在系统内部丢弃收到的SYN数据包。另一种情况是,如果服务器处理其积压队列的速度很慢,那么它可能会达到高水位线,并且任何新的recv SYN都将被丢弃。积压队列深度是通过linux中的listen()调用中的第二个参数设置的。使用Linux 2.2更改了TCP套接字上的backlog参数的行为。现在它指定了等待接受的完全建立的套接字的队列长度,而不是未完成的连接请求的数量。可以使用/ proc / sys / net / ipv4 / tcp_max_syn_backlog设置不完整套接字的队列的最大长度。 linux上默认值为128。较低的值会降低负载下的服务器响应时间。