TCP三次握手

最近在看《图解HTTP》这本书,对于其中的一点我很疑惑,TCP为什么要握三次手,两次不行吗?两次不就可以建立连接了吗?

介绍:

TCP三次握手的流程就如上图所示:

首先,我们明确下主动发送请求的就叫客户端,像浏览器、APP等,而响应请求的就叫服务端。

客户端首先发送一个带有SYN(synchronize建立联机)标志的数据包给服务端。服务端接受到了后,返回一个带有SYN/ACK(acknowledgement确认)标志的数据包以示确认传达信息。最后,客户端再传回一个带有ACK标志的数据包,代表‘握手’结束。

原因:

接下来我们分析下为什么要‘握’三次手:

第一次握手:

可得:客户端的发送能力正常、服务端的接收能力正常。服务端此时可以得出自己的接收能力正常,客户端的发送能力正常,但是客户端并不知道,所以需要服务端给它一个爱的肯定,发送一个带有SYN/ACK标志的数据包给客服端。

第二次握手:

可得:客户端收到了服务端带有SYN/ACK标志的数据包,客户端可以得知自己的发送和接收数据包的能力正常,还有服务端的接收和发送都是正常的。但是,服务端并不清楚它的发送能力是正常的,服务端需要客户端给它来个爱的反馈。那还说什么呢,客户端赶紧得发送ACK数据包来帮助服务端确认自己的发送能力。

第三次握手:

服务端得到了客户端带有ACK标志的数据包,说明它的的发送和接收功能都是正常的。

那么:你正常,我正常,TCP连接就正常,我们开始数据传输吧~

问题少年来了:如果发送过程中断了呢?

答:TCP协议会再次以相同的顺序发送相同的数据包。

原文地址:https://www.cnblogs.com/caoshufang/p/12884828.html