tcp.png
上面是一个tcp链接的过程,也就是俗称的三次握手,图上把每次握手做了什么也表示的比较清楚,不过这种表述的方式比较僵硬,没有自然而然的说明三次握手中“三次”的充分性和必要性。在建立可靠通信的准备过程中,客户端和服务端都要确认这样四件事:1、自己拥有发送信息的能力,2、自己拥有接受信息的能力,3、对方拥有发送信息的能力,4、对方拥有接受信息的能力。

  • 在第一次握手时(也就是客户端发送信息给服务端,服务端接受到信息那一刻),这个时候服务端明确了这样两件事,即对方(客户端)具有发送信息的能力,自己具有接受信息的能力。
  • 在第二次握手的时候(也就是服务端返回信息给客户端,客户端接受到信息那一刻),这个时候客户端可以明确这样四件事:由于自己之前发出的信息有了反馈,可以推断出自己之前的信息发送成功,即自己拥有发送信息的能力,对方接受到信息并给出反馈,说明对方具有接受信息和发送信息的能力,自己接受到反馈说明自己拥有接受信息的能力。
  • 在第三次握手的时候(服务端发送确认信息给服务端,服务端接受到信息那一刻),服务端可以明确这样两件事:由于自己发送的信息有了反馈可以推断出自己拥有发送信息的能力,对方具有接受信息的能力。

这样通过三次握手双方都恰好完成了自己在建立可靠通信需要明确的四件事,所以可以进行可靠通信。那么可以做一下推广,三点,四点,乃至N点建立可靠通信需要握几次手呢?先看一下三点,三点就是在两点的基础上再加一点,那么对于第三点来说,对方(点一,点二)的接受和发送信息的能力均已经得到了验证,所以他只需验证自己的接受和发送信息的能力即可,那么验证自己的发送信息和接受信息的能力需要握几次手呢?答案是三次,因为接受信息的能力需要一次握手来验证,发送信息的能力需要两次握手来验证(先发送,等待反馈,接受到反馈说明具有接受发送信息的能力)。所以对于四点也是这样,只要通过三次握手确认自己的发送信息和接受信息的能力,就可以加入已有的三点可靠通信网络,推广一下就是N点可靠通信网络的建立需要[3*(n-1)]次握手,当N=2时,就是3次握手。