• 理解TCP为什么需要进行三次握手
    时间:2012-11-06   作者:雨林   出处:cnblogs.com/yuilin

    三次握手(three times handshake;three-way handshaking)所谓的“三次握手”即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。 本文将用白话的方式给读者解释TCP的三次握手。

    首先简单介绍一下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为什么需要进行三次握手我们可以一样的理解:

    为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。

    网友留言/评论

    我要留言/评论

    相关文章

    如何在局域网内抢带宽:事情的起因是最近家里买了一台60寸的智能电视,支持点播(VOD)功能,家里的网络带宽理论上只有4M,在播放的时候,就会占用大量网络带宽,导致我同时上网浏览网页都很困难。
    阅读好体验的准则:100% Easy-2-Read:大多数网站都挤满了小号的文字,使人阅读起来感到很痛苦。产生这个问题的原因是什么呢?如果我们稍作思考就会发现,没有理由将如此多的信息都硬塞进一个小小的屏幕当中。其实,这只是一个历史遗留问题,因为过去的时候屏幕真的是很小。
    不要告诉我你懂margin:你真的了解margin吗?你知道margin有什么特性吗?你知道什么是垂直外边距合并?margin在块元素、内联元素中的区别?什么时候该用padding而不是margin?你知道负margin吗?你知道负margin在实际工作中的用途吗?常见的浏览器下margin出现的bug有哪些?……
    高性能网站的十四条黄金法则:许多研究都表明,用户最满意的打开网页时间,是在2秒以下。用户能够忍受的最长等待时间的中位数,在6~8秒之间。这就是说,8秒是一个临界值,如果你的网站打开速度在8秒以上,那么很可能,大部分访问者最终都会离你而去。
    SEO关于URL优化的一些经验:URL在搜索结果列表中时显示内容之一。设计网站结构时需要对目录及文件命名系统做事先规划。总的原则是首先从用户体验出发,URL应该清晰友好、方便记忆,然后才考虑URL对排名的影响。具体可以考虑以下几个方面。
    搜索引擎高排名的8步骤:对于网上业务,网站和博客一样,在搜索引擎中的排名高是必须的。有机搜索结果是相关的网页出现在搜索引擎结果页面在回应关键字搜寻字词。结果是不带偏见,而不是生成的基础上的付费广告。当你的网站排在各大搜索引擎,像谷歌,雅虎和Bing高,您的网站的网址,标题和描述的结果页上可见。获得了坚实的搜索引擎的地位,意味着你的网站是一个权威和流行的在线源。
    解构科技博客:一直压着没发,之前写知乎时就写完这篇东西了,今天突发灵感就修改一些东西发出来了,可能以后写东西的方向会改变,不再是这类大而泛的文章了。
    十五种实用促销方式:促销是指为了促进产品的销售,针对的消费行为、消费习惯而采取的促进产品快速实现从厂家到手中转变的策略。@茵曼文案lala凤 根据自己在工作中的实践与摸索,总结了15种促销方式,她没想到的是,这个图迅速在微博上疯传,并被许多网友惊呼为“目前看起来最全的促销图”。
    GET和POST有什么区别?及为什么网上的多数答案都是错的。:前几天有人问我这个问题。我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用。
    网站运营人员必须要了解的网站运营术语:一个网站从建立到发展需要很多人的努力,现在的网站运营也不仅仅是一个开源程序,一个cms或者是一个网站源码就可以搞定的事情。网站建立起来想要获得发展的话还需要有人去经营网站,而如何经营,那就是网站运营要做的事情了。当然不一样的网站需要的运营手法是不相同的,而且每个运营人员对于网站的理解也是不一样的。但是不管如何改变,网站运营术语还是一样的。