TCP建立时为啥需要三次握手
是因为接收端接收到的所有消息都是通过中间通过传过来的,这就导致接收端无法只通过一条消息来确定当前收到的建立连接的请求对发送端是否还有意义。
如果对发送端已经无意义,即发送端已经放弃了,那接收端以此建立的准备状态就是浪费。
所以接收端把收到的消息再发回去让发送端确认下还有没有效。
当发送端再发来确认有效的消息后再进入准备状态。
整个过程就成这样的:
第一次握手
发送端在1号让邮递员给接收端发封信,内容是:在吗?有个事想让你帮下忙?
由于车坏了,快递员3号才把信送到接收端。
接收端收到信后立马回复一封:在了,那个事还用我不?
快递员4号把回信送到发送端。
发送端收到回信后有两种反应。
第一种是都过去三天了,事早办完了,直接啥都不回复。
第二种是事还没办,然后自己先进入准备状态,再给接收端回信:还得需要你,收到信就开始准备吧。
快递员5号把信送到接收端,接收端收到信后就进入准备状态等着了。
至于快递员没把信送到或者送到了但接收端没时间或其它什么原因给拒绝了,那就是连接超时或拒绝连接了。
三次握手就是让接收端通过多确认一次的方式避免出现瞎忙活的情况,毕竟人家是被动方。
主动方可以瞎忙活,没人回复你的话你可以取消再发起,毕竟主动权在你这里。
但如果被动方都准备好了你却不来,即使有超时时长,那也是一段段的浪费。