关于TCP 为什么需要连接三次而不是两次

首先举一个简单的生活打电话列子

小明:喂,老婆听到吗?

小明老婆:喂,是小明吗?我听得到,干啥玩意儿啊?

小明:对,我是小明,今晚我们去买包包吧!

这就是类似的三次交互,小明发出请求,小明老婆接受到请求,给个确认信息,这个时候,小明确认收到了他老婆的确认信息。

整个通信过程建立完毕。

如果小明没有返回确认信息,则会出先这种情况

小明:喂,老婆听到吗?

小明老婆:喂,是小明吗?我听得到,干啥玩意儿啊?

。。。5分钟以后

小明老婆:mmp,说话啊,你干啥啊,浪费电话费吗?

而在计算机中TCP是安全的,当要进行两个进程之间的通讯时候,这时需要进行建立连接。就发起了三次握手。发送建立连接报文中有SYN和ACK,Seq,下一个返回报文信息的ACK = Seq+1。而如果有一种情况, 客户端发出的第一个连接请求报文段并没有丢失,而是在某个网络结点上停滞了一会儿,导致延误到连接关闭后的某个时间才到达服务端。本来这是一个早已失效的报文段。但服务端收到此失效的连接请求报文段后,就误认为是客户端再一次发送一个新的连接请求。于是就向客户端发出确认报文段,同意建立连接。若不采用“三次握手”,那么只要服务端发出确认,新的连接就建立了。由于现在客户端并没有发出建立连接的请求,因此客户端像大爷一样,你干啥呢,我都没跟你通信呢,就不鸟服务端。就如打电话不说话一样,浪费了大量资源。

猜你喜欢

转载自blog.csdn.net/hym740639005/article/details/81123841
今日推荐