说说TCP 3次握⼿和4次握手

三次握手过程

在这里插入图片描述

  1. client端建⽴连接,发送⼀个SYN同步包,发送之后状态变成SYN_SENT
  2. server端收到SYN之后,同意建⽴连接,返回⼀个ACK响应,同时也会给client发送⼀个SYN包,发送完成之后状态变为SYN_RCVD
  3. client端收到server的ACK之后,状态变为ESTABLISHED,返回ACK给server端。server收到之后状态也变为ESTABLISHED,连接建⽴完成。

思考: 为什么要3次?2次,4次不⾏吗?

​ 因为TCP是双⼯传输模式,不区分客户端和服务端,连接的建⽴是双向的过程。
如果只有两次,⽆法做到双向连接的建⽴,从建⽴连接server回复的SYN和ACK合并成⼀次可以看出 来他也不需要4次。
挥⼿为什么要四次?因为挥⼿的ACK和FIN不能同时发送,因为数据发送的截⽌时间不同

四次握手过程

在这里插入图片描述

  1. client端向server发送FIN包,进⼊FIN_WAIT_1状态,这代表client端已经没有数据要发送了
  2. server端收到之后,返回⼀个ACK,进⼊CLOSE_WAIT等待关闭的状态,因为server端可能还有没有发送完成的数据
  3. 等到server端数据都发送完毕之后,server端就向client发送FIN,进⼊LAST_ACK状态
  4. client收到ACK之后,进⼊TIME_WAIT的状态,同时回复ACK,server收到之后直接进⼊CLOSED状态,连接关闭。但是client要等待2MSL(报⽂最⼤⽣存时间)的时间,才会进⼊CLOSED状态

思考: 为什么要等待2MSL的时间才关闭?

  1. ​ 为了保证连接的可靠关闭。如果server没有收到最后⼀个ACK,那么就会重发FIN

  2. 为了避免端⼝重⽤带来的数据混淆。如果client直接进⼊CLOSED状态,⼜⽤相同端⼝号向server建⽴⼀个连接,上⼀次连接的部分数据在⽹络中延迟到达server,数据就可能发⽣混淆了

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大伟攀高峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值