TCP三次握手时,Linux内核会维护哪两个队列?

74 阅读1分钟

1.半连接队列。服务器收到客户端的SYN分组后,会把连接存储到半连接队列,然后返回SYN-ACK分组。

2.全连接队列。服务器端收到第三次ACK分组后,把连接从半连接队列中移除,然后创建新的连接,将其加入全连接队列。

全连接队列满了会发生什么?

全连接队列满了既可以丢掉连接,也可以向客户端发送RST报文断开连接。由参数tcp_abort_on_overflow来确定,如果这个值为0,服务器端丢掉第三次ACK,如果这个值为1,服务器回复RST报文。

什么时候把tcp_abort_on_overflow设为1,什么时候设为0?

1.当客户端想知道什么原因连不到服务器的时候,把该值设为1,如果是因为全连接队列满了,客户端会收到connection reset by peer错误。

2.一般情况下设为0,有利于应对突发流量。