tcp协议为什么不是两次或者四次而是三次握手。

tcp协议为什么不是两次或者四次而是三次握手。
      是为了防止已经失效的连接请求报文段又突然传送给服务器。我的理解是这样的:
在网络拥塞的情况下,客户端向服务器发送连接请求报文段1,由于网络拥塞,导致连接请求报文段1
不能及时到达服务器,然后因为有超时重传机制、于是客户端再重传一次连接请求。建立了连接,在交互完成后,
连接被释放(客户端关闭)。但是此时,延迟的连接请求报文段1到达了服务器,服务器接收到,
误认为是客户端新发出的连接请求,就向客户端发送自己的SYN序列号、对客户端的SYN进行ACK。
如果没有第3次的握手,一个新的连接请求就建立了,而客户端根本就不知道有这个连接的建立,
服务器也不知道客户端关闭了,它会创建一个数据结构维护这个连接的信息,并且会一直等待客户端发送数据。
这就造成了服务器的资源浪费。所以说,TCP3次握手中的第3次握手是必要的
如果是三次握手,(客户端已经关闭了),服务器收不到客户端对自己发出SYN的确认,
会释放这个未完成连接的资源。


三次握手必要性:
     如果客户端伪造出大量的第一次SYN报文(会造成溢出攻击)不断发送给服务端,那么服务端就会依次
耗掉许多资源来保存客户端的信息,并进行确认,实际确认是会失败的,那么就还会有许多个未完成三次握手
的连接存放在listen未完成三次握手的监听队列 中,如果监听队列满了,那么就会导致正常的已完成三次握手的
连接无法存放进去被处理。就会造成服务器资源的浪费。
短时间大量的SYN涌向服务端,服务端资源可能被耗尽,就可能导致正常的客户端得不到响应而失败。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值