您的位置:首页 > 理论基础 > 计算机网络

TCP协议的三次握手

2016-03-29 08:49 253 查看
TCP提供的可靠数据传输服务,是依靠接收端TCP软件按序号对收到的数据分组进行逐一确认实现的。这个过程在TCP收发端开始通信时,被称为三次握手初始化。

三次握手的目的是使收发端的数据发送和接收同步,协调可以收发的数据量,建立虚连接。双方的TCP协议软件在交换数据时必须首先建立会话连接,然后才能够以数据分组为单位进行通信。接收端TCP协议软件每收到一个数据分组,在检验传输无误后,就对发送端计算机发送确认信息(ACK,Acknowledgement),通知该序号分组收到。

数据传输过程中,发送端对已经发出的分组要有记录,并且设置等待确认的计时器,对超过规定时间未收到确认的分组按照丢失重传处理;接收端的TCP协议软件会自动检查是否所有的数据分组都已收到,如果发现哪个数据分组损坏,接收端会将它舍弃,并通知发送端重传;接收端的TCP协议软件还能对未按顺序到达的数据分组进行重新排序,解决乱序问题。



收发端TCP协议软件进行带确认的数据传送过程如所示。在图中,发送端将序号为100的数据分组(SEQ=100)送出;接收端收到后,向发送端回应一个序号为200的分组(SEQ=200),内容是对收到序号为100的数据分组的确认,确认信息是对收到的数据分组序号加1(ACK=101);发送端得知序号100的分组收到后,发送下一个数据分组(序号为101, SEQ=101),并且在该分组中带有对收到序号为200的回应分组的确认(仍然是对收到的分组序号加1,ACK=201)。

最后,当接收端计算机的TCP协议软件确认收到的数据分组无误,就根据封装在分组头部的目的端口号,识别出目的应用程序,将分组中的数据取出并按照原来顺序组合好交付给相应程序。

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

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

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

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: