TCP为什么需要进行三次握手深入解析

所属分类: 网络 / 网络协议 阅读数: 2127
收藏 0 赞 0 分享
首先简单介绍一下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为什么需要进行三次握手我们可以一样的理解:
为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。
更多精彩内容其他人还在看

最常见的TCP/IP中3688端口是什么?

最常见的是TCP和UDP端口,这是用来在互联网上的计算机之间的数据交换,3688/udp端口使用服务类型简单的推- S- S简单的推协议,基础概念不是很了解的朋友可以参考下本文
收藏 0 赞 0 分享

NetBEUI协议怎么安装浏览网上邻居提示需要NetBEUI协议

浏览网上邻居时提示需要NetBEUI协议,说明NetBEUI协议没有安装或安装不正确,由于NetBEUI协议不是TCP/IP必备协议所以需要手动安装,下面是具体的安装步骤,感兴趣的朋友不要错过
收藏 0 赞 0 分享

IP地址剖析以及如何设置Windows7的IPv6协议

当电脑的IP地址相同,就会发生冲突,IP地址就好像你电脑的“门牌号”,只有有了这个“门牌号”,其他用户和电脑才能找到你的电脑,接下来为大家介绍下如何设置Windows7的IPv6协议,感兴趣的朋友可以参考下
收藏 0 赞 0 分享

怎么配置局域网中的各机器的TCP/IP协议

xp系统下载SyGate安装好后,不能马上就使用,还必须对局域网内各机器的TCP/IP协议进行一些设定。下面是具体的设置过程,感兴趣的朋友可以参考下
收藏 0 赞 0 分享

VRRP虚拟路由器冗余协议介绍

VRRP(VirtualRouterRedundancyProtocol,虚拟路由冗余协议)是一种容错协议,需要的朋友可以看下
收藏 0 赞 0 分享

反掩码简介、计算方法实例、常见反掩码

这篇文章主要介绍了反掩码简介、计算方法实例、常见反掩码,需要的朋友可以参考下
收藏 0 赞 0 分享

HTTP协议Keep-Alive模式详解和HTTP头字段总结

这篇文章主要介绍了HTTP协议Keep-Alive模式详解和HTTP头字段总结,需要的朋友可以参考下
收藏 0 赞 0 分享

分享下TCP/IP、Http、Socket的区别

传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口
收藏 0 赞 0 分享

网络协议是什么?网络协议三要素是什么?

本文向大家详细介绍网络协议是什么以及网络协议三要素是什么的基础知识,不懂的朋友可以通过本文了解学习
收藏 0 赞 0 分享

如何定义网络协议?网络协议有哪些意义?

本文将向大家详细介绍如何定义网络协议以及网络协议有哪些意义的基础知识,不明白的朋友可以过来学习一下
收藏 0 赞 0 分享
查看更多