白话TCP为什么需要进行三次握手
阅读本文大概需要 2.3 分钟。
作者:雨林
https://www.cnblogs.com/yuilin
首先简单介绍一下TCP三次握手
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器 进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED状态,完成三次握手。
通过这样的三次握手,客户端与服务端建立起可靠的双工的连接,开始传送数据。
三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的。
但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?两次不行么?我们举一个现实生活中两个人进行语言沟通的例子来模拟三次握手。
第一次对话:
老婆让甲出去打酱油,半路碰到一个朋友乙,甲问了一句:哥们你吃饭了么?
结果乙带着耳机听歌呢,根本没听到,没反应。甲心里想:跟你说话也没个音,不跟你说了,沟通失败。说明乙接受不到甲传过来的信息的情况下沟通肯定是失败的。
如果乙听到了甲说的话,那么第一次对话成功,接下来进行第二次对话。
第二次对话:
乙听到了甲说的话,但是他是老外,中文不好,不知道甲说的啥意思也不知道怎样回答,于是随便回答了一句学过的中文 :我去厕所了。甲一听立刻笑喷了,“去厕所吃饭”?道不同不相为谋,离你远点吧,沟通失败。说明乙无法做出正确应答的情况下沟通失败。
如果乙听到了甲的话,做出了正确的应答,并且还进行了反问:我吃饭了,你呢?那么第二次握手成功。
通过前两次对话证明了乙能够听懂甲说的话,并且能做出正确的应答。接下来进行第三次对话。
第三次对话:
甲刚和乙打了个招呼,突然老婆喊他,“你个死鬼,打个酱油咋这么半天,看我回家咋收拾你”,甲是个妻管严,听完吓得二话不说就跑回家了,把乙自己晾那了。乙心想:这什么人啊,得,我也回家吧,沟通失败。说明甲无法做出应答的情况下沟通失败。
如果甲也做出了正确的应答:我也吃了。那么第三次对话成功,两人已经建立起了顺畅的沟通渠道,接下来开始持续的聊天。
通过第二次和第三次的对话证明了甲能够听懂乙说的话,并且能做出正确的应答。
可见,两个人进行有效的语言沟通,这三次对话的过程是必须的。
同理对于TCP为什么需要进行三次握手我们可以一样的理解:
为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。
当然,还有一种更通俗的~
买手机的时候试通话功能的时候:
-
老机打给新机 : 喂 , 听到了吗 ?
-
新机回复老机 : 听到了 , 你听到了吗 ?
-
老机 : 听到了听到了 …
验证通话功能OK !
·END·
程序员的成长之路
路虽远,行则必至
往期精彩回顾
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
在线直播平台建设必备之物,斗鱼虎牙有同款,它就是……
要说在线直播平台哪家强,还真不能一概而论,毕竟现在平台真是挺多的,大的平台有斗鱼直播平台、虎牙直播平台等,刚起步的甚至正在进行直播平台建设的小平台也各有各的优点,面对的客户群体也不同,直播用户们萝卜白菜各有所爱,谁都觉得自己在看的比别家的强。 但有一样东西,是无论平台大小都必须使用的,那就是CDN(内容分发网络)这是为什么呢?它有什么作用,让我们一起看看吧。 一、 节约带宽 可能有些朋友不知道,在线直播平台建设完毕后,直播平台运营期间所花费最高的就是带宽费和CDN费用,这和国外不太一样,国外直播平台几乎很少需要自掏腰包买带宽的,都是带宽服务商争着给提供,但国内就不同了,带宽没人提供不说,越来越高的画质还越来越浪费带宽费,为了降低带宽费,他们决定善用CDN。 CDN也分很多种,比如http CDN、P2 P CDN等,其中,P2P架构的CDN可以为直播平台节约50%-75%的带宽,实乃在线直播平台勤俭持家之必备神器。 二、 加速分发 省钱固然重要,直播平台建设必须使用CDN的主要原因还是因为它能够对在线直播平台进行加速和分发,无数个边缘服务器搭建成一张内容分发网络,在线直播平台的视频内容...
- 下一篇
别再对 Istio 一脸懵了,万众期待的第一本 Istio 著作现!已!上!市
过去一年里,Service Mesh作为新兴的微服务架构,在国内大热。其被誉为是下一代微服务,是云原生技术栈的关键组件之一。而Istio作为第2代Service Mesh的头牌, 在 GitHub 上疯狂收获近 15000 颗星,成为 2018 年最热门的项目之一。 官方对 istio 的介绍浓缩为一句话: An open platform to connect, secure, control and observe services. 连接、安全加固、控制和观察服务的开放平台。 这四个动词代表着istio 高级又强大的主要功能,在Google、IBM等公司的强力推动下,一经问世就受到了人们的普遍关注,获得社区的广泛认可,对微服务和云原生应用开发产生了巨大的影响。 如今,Istio在国内也被越来越多的开发者所熟识和认可。但是Istio由于具备大量的功能特性和各种外围集成,加上本身在架构上有非常多的模型抽象和解耦设计,导致概念多、术语多、细节多、入门不易,让很多用户对这一新生事物仍然是一头雾水。 不过,这一问题即将得到大大改善! 第一本 Istio 著作 《深入浅出Istio:Serv...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7,8上快速安装Gitea,搭建Git服务器