TCP三次握手协议

来源:互联网 发布:存活的数据叫删失数据 编辑:程序博客网 时间:2024/05/16 20:30

三次握手针对于TCP的连接(因TCP连接是可靠的连接)而采用的。

名词解释:

针对本文中的用到的一些名词,作如下解释:

SYN包:同步序列号,他是TCP连接的第一个数据包,非常小,此包表明发送方已做好会话准备,只有发送服务请求方才发送SYN

ACK包:应答字段

具体描述:

下面是对TCP三个握手建立一个连接的具体描述:

第一次握手:建立连接时,客户端发送syn包到服务器,并将客户端状态置为SYNSEND状态,等待服务器确认;

第二次握手:服务器收到syn包,确认客户端的syn,同时,服务器端返回给客户端一个syn包,即此时发送给客户端的是:SYN包(服务器端syn包)+ACK包(接收到客户端的syn包确认包),此时,服务器端修改状态为SYN_RECV状态;

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

整个过程如下图所示:

TCP三次握手协议 - 断鸿零雁 - 断鸿零雁的博客
 


状态说明:

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

BACKLOG参数:表示未连接队列的最大容纳数目。

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

半连接存活时间:半连接队列的条目存活的最长时间,即服务器从收到客户端发来的SYN包到确认这个报文无效的最长时间,改时间值是所有重传请求包的最长等待时间总和。这个时间也被称为TIMEOUT时间或者SYN_RECV存活时间。

0 0