tcp为什么要三次握手,而不能二次握手
客户进程首先创建tcb然后找服务器发出请求报文,服务器接到客户的请求报文如果同意连接就向客户发送确定,客户收到服务器的确认还要向服务器再次确认。 这就是三次握手。

TCP为什么是三次握手,为什么不是两次或者四次
三次握手的目的:是为了确认双方都有收发数据的能力。 第一次: A->B,证明A有发消息的能力。第二次: ->B && B->A,证明B有收消息,并且有发消息的能力。第三次: A->B,证明A有收消息的能力。 二次握手达不到目的,四次多余。

TCP为何采用三次握手来建立连接,若采用二次握手可以吗?
建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。 (1)TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。 (3)采用两次握手不行,原因就是上面说的失效的连接请求的特殊情况。
三次握手是为了防止已失效的连接请求再次传送到服务器端。 二次握手不可行,因为:如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进程提供服务,这样会造成服务方资源的无谓浪费。 采纳哦
三次握手是为了防止已失效的连接请求再次传送到服务器端。 二次握手不可行,因为:如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进程提供服务,这样会造成服务方资源的无谓浪费。

TCP 为什么是三次握手,而不是两次或四次?
三次握手的目的:是为了确认双方都有收发数据的能力。第一次:A->B,证明A有发消息的能力。第二次:->B&&B->A,证明B有收消息,并且有发消息的能力。第三次:A->B,证明A有收消息的能力。二次握手达不到目的,四次多余。当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

TCP 为什么是三次握手,而不是两次或四次
两次太少,如果第一次握手时丢包了,那么如何判断网络是否通畅?因为两次丢包的意思是,对方确认并回复,如果没有收到回复,己方如何认为,他丢包了还是我丢包了?那就重传吧,如果并没有对方这个人,那么可能无限重传下去,浪费网络资源。三次的话,因为对方也需要收到回复,那么如果是己方丢第一个包,那么接下来几次重传没有收到任何回复,那么认为网络不好停止就可以了,如果网络通畅,对方一定会收到其中某一个请求,那么进行回应,如果此时不对其进行回应,也就是只握手两次,目标主机无法得知此包是否到达,也就不知道是否要进行重传,如果此包丢了,那就不会去重传,己方只能认为没有目标主机,连接失败。那如果是三次,在第二次握手时丢包了,对方没有收到确认,就会重传,重传之后,己方一定会收到某一个包。这样双方都知道对方的确实存在,对于第三次的握手只需要在后续数据传输中捎带确认就可以了。所以第四次握手是不需要的,有了第四次那就有第五次第六次.......,这样是没有意义的,只需要确认对方确实存在就可以了,后续数据传输就能捎带确认了

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/61065.html。