为什么要三次握手?

为什么要三次握手?蓝军1和蓝军2分别再两个山顶上,只有联手才能打印位于山谷的白军。
蓝军1给蓝军2打电话,电话接通了。
蓝军1:“我们要攻打白军了,请一同作战。“
蓝军2:“好的。”
第一次握手是,蓝军1给蓝军2同步了一个信息 syn
第二次握手是,蓝军2给蓝军1回复了同步确认消息 syn/ack
第三次握手是,蓝军1挂断电话,相当于告诉蓝军2我收到了你的确认消息,因为我俩都是在线的。
于是经过三次握手,蓝军1和蓝军2达成了一致,协同作战击败了白军。

假如没有电话呢?
他们只能派信使传递消息。蓝军1派信使告诉蓝军2一起参战。此时蓝军1不敢冒然进攻,他要等蓝军2的回复。蓝军2给蓝军1回复确认参战。但蓝军2也不敢冒然进攻,他要等蓝军1回复知道了。蓝军1给蓝军2回复了,然后他又要等蓝军2回复…这样无限下去始终不能达成一致。

按常理来说,蓝军1派信使告诉蓝军2一起参战,蓝军2马上就动身了,哪里还会磨磨唧唧半天,循环等待回复,贻误战机。

计算机网络协议有一个很重要的特点,就是协议必须把所有不利的条件都事先估计到,而不能假定一切都是正常的和非常理想的。一个正确的协议必须能够应付各种异常情况。

你跟你的朋友约定好下午三点在公园见面,不见不散。这就是个非常不靠谱的协议,万一朋友临时有事来不来,你不得等半天,或者你有事来不了,你朋友不得等半天?就可以多增加一些可能预见的异常因素来保证协议的可靠性,比如明天下雨了见面取消,等待超时30分钟见面取消。

怎么建立一条可靠的连接呢?
你要联系你的朋友,你给他写了封信(syn)
他给你回信(syn/ack)
你再给他回信(ack)

这时候你们双方就可以正常通信了。前面的syn/ack信号只是用来确认对方的,并无实际内容。
三次握手以后,才再信里写具体内容。上来就把重要机密告诉了对方,万一对方不是你真正想告诉的人,你也不晓得是谁收到了你的信息。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值