三次握手

重点参考:http://blog.pfan.cn/xman/44384.html就是下面的第二个参考文章

求助编辑百科名片

三次握手(three times handshakethree-way handshaking)所谓的三次握手即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP

目录

基本简介

基本原理

TCP头结构

标志控制

数据传输

序列标识

编辑本段基本简介

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

  第一次握手:建立连接时,客户端发送syn(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)

  第二次握手:服务器收到syn包,必须确认客户的SYNac

  

  http://imgsrc.baidu.com/baike/abpic/item/f6428f8fe327dfe5503d9248.jpg

三次握手

k=j+1),同时自己也发送一个SYN包(syn=k注意:这里的k不等于j+1Edit by deven),即SYN+ACK包,此时服务器进入SYN_RECV状态;

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

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

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

  Backlog参数:表示未连接队列的最大容纳数目。SYN-ACK重传次数服务器发送完SYNACK包,如果未收到客户确认包,服务器进行首次重

  

  http://imgsrc.baidu.com/baike/abpic/item/3b6833f516421401bd310946.jpg

三次握手协议

感觉这个图很形象,服务器第三次收到的确认包Receive ACK不等于x+1+1

我感觉上面写的是Receive ACK等于x+1+1,错误的

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

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