1)为什么要握三次?
三次握⼿的⽬的是建⽴可靠的通信信道,简单来说就是数据的发送与接收,三次握⼿最主要的⽬的就是双⽅确认⾃⼰与对⽅的发送与接收是正常的。
2)三次握手的过程是什么样子的?
- 客户端:发送带有SYN标志的数据包给服务端 第一次握手 Client自己和对方的收发都不知道,Server确定Client发送正常,自己接收正常,但不知道自己是否能成功发送,Server能否接收
- 服务端:发送带有SYN/ACK标志的数据包给客户端 第二次握手 Client确定自己发送正常、Server接收正常,对方接收正常、发送正常。 Server确定自己接收正常,对方发送正常
- 客户端:发送带有ACK标志的数据包给服务端 第三次握手 双方都确定收发正常
为什么第二次要回传SYN?
Client需要确定对方收到的消息和自己发送的无误,Server发送SYN+ACK也是为了这个目的,这样才能确定双方收发消息无误。
3)可以再形象一点说明吗?
测试A和B之间的信道是否双向畅通:A给B发了一封信,B收到之后知道自己的收信√A的发信√,B给A回一个我收到了,A收到之后知道了B收信√发信√A收信√发信对√,但这时B不知道A的收信能力如何B的发信能力如,A再回一个我收到了,B就知道自己的发信是正常的A的收信也是正常的.
这时候A和B都能确定自己和对方的收发能力正常,信道是畅通的.
图片;来源 https://blog.csdn.net/jun2016425/article/details/81506353