【计算机网络】三次握手

三次握手是TCP连接的过程

过程

  1. 第一次握手,客户端将请求中SYN设置为1,初始化序列号,发送给服务端。
  2. 第二次握手,服务端接收到信息后,将SYN和ACK设置为1,并将Ack设置为接收到的序列号+1,再初始化自己的序列号,发送给客户端。
  3. 第三次握手,客户端接收到信息后,将ACK设置为1,同时Ack设置接收到的序列号+1,发送给服务端。

为什么需要三次握手

回答这个问题我们需要了解TCP连接的作用或者目的。

TCP:用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括 Socket、序列号和窗口大小称为连接。

以上我们知道,TCP是为了保证可靠的的连接。

三次握手可以阻止重复历史连接的初始化

三次握手将是否建立连接的权力交给了发送者。因为只有发送者有足够的上下文来判断当前连接是否错误或者过期。这也是TCP使用三次握手建立连接的最主要原因。

  • 如果当前连接是历史连接,即SEQ过期或者超时,那么发送方就会直接发送RST控制消息中止这一次连接。
  • 如果当前连接不是历史连接,那么发送方就会发送ACK控制消息,通信双方就会成功建立连接。

这也是为什么HTTP连接不能两次握手的原因。

三次握手可以同步双方的初始序列号

TCP需要在不稳定的网络环境中构建一个可靠的传输层,网络的不确定性可能会导致数据包的丢失和顺序颠倒,重复等问题。三次握手可以使通信双方初始化序列号。

有了数据包对应的序列号:

  • 接收方可以通过序列号对重复的数据包去重
  • 发送方会在对应数据包未被ACK时进行重复发送
  • 接收方可以根据数据包的序列号对他们进行重新排序

三次握手可以避免资源浪费

使用三次握手是建立连接所需要的最小次数。四次,五次也可以但是那样做有点浪费了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值