TCP为什么需要三次握手

概要

TCP三次握手流程:

  1. Client 发送 SYN包 带ACK = x 进入 SYN_SEND状态 【表明了Clint的发送能力】
  2. Sever 接收到包, 确认ACK, 发送SYN (seq等于 y)+ACK=x+1包,进入 SYN_Recv状态 【表明Server的发送和接收能力】
  3. Client 接受到包, 确认, 发送ACK=y+1 ,双方进入Established状态
    在这里插入图片描述

三次握手的作用

  1. 确认双方的发送和接收能力
  2. 避免过期的链接请求

过期的链接请求

当客户端发送SYNC包后 发生宕机,并且这个SYN报文在网络中阻塞,这时候服务端还没有接收到客户端发过来的报文,之后客户端重新发送新的SYN报文,导致两个报文都到达服务器端,造成浪费

如果只有两次握手

如果只有两次握手,当客户端的 SYN 请求连接在网络中阻塞,客户端没有接收到 ACK 报文,就会重新发送 SYN,由于没有第三次握手,服务器不清楚客户端是否接收到了自己发送的建立连接的 ACK 确认信号,所以服务器每收到一个 SYN 就只能先主动建立一个连接,就会建立多个冗余的无效链接,造成不必要的资源浪费。所以,两次握手不具备可靠性。

序列号

TCP 协议通信的双方,都必须维护一个序列号,序列号是可靠传输的一个关键因素

  1. 接收方可以去除重复的数据;
  2. 接收方可以根据数据包的序列号按序接收;
  3. 可以标识发送出去的数据包中,哪些是已经被对方收到的;
    如果只有两次五首,只有发送方序列号能被确认,而接收方序列号无法同步,需要一来一回才可以完成确认
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值