• 计算机网络-TCP三次握手理解


    通俗示例

    小红是人事部门的员工,现在正在招收IT人员,小明看到招聘信息和待遇,感觉很适合自己,所以准备和小红发消息了解具体情况。而简历在本故事中代表最终要发送的数据。

    首先,小明发消息给小红,向她表示想要应聘公司的IT部门,想要投简历进一步交流了解。这是第一次信息交流,这个时候简历还没有投递,只是小明让小红知道他想要投简历应聘这个职位。这也是第一次握手的作用,用于客户端询问服务端是否可以进行交互。

    而小红看到了小明的信息后,就回消息和他说,可以啊,我们人数还没招满,我欢迎你投简历。这是第二次信息交流,是小红表示她有空,也有兴趣接收小明的简历。这也是第二次握手的作用,用于服务端向客户端表示可以接收信息。

    小明看到消息后,又回了小红信息说,谢谢你能给我机会去应聘这个职位,我现在简历准备好了,也做好发送简历的准备了,你现在开放一下邮箱,两分钟后就能接收到我的简历了。这是第三次信息交互,为了小红知道小明已经做好发送简历准备,并让小红开放接收简历的渠道,让简历能顺利接收。这也是第三次握手的作用,让服务端知道客户端已经做好发送信息准备,并让服务端开放信息接收,从而完成三次握手。

    小红看到消息后,打开了邮箱接收功能,过了一会,就接收到了小明的简历了。

    以上就是三次握手的通俗表达,第一次小明询问是否还招人,第二次是小红回复还招人,第三次是小明为了确保小红能收到信息,进行最终的确认。这就是三次握手的通俗表达。

    有的人可能觉得最后还要再提醒,就很墨迹,觉得可以改成下面这个步骤:

    1、小明跟小红发消息,我想要应聘贵公司,如果还招人的话,我直接投简历给您。这是第一次。

    2、小红回消息说,我们还招人,你投吧。然后就打开邮箱等待接收简历。这是第二次。

    3、小明看到信息后,直接发送简历,然后小红就可以接受到简历了。

    按照上面的描述,直接就省略了小明第三次最终确认的步骤,减少了信息交互的步骤,提升了信息交互效率,何乐而不为呢?按照效率来说,的确是这样的,毕竟少了一次信息最终确认,但是这样可能导致资源浪费的问题

    我再讲个例子,来描述只交换信息两次的弊端。

    1、小明跟小红发消息,我想要应聘贵公司,如果还招人的话,我直接投简历给您。这是第一次

    2、小红回消息说,我们还招人,你投吧。然后就打开邮箱等待接收简历。这是第二次

    小明看到消息后,刚准备发消息,但好巧不巧,家里停电了,没网了,小明只能在这苦苦等待。而小红呢,完全不知道小明那边的问题,也是在那里傻等,等着小明发简历。从而导致小红没法去处理其它问题,而小红等了半小时后,直接关了小明的联系。

    可以看到,如果没有第三次的最终确认,提前确认发送环境等,可能就导致小红白等半小时。

    而又有人可能会说了,你这不扯淡嘛,难道第三次确认之后,就能保证小明能百分百成功发送简历到小红那里了吗?就算有第三次的环境确认,最后发送的时候还是可能因为停电没网而导致发送不成功嘛。

    对,的确,即使最终确认后,最终发送也会有断网的风险。甚至就算提升到10000000次握手,都无法确保信息能够准确发送和接收,为什么?因为发送过去的确认信息,只能保证发送当时的那一刻,发送方环境是好的,就好像12点整小明发送信息说我的电脑好的一匹,随时可以发送信息,但是小红接收到信息可能是12点10分,这十分钟时间里面的电脑状态是随时会变化的,可能十二点零一秒,电脑就用不了了,所以,无论多少次握手,都无法确保信息能准确发送。

    那三次握手的意义是什么?

    [b]因为三次握手是确保双方互相知道对方状态正常的最低成本方案。

    这句话怎么理解?

    我们再说如果只要两次握手,

    第一次发送信息,是小明发送信息给小红,只是确认小红是否还招人,并没有向小红表述他的环境能百分百发送成功简历。所以小红不知道小明能否百分百发送成功简历

    第二次发送信息,是小红发送信息给小明,让小明知道她能接收信息。这个时候小明知道小红做好接收简历准备,但是小红不知道小明做好简历发送准备

    如果是三次握手,

    第一次发送信息,是小明发送信息给小红,只是确认小红是否还招人,并没有向小红表述他的环境能百分百发送成功简历。所以小红不知道小明能否百分百发送成功简历

    第二次发送信息,是小红发送信息给小明,让小明知道她能接收信息。这个时候小明知道小红做好接收简历准备,但是小红不知道小明做好简历发送准备

    第三次发送信息,是小明发送信息给小红,让小红知道小明已经做好发送简历的准备。这个时候小明知道小红做好接收简历准备,小红也知道小明做好简历发送准备

    这就是三次握手和两次握手的本质区别。[b]一个是双方知道,一个只是单方面知道。如此三次握手比两次握手更加安全。

    三次握手处理问题的本质

    三次握手最终要解决的问题,就是网络信息交互的不稳定问题。提升信息交互成功率,降低由于无法接受到信息而导致的资源浪费问题。

  • 相关阅读:
    python+OpenCV 特征点检测
    如何使用《DB 查询分析器》高效地生成旬报货运量数据
    Hive-RCFile文件存储格式
    NET:交换机的背板带宽,交换容量,包转发率区别
    css:cdata
    [ZOJ 3623] Battle Ships
    [NYOJ 860] 又见01背包
    [Uva 11825] Hackers’ Crackdown
    2014-10-29
    [转] 三鲜之所在
  • 原文地址:https://www.cnblogs.com/ndh074512/p/14592245.html
Copyright © 2020-2023  润新知