首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
TCP为什么需要第三次握手?第三次握手失败了会怎么样?
[问答题]
TCP为什么需要第三次握手?第三次握手失败了会怎么样?
添加笔记
求解答(28)
邀请回答
收藏(86)
分享
纠错
12个回答
添加回答
8
牛客798616739号
1能听到我说话么,小可爱? 2我听到了听到了!你听到我了么? 3我也听到你了! ……
发表于 2020-03-19 19:02:13
回复(0)
1
A-AAAA
首先,TCP两次握手是完成最基本的客户端和服务端的连接,此时情况下已经完成了TCP正常连接
TCP三次握手的步骤:客户端首先发送SYN(seq=1000)给服务端,服务端接受到指令后发送
SYN+ACK(seq=2000,ack=1001)作为回应,此时连接已建立,
客户端继续发送SYN+ACK(seq=1001,ack=2001)到服务端,作为回应。
如果只进行两次,服务端则一直等待客户端发送数据确认,连接一直存在,造成资源的浪费。
四次挥手:客户端发送FIN+ACK给服务端,服务端接受到客户端的指令后回送ack作为回应;
服务端继续发送FIN+ACK给客户端,客户端接收后回复ack,表示回应。
这里的四次挥手是必然的,因为一旦连接建立起来,两边既是发送,也是接受。如果一方不发送了,另一发不可以断开连接,另一方仍然要等待发送方完成信息指令发送,才会终止状态。
发表于 2020-05-10 21:38:05
回复(0)
20
T罐头
原因:
1)两次握手是最基本的,一般情况下能保证tcp连接正常进行。
2)需要第三次握手是为了防止已失效的请求报文段突然又传送到了服务端而产生连接的误判 。
假如没有第三次握手,服务端接收到失效的请求报文段就会认为连接已建立,从而进入等待客户端发送数据的状态。但客户端并没有发出请求,所以不会发送数据。于是服务端就会一直处于等待状态,从而浪费资源。
第三次握手失败后:
1)在第二次握手,服务器端向客户端发送SYN+ACK报文后,就会启动一个定时器,等待客户端返回的ACK报文。
2)如果第三次握手失败的话,客户端给服务端返回了ACK报文,服务端并不能收到这个ACK报文。那么服务端就会启动超时重传机制,超过规定时间后重新发起第二次握手,向客户端发送SYN+ACK。重传次数根据/proc/sys/net/ipv4/tcp_synack_retries来指定,默认是5次。
3)如果重传指定次数到了后,仍然未收到ACK应答,那么一段时间后,服务端会自动关闭这个连接。但客户端认为这个连接已经建立,如果客户端向服务端写数据,服务端将回应RST包、强制关闭TCP连接,以防止SYN攻击。
发表于 2020-04-01 22:04:44
回复(0)
6
南山201804121931671
第一 :两次握手是最基本的,一般情况下能保证tcp连接正常进行。
第二:需要第三次握手是因为为了
防止已失效的请求报文段突然又传送到了服务端而产生连接的误判
。当第一次握手的报文因为网络延迟,导致报文超时,重发报文成功传输数据释放连接之后
,这时候那个因为网络延迟的报文又到达目的主机,则目的主机认为又要进行tcp连接,如果只有两次握手,则这连接一直存在,造成资源浪费,如果是三次握手,则不会存在这种情况。
第三:第三次握手失败后,会处于半连接状态,会重新5次进行第三次握手尝试,这时候会浪费主机资源,SYN泛洪攻击就是利用这机制
发表于 2020-03-12 16:56:13
回复(0)
0
拒绝光头
我对你说:你能听到我说话吗? 你回复然后反问我:我听到了,但是你能听到我说话吗? 我:能能能,完全OK。
发表于 2020-10-12 14:57:50
回复(0)
0
9028_qqq
第三次握手可以防止失效的连接请求到达服务器后服务器错误打开连接。
连接请求在网络中滞留,需要很长时间才能收到服务器的响应,客户端等待一个超时重传时间后,重新向服务器发送请求。但是这个滞留的连接请求最终还是会到达服务器,如果没有第三次握手,那么服务器就会打开两个连接,如果存在第三次握手,服务器就会忽略服务器之后发送的对滞留的连接请求的连接确认,不进行第三次握手,因此就不会打开连接。
发表于 2020-10-07 20:19:00
回复(0)
0
PINE💨
TCP是一个可靠的传输控制协议,它最主要的目的是确保双方都具有发送和接收的能力,保证全双工。
第一次握手:客户端发送数据包(SYN,seq=x,ctl=SYN)到服务端,这能证明客户端具有发送能力
第二次握手:服务端接收到客户端发来的数据包,然后服务端向客户端响应一个数据包(SYN,ACL,seq=y,ack=x+1,ctl=SYN,ACK),这能证明服务端具有发送和接收的能力。
第三次握手:客户端接收来自服务端的数据包,然后客户端向服务端回一个数据包(SYN,ACL,seq=x+1,ack=y+1,ctl=SYN,ACK),这能证明客户端具有接收的能力。
第三次握手失败的话就不能证明客户端具有接收能力,这样的话就会造成服务端资源浪费。若是已失效的包传送到服务端而没有第三次握手的话,这样的话服务端就认为这是一个新的连接,向客户端发送一个确认报文后,就表示可以通信了,而客户端却没有发送连接请求,就不会给服务端发送数据,服务端就会一直等待,这样就造成了资源浪费。
发表于 2020-09-17 10:12:19
回复(0)
0
永远热爱生活的柱子
TCP的三次握手发起端也叫客户端,而被发起端也叫服务器端。
第三次握手的原因:1、为了让服务器知道,客户端可以向服务器稳定发送数据
2、失效报文请求没有丢失,服务器会误以为客户端重新请求,但是A已经得到第二次请求的回复了,就不会理会服务器发过来的确认,就会消耗服务器的资源。
第三次握手失败:服务器向客户端发送报文,服务器收不到,服务器端就会启动超时重传机制,超过这个时间,服务器就会发起第二次握手,如果凑数到了默认的5次只有,服务器就会关闭这个连接。但是A会以为这个连接已建立,弱项服务器发送数据,服务器会回应RST包强制关闭TCP连接。以防止SYN攻击。
发表于 2020-03-27 21:26:59
回复(0)
0
地板砖
TCP面向连接
第三次握手
,客户端向服务端发送连接请求准备发送数据。
失败后,无法正常进行数据传发。
发表于 2020-03-21 11:07:51
回复(0)
0
萌新嘤嘤嘤
1、因为客户端和服务器端都需要知道 网络路线是否真的 到达了对方;客户端发给服务端一个请求,此时服务端必须回一个确认信息,客户端才能确认它刚刚发送的信息是真的被接受了,同理服务器此时也需要客户端发送一个反应才能确认它回的消息能否到达客户端。所以总共三次“握手”.
2、第三次握手失败,如前所述,服务器不能确认它发送的消息是否能被客户端接收,所以该次连接不能成功。
发表于 2020-03-11 23:12:34
回复(0)
0
柒云山下
第三次握手出现是失败,导致服务未收到客户端响应包,出现Timeout,服务端主动关闭这个连接
发表于 2020-03-09 20:57:41
回复(0)
0
猫晓_
为了防止已过期的链接再次传到被链接的主机
发表于 2020-03-08 11:55:01
回复(1)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
运维工程师
美团
2020
上传者:
小小
难度:
12条回答
86收藏
5487浏览
热门推荐
相关试题
看图回答
判断推理
2020
人力资源
安永
审计
税务服务
风险管理
管理咨询
行政管理
评论
(2)
来自
职能类模拟题2
看图回答
判断推理
2020
人力资源
安永
审计
税务服务
风险管理
管理咨询
行政管理
评论
(1)
来自
职能类模拟题2
已知队列(Queue)支持先进先出...
美团
栈
队列
评论
(4)
三张财务报表的哪个最重要,其次是哪...
财会基础
评论
(1)
说一下对IFRS15(新收入准则)...
财会基础
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题