tcp链接的三次握手

为何tcp链接须要三次握手才能创建链接

主要是为了初始化sequence number的初始值,通讯的双方要互相通知双方的sequence number,这个要做为之后数据通讯的序号,保证之后不会由于网络上的传输问题而乱序,tcp会使用这个序号来拼接数据。所以,在服务器回发它的sequence number之后,还须要发送确认报文发送给服务器告知服务器客户端已经收到了你的报文。
所以,若是只是两次握手的话,那么client发送一个请求,server接收到,在回复一个,这就表示server收到了client的sequence number,可是若是client不给server回复一个消息的话,那么server将没法肯定client是否已经收到了本身的seq。
服务器

  1. 第一次握手
    客户端向服务端发送链接请求报文段。该报文段的头部中SYN=1,ACK=0,同时选择一个初始序号seq=x。请求发送后,客户端便进入SYN-SENT状态。网络

  2. 第二次握手
    服务端收到链接请求报文段后,若是赞成链接,会发送一个应答:SYN=1,ACK=1,seq=y,ack=x+1。发送完应答后服务端进入SYN-RCVD状态。tcp

  3. 第三次握手
    客户端收到服务端链接赞成的应答后,还会向服务端发送一个确认报文段,表示:服务端发来的链接赞成应答已经成功收到。该报文段的头部为:ACK=1,seq=x+1,ack=y+1。该报文发送完毕后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。server

相关文章
相关标签/搜索