TCP连接之未连接队列的理解

网络 网络管理
tcp服务器在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

tcp服务器在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

[[132589]]

***次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:

未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。

Backlog参数:表示未连接队列的***容纳数目。

SYN-ACK 重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行***重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的***重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。

半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

责任编辑:蓝雨泪 来源: CSDN博客
相关推荐

2019-09-16 09:29:01

TCP全连接队列半连接队列

2021-10-27 18:36:50

TCP 队列全连接

2020-10-14 14:31:37

LinuxTCP连接

2015-10-09 13:15:03

TCP网络协议

2010-07-07 10:45:22

TCP UDP协议

2010-05-10 15:48:37

Unix连接

2014-09-29 09:29:20

TCP

2017-09-27 09:41:44

2021-01-13 11:11:29

TCP连接耗时网络协议

2023-12-01 14:57:22

TCP连接

2021-10-14 20:33:16

TCP连接关闭

2021-05-06 09:18:18

SQL自连接数据

2010-06-13 15:37:24

TCP协议

2021-02-18 22:18:50

TCP 服务器源码

2014-08-22 09:10:46

2019-09-23 08:27:15

TCP长连接心跳

2021-03-17 09:51:31

网络编程TCP网络协议

2019-12-26 09:28:34

TCPPython通信

2019-11-17 22:11:11

TCPSYN队列Accept队列

2009-08-24 17:20:13

C#网络通信TCP连接
点赞
收藏

51CTO技术栈公众号