TCP建立连接为什么是三次握手而不是两次握手

为什么TCP建立连接需要三次握手

大家好,关于TCP建立连接为什么是三次握手而不是两次握手很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于tcp为什么要三次握手的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

  1. TCP是三次握手的
  2. tcp每次发送数据都要三次握手吗
  3. 如何快速理解TCP三次握手,四次挥手
  4. TCP建立连接为什么是三次握手而不是两次握手

TCP是三次握手的

TCP握手协议:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。1、第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

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

3、第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据。

tcp每次发送数据都要三次握手吗

tcp每次发送数据都要三次握手!

假设A就是客户程序,B就是TCP服务器程序

第一次握手:A的TCP客户端给服务器端TCP会发送一个特殊的TCP数据段,其是不包含应用层数据的,单它需要一个数据段头部的一个标记字段,SYN=1(该信号是指请求和服务器端计算机的序号同步),并会发送一个初始顺序号。

第二次握手:B收到A的连接请求报文后,如果同意就会向A回复确认信息。SYN依旧为1,此事确认信息seq+1(意思应该是我收到了,我确认了你的初始序号),并且发送自己的序列号seq=y(sever_isn)。这时也是不允许携带应用层数据的。(虽然被授予连接了,但是没有获得服务器的允许连接分配缓冲区和变量)

第三次握手:A收到B的回复,允许连接数据后发送回复确认ACK置1,ack=y+1,自己为seq=x+1(不携带信息,不消耗序列号,自己本身不用确认,序列号不变)。客服也会给连接分配缓冲区合和变量,其次因为连接已经建立,所以SYN=0。

如何快速理解TCP三次握手,四次挥手

TCP面向连接

发送数据之前,首先先找到对方建立一个连接,相当于一个逻辑通道。可靠协议,效率低每收到一次数据,要进行确认,保证对方确定收到了这个数据。

TCP三次握手

就好比打电话,需要经过拨号,振铃,接通。才能进行讲话

过程:

A:我要跟你建立连接

B:好的,我知道了,我也要跟你建个连接

A:我知道你收到了我的连接请求,我也收到了你的连接请求

滑动窗口:

主要为了避免一次性发送的数据过多,导致对方缓存溢出。

滑动窗口是动态协商,也就是说,在建立连接的时候,就会进行协商

同时,在缓冲区发生变化的时候,也会进行协商。

TCP四次挥手

主要为了避免当一方断开连接,而另一方不知道的情况下,需要耗费资源去维护本该断开的连接

过程:

假设三次连接已经建立完成

A:我要跟你断开连接了

B:好的,我知道你要断开连接了

B:我也要跟你断开连接

A:好的,那就断开连接把

TCP建立连接为什么是三次握手而不是两次握手

《计算机网络》(谢希仁译)中讲了原因: 1.采用两次握手,那么若Client向Server发起的包A1如果在传输链路上遇到的故障,导致传输到Server的时间相当滞后,在这个时间段由于Client没有收到Server的对于包A1的确认,那么就会重传一个包A2,假设服务器正常收到了A2的包,然后返回确认B2包。由于没有第三次握手,这个时候Client和Server已经建立连接了。再假设A1包随后在链路中传到了Server,这个时候Server又会返回B1包确认,但是由于Client已经清除了A1包,所以Client会丢弃掉这个确认包,但是Server会保持这个相当于“僵尸”的连接。 所以采用两次握手,有可能会浪费Server的网络资源。 形象解释: 1,客户发一个暧昧的消息,给服务员 2,服务员收到,看了消息,很高兴,马上回信(此时客户还不知道服务收到) 3,客户特别高兴收到服务员关系确认的消息,(但是服务员还不知道客户收到了,如果没收到得重发,理论上来说,直到海枯石烂=-=) 4,服务员终于收到了客户关系确认的消息,悬着的心终于放下了 5,于是客户跟服务员真正建立了一条可靠的通道,毕竟两人都知道那是行得通的。。。 所以至少得三次才能确认关系 不用三次的话,server不能确定client是否收到自己的消息 如果没有收到,可能client根本没收到,或者client响应了,但server没收到 如果你用过对讲机你就会明白: C->S:你能听到吗? S->C:听到。你能听到我吗? C->S:听到。

TCP建立连接为什么是三次握手而不是两次握手的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于tcp为什么要三次握手、TCP建立连接为什么是三次握手而不是两次握手的信息别忘了在本站进行查找哦。

为什么 TCP 建立连接需要三次握手

声明:本文内容来自互联网不代表本站观点,转载请注明出处:https://bk.oku6.com/14/140437.html

相关推荐