正文
个人理解三次握手的目的是为了确定通信双方(服务器端与客户端)能建立起通信连接是正常的。 通信涉及到两方,而在通信未建立起来前,通信双方对自己的收发能力、对方的收发能力都是不确定 的:1、我不知道自己能不能正常收发;2、我也不知道对方能不能正常收发。 通过每次发送一条消息(握手),可以推断出自己的收发能力,对方的收发能力情况。 下面,对通信建立过程中能确定下来的收发能力进行详细说明: 首先, A向B发送一条消息。 对A来说,自己发送了消息,可以知道自己的发送能力正常, 对B来说,收到A发送的这条消息说明自己的接收能力正常,自己可以知道A的发送能力正常。 接着,B向A回复一条消息。 对B来说,自己发送了回复消息,自己的发送能力正常, 对A来说,自己收到了来自B的回复消息,自己的接收能力正常,也可以推知B的收发能力正常(不然自己不会收到这条回复消息)。 然后,A再向B回复一条消息 对B来说,收到了来自A的回复,可以知道他的收发能力是正常的。此时,双方都可以确认自己的、对方的收发能力正常,可以建立正常通信连接。
tips
逐个进行分析,可以快速厘清各次握手时能确定下来的收发能力。如果带着上帝视角来看,理解起来就有点混乱。自己扮演其中一方的角色代入可以方便理解。 建议阅读下知乎上的这个回答:TCP 为什么是三次握手,而不是两次或四次?https://www.zhihu.com/question/24853633
|