假设:客户端为新买了手机的同学A,服务端为新买了手机的同学B,将三次握手的过程假设为A和B测试两人手机短信收发功能是不是正常的
A和B都想试试自己手机的短信功能是不是正常的,所以:
①A往B的手机发了一条短信,内容为:我是A,你收到了信息请给我回复666(第一次握手)
②B收到了A发给他的短信,验证了自己手机收短信功能是正常的。B为了让A知道他手机发送短信功能是正常的,所以给A回复了短信:666,老铁我收到了。收到信息请给我回复888(第二次握手)
③A收到了B的短信,那么A此时确认了自己手机短信收发都是正常的。A为了让B知道他的手机发送短信功能也是正常的,那么就给B回复了888(第三次握手)
同理:
①客户端会先向服务端发送一个syn,让客户端接收**(①步骤:A向B发短信,B接收)**
②服务端收到请求,会向客户端发送ack告诉客户端:服务端收到了请求ack;并且同时会向客户端发送一个syn让客户端给个响应是否收到短信**(②步骤:B向A回短信,A接收)**
③客户端收到服务器的响应之后,会再向服务端发一个请求,告诉服务端:客户端收到了你的回应**(③步骤:A再次向B发送短信)**
为什么要有三次握手:
因为客户端和服务端双方都要确认对方收发请求的能力是正常的。
就比如举例中少了任意一个步骤,都不能让两个人确认自己手机的短信收发功能一定是正常的。
同理,少了任意一次握手,服务端和客户端都不能确定对方收发请求是否一定正常