为什么使用tcp协议的三次握手手,两次握手可不可以

为什么TCP建立连接时需要三次握手
& 学了网络,关于TCP建立连接时的三次握手问题一直萦绕在耳边,但为什么需要三次?两次不行吗?现在说说自己对这方面的理解。& 一句话,就是为了解决在不可靠信道上建立可靠连接问题。& 下面举一个小例子:(我代表client,小瑞瑞代表server)我:sr,你打球去吧?(第一次握手)sr:嗯...我去!你去不?(第二次握手)我:我也去,你去球场等着我吧!(第三次握手)然后就是俺俩在球场上挥汗如雨...这是一个建立可靠的情况(没出问题)现在,情况变了。我:sr,你打球去不?(延时了...信道不可靠!我俩手机都是国产的...)(第一次握手)sr:(没收到)我:(擦了,小子不鸟我!!!!)算了,找师太玩去吧!过了一会...sr接到了那个延时的信息。sr:我去!(第二次握手,不再问我去不去,即没有第三次握手)然后,sr就屁颠屁颠的跑去篮球场了...(相当于server为client分配的资源,都浪费了)我这时候已经不想打球了...(没有想建立连接,只是之前的延时分组到达了,网络中存在延迟的重复分组)总之,前两次握手是为了确定client能跟server可靠通信,后两次握手确认server能跟client可靠通信。
分享这篇日志的人也喜欢
有你们真好
素颜也能将就?
新主播l求关注
换药宝宝要抱抱
热门日志推荐
人人最热标签
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&
请输入手机号,完成注册
请输入验证码
密码必须由6-20个字符组成
下载人人客户端
品评校花校草,体验校园广场TCP为何采用三次握手来建立连接,若采用二次握手可以吗?_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
TCP为何采用三次握手来建立连接,若采用二次握手可以吗?
我有更好的答案
如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求三次握手是为了防止已失效的连接请求再次传送到服务器端。 二次握手不可行,因为
采纳率:74%
如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求三次握手是为了防止已失效的连接请求再次传送到服务器端。 二次握手不可行,因为
为您推荐:
其他类似问题
三次握手的相关知识
等待您来回答tcp为什么要三次握手,而不能二次握手? - CSDN博客
tcp为什么要三次握手,而不能二次握手?
http://bbs.csdn.net/topics/?page=1
谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送ack包。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。
在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》(Andrew&S.Tanenbaum著,第四版)一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。这两种不用的表述其实阐明的是同一个问题。
&&&校评:为什么红线处说client不会理睬server的确认,不会向server发送数据,这个需要解释一下,我们知道客户端在调用connect函数之后进入了SYN_SEND状态,只有接收到服务器端的SYN+ACK包才进入ESTABLISHED状态。因为对于已经失效的连接请求报文,由于此时客户端没有进入SYN_SEND状态,而处于CLOSED状态,即使收到服务器端的SYN+ACK包,也不会产生任何状态变化,也就不会理踩server的确认和发送ack包了。
&&注意:上面的解释仅仅是假设客户端处于CLOSED状态时废弃包的到来,并没有对客户端处于非CLOSED状态时废弃包的到来进行分析,好歹通过google,得到了非CLOSED状态下为什么两次握手可能会出现的问题,这里也分两种情况,一种是废弃的报文的干扰,一种是废弃的SYN报文的干扰。
附华中科技大学有一题研究生入学考题,是下面题目的中文翻译版(不过我觉得这个答案有点牵强,毕竟现在tcp传输机制中都有定时器,会有超时重传,不会导致死锁的,当然如果没有超时机制,死锁还是可能的):
Imagine&that&a&two-way&handshake&rather&than&a&three-way&handshake&were&used&to&set&up&connections.&In&other&words,&the&third&message&was&not&required.&Are&deadlocks&now&possible?&Give&an&example&or&show&that&none&exist.
Deadlocks&are&possible.&For&example,&a&packet&arrives&at&A&out&of&the&blue,&and&A&acknowledges&it.&The&acknowledgement&gets&lost,&but&A&is&now&open&while&B&knows&nothing&at&all&about&what&has&happened.&Now&the&same&thing&happens&to&B,&and&both&are&open,&but&expecting&different&sequence&numbers.&Timeouts&have&to&be&introduced&to&avoid&the&deadlocks.
网上有一段流传很广的解释:
&为什么不能用两次握手进行连接?
我们知道,3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
&&&&现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机S和C之间的通信,假定C给S发送一个连接请求分组,S收到了这个分组,并发&送了确认应答分组。按照两次握手的协定,S认为连接已经成功地建立了,可以开始发送数据分组。可是,C在S的应答分组在传输中被丢失的情况下,将不知道S&是否已准备好,不知道S建立什么样的序列号,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分&组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。
校评:这个解释也值得商榷,这里指说S超时重传,难道C没有收到S的ACK信号,不会重新发送SYN信号么?&只要重新发送SYN,S端自然也会发送确认应答分组,这样就不会导致死锁。
本文已收录于以下专栏:
相关文章推荐
本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree...
1、为什么TCP连接需要三次握手,而不是二次?
谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网...
TCP 连接是通过三次握手进行初始化的。
三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:
1. 客户端向服务器...
TCP 三次握手
TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:
将MYSQL数据放在一台计算机上是不安全的,所以应当把数据备份到局域网中其他计算机中。假设Mysql服务器IP地址是:192.168.1.3。局域网使用Linux的远程计算机IP地址是192.168....
TCP为什么要三次握手,不是两次四次?
第三次握手——革命斗争中的通信故事
在革命战争影片中,经常会看到英勇的解放军战士背着步话机在喊“长江长江,我是黄河,听到请回答。...
什么是三次握手学过网络编程的人,应该都知道TCP建立连接的三次握手,下面简单描述一下这个过程。
第一次握手:客户端发送TCP包,置SYN标志位为1,将初始序号X,保存在包头的序列号...
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:
先来看看如何建立连接的。
首先Client端发送连接请求...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)> 问题详情
TCP为何采用三次握手来建立连接,若采用二次握手可以吗?
悬赏:0&答案豆
提问人:匿名网友
发布时间:
TCP为何采用三次握手来建立连接,若采用二次握手可以吗?请帮忙给出正确答案和分析,谢谢!
为您推荐的考试题库
您可能感兴趣的试题
1第 92 题 帧中继的主要特点是什么?
我有更好的答案
相关考试课程
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
找答案会员
享三项特权
找答案会员
享三项特权
找答案会员
享三项特权
选择支付方式:
支付宝付款
郑重提醒:支付后,系统自动为您完成注册
请使用微信扫码支付(元)
支付后,系统自动为您完成注册
遇到问题请联系在线客服QQ:
请您不要关闭此页面,支付完成后点击支付完成按钮
遇到问题请联系在线客服QQ:
恭喜您!升级VIP会员成功
常用邮箱:
用于找回密码
确认密码:

我要回帖

更多关于 tcp三次握手 的文章

 

随机推荐