TCP创建链接为何是三次握手,为何不是两次或四次?

2022年05月12日 阅读数:5
这篇文章主要向大家介绍TCP创建链接为何是三次握手,为何不是两次或四次?,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。


什么是三次握手


学过网络编程的人,应该都知道TCP创建链接的三次握手,下面简单描述一下这个过程。 编程

TCP创建链接为何是三次握手,为何不是两次或四次?_客户端

如图所示 网络

第一次握手:客户端发送TCP包,置SYN标志位为1,将初始序号X,保存在包头的序列号(Seq)里。 ide

第二次握手:服务端回应确认包,置SYN标志位为1,置ACK为X+1,将初始序列号Y,保存在包头的序列号里。 blog

第三次握手:客户端对服务端的确认包进行确认,置SYN标志位为0,置ACK为Y+1,置序列号为Z。element


为何不是两次


咱们先来将三次握手这个过程捋一遍。(S-服务端,C-客户端)资源

第一次握手后,S能够确认本身收报文与C发报文的功能都正常,而C呢,它什么都不能确认。 网络编程

第二次握手后,C能够确认本身的收发报文与S的收发报文功能都正常,也就是认为链接已创建。 it

那么第三次呢,S也能够确认双方可以正常通讯。class


假想一下,若是咱们去掉了第三次呢? 请求

由于咱们不进行第三次握手,因此在S对C的请求进行回应(第二次握手)后,就会理所固然的认为链接已创建,而若是C并无收到S的回应呢?此时,C仍认为链接未创建,S会对已创建的链接保存必要的资源,若是大量的这种状况,S会崩溃。 

所以第三次握手是必要的。


假想一下,若是咱们去掉了第三次呢? 
由于咱们不进行第三次握手,因此在S对C的请求进行回应(第二次握手)后,就会理所固然的认为链接已创建,而若是C并无收到S的回应呢?此时,C仍认为链接未创建,S会对已创建的链接保存必要的资源,若是大量的这种状况,S会崩溃。 
所以第三次握手是必要的。