TCP协议连接的三次握手

描述

  tcp协议三次握手的作用

  TCP协议的三次握手过程具有以下几个重要作用:

  1. 确认双方的通信能力:通过三次握手,客户端与服务端能够确保彼此的网络连接是可用的。客户端发起的SYN报文和服务端返回的SYN+ACK报文都包含了对方的初始序列号和通信能力信息,通过互相确认这些信息,双方确认彼此的能力和正确性。

  2. 同步双方的初始序列号:在TCP连接中,序列号用于标识每个数据段的位置。在三次握手的过程中,客户端和服务端会交换各自的初始序列号,并确认对方的序列号范围。这样,双方就能够同步序列号,为后续的数据传输和数据校验提供正确的依据。

  3. 防止旧连接的建立:通过三次握手,能够防止旧连接的建立。由于网络通信是不可靠的,可能会出现数据包延迟、丢失和重复等情况。如果没有三次握手,旧的连接请求可能会在网络中滞留,导致后续的连接请求被误认为同一个旧连接的请求。通过三次握手,能够确保双方都对该连接进行了确认和同步,从而避免了旧连接的干扰。

  4. 防止资源浪费:通过三次握手,可以避免服务端资源被无效请求浪费。服务端收到客户端的连接请求后,会分配一定的资源用于处理该连接。通过三次握手,可以确保只有真正的有效连接请求才会被服务端接受和处理,从而避免了资源的浪费和滥用。

  TCP协议连接的三次握手

  ①服务器进程B被动打开连接,进入LISTEN(收听)状态,等待客户端发出请求

  ​ ②客户进程A主动打开连接,向B发送连接请求报文段(报文段不挟带数据),SYN=1,序号=x,进入SYN-SENT(同步已发送)状态 ​

  ③服务器进程B收到请求后,向A发送确认报文段(报文段不挟带数据),SYN=1,ACK=1,确认号=x+1,序号=y,进入SYN-RCVD(同步收到)状态 ​

  ④客户进程A收到确认后,向B发送确认报文段(报文段可以携带数据,不携带数据时不消耗序号,下一个序号依然是x+1),ACK=1,确认号=y+1,序号=x+1,进入ESTABLISHED(已建立连接)状态,B收到确认后,也进入ESTABLISHED状态

服务器

  为什么A需要向B发送最后一个确认报文段:为了防止“已失效的连接请求报文段”突然又传到B发生错误,以至于B一直等待A发送数据,B的资源被浪费。

  tcp协议三次握手的工作原理

  TCP协议的三次握手是建立一个可靠连接的过程,其工作原理如下:

  1. 客户端发送SYN报文:客户端(Client)首先向服务端(Server)发送一个SYN(同步序列编号)报文。该报文中,客户端会选择一个初始的序列号(Sequence Number)并设置SYN标志位为1,表示希望建立连接。此时,客户端进入SYN_SENT状态。

  2. 服务端接收SYN报文并返回SYN+ACK报文:服务端在收到客户端的SYN报文后,会向客户端发送一个SYN+ACK报文作为回应。该报文中,服务端同样会选择一个初始的序列号,并将ACK标志位设置为1,表示确认收到客户端的SYN报文,并表示服务端也愿意建立连接。同时,服务端将自己的初始序列号+1作为确认号(Acknowledgment Number)。

  3. 客户端确认服务端的SYN+ACK报文:客户端收到服务端的SYN+ACK报文后,会发送一个确认的ACK报文给服务端。该报文中,客户端会确认服务端的SYN,并将序列号+1,表示连接已成功建立。现在,客户端和服务端都进入ESTABLISHED状态,可以进行数据的传输了。

  如果在握手过程中某个阶段超时或失败,会触发重新发送相应的报文,直到连接建立成功或达到最大重试次数。

  通过三次握手,TCP协议完成了对双方通信能力的确认、同步序列号和建立可靠连接的过程。这样,在后续的数据传输中,客户端和服务端就都能够确保数据的可靠性和有序传输,并能够进行适当的流量控制和拥塞控制。

  审核编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分