好记性不如铅笔头

编程

TCP/IP协议中backlog概念介绍

本文转自【 https://www.cnblogs.com/orgliny/p/5780796.html 】,有大量删改。
参考链接
https://my.oschina.net/moooofly/blog/664608

TCP建立连接是要进行三次握手,但是否完成三次握手后,服务器就处理(accept)呢?

backlog其实是一个连接队列,在Linux内核2.2之前,backlog大小包括半连接状态和全连接状态两种队列大小。

半连接状态为:当服务器处于Listen状态时收到客户端SYN报文时放入半连接队列中,即SYN queue(服务器端口状态为:SYN_RCVD),从服务器(SYN+ACK)响应客户端后,到客户端的ACK报文到达服务器之前,一直保留在半连接状态中。
全连接状态为当服务器接收到客户端的ACK报文后,该条目将从半连接队列搬到全连接队列尾部,即 accept queue (服务器端口状态为:ESTABLISHED)。

在Linux内核2.2之后,分离为两个backlog来分别限制半连接(SYN_RCVD状态)队列大小和全连接(ESTABLISHED状态)队列大小。

Leave a Reply

6 + 7 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据