TCP协议的三次握手过程

  • TCP作为一种可靠传输控制协议
  • 核心思想:保证数据可靠传输,提高传输效率
  • 三次握手建立连接

TCP三次握手过程

 每一次握手:全双工的方式

  1. 第一次握手,客户端发送数据包给服务端:证明了客户端有发送的能力
  2. 第二次握手,服务端接收到之后,再发送数据包给客户端:证明了服务端有发送和接收的能力
  3. 第三次握手,客户端接收到服务端的数据包,再发送数据包给服务端:证明了客户端接收的能力
  4. 所以每一次的握手都是去完成对应的功能,只能确认客户端和服务端都有发送和接受的能力,才能保证整个TCP链接的可靠性

口述:

  • 客户端发送SYN(seq=X)报文给服务器端,进入SYN_SEND状态
  • 服务器端接受到SYN报文,回应一个SYN(seq =Y) 和ACK(ack = x + 1)报文,进入SYN_RECV状态
  • 客户端接受到SYN报文,回应一个ACK(ack = Y+ 1)报文,进入Established状态。
  • 在三次握手完成后,TCP客户端和服务端成功建立连接,可以开始传输数据了。

如果只有两次握手?

  1. 第一次客户端发送请求,第一次握手请求由于网络阻塞等原因卡在半路
  2. 客户端发送第二次请求,这一次服务端收到了,经过两次握手后建立连接,双方都进入ESTABLISHED状态开始传输数据
  3. 在传输完成后,释放第二次请求所建立的双方TCP连接,客户端和服务端都进入CLOSED状态

但如果此时网络又顺畅了,第一次请求又来到了服务端

  1. 这个时候被阻塞的第一次请求重新到达服务端
  2. 服务端接受到后,开辟空间准备接收连接,并且 发送数据包给客户端
  3. 但是这个时候客户端处于CLOSED状态,它是不会接收服务端发过来的数据包的
  4. 服务端发送完之后,由于没有第三次握手,它不知道客户端已经挂了
  5. 服务端将会一直等待下去,浪费服务端连接资源

为什么不使用四次握手?

因为三次握手就已经能够保证客户端和服务端已经同时具有发送和接收的能力,四次显得多此一举

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值