在日常的开发中,发送异步请求是经常会做的事情,它通常是一个http请求,而这个http请求是通过一个TCP通道来在服务器和客户端之间传递,因此TCP通道的建立是进行通信的前提条件,这篇文章就准备好好聊聊关于 TCP通道建立 的过程,也就是所谓的“三次握手”,废话不多说,开搞!

bqb

何为TCP

要想搞清楚“三次握手”,首先我们需要先知道TCP(Transmission Control Protocol)为何物,它是一种面向连接的、可靠的、基于字节流的传输层通信协议,它是为了在 不可靠的 互联网络上提供 可靠的端到端字节流 而专门设计的一个传输协议。互联网络与单个网络有很大的不同,因为互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数,TCP的设计目标是能够动态地适应互联网络的这些特性,而且具备面对各种故障时的健壮性

由于它需要提供一个可靠的连接,因此肯定就需要做额外的工作来达到这个目的,这也就引出了本文的主题(三次握手),接下来就详细聊聊这个过程是如何进行的

bqb

详解三次握手的过程

三次握手的根本目的其实就是让客户端和服务端双方都能确认对方的 发送和接收 能力是正常的,理解了这个根本目的,就能明白它为什么这么设计,下面先引用一张网上的图

bg-pic

整个过程分为五步

通过对上述步骤的分析,我们可以知道第一次握手时可以让服务端知道客户端的 发送能力 是正常的,第二次握手可以让客户端知道服务端的 发送和接收能力 是正常的,第三次握手可以让服务端知道客户端的 接收能力 是正常的,至此就可以让通信双方确认了对方的发送和接收能力都正常,然后就可以进行可靠的通信了

结语

TCP的建立需要三次握手,但是销毁却需要四次挥手,为什么不一样呢,请听下回分解~