TCP三次握手四次挥手

TCP问题

TCP为什么两次握手不行?四次呢

目的:防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误
在这里插入图片描述
通俗讲解:客户端发送一个SYN报文给服务端,这里的SYN是一个标志位表示发起一个连接,并且这个SYN标志位置为1,还会把序列号置于TCP首部的序号字段中(我的理解是就相当于挂了一个车牌,车上路去往目的地时必须有一个车牌才能上路),服务端收到客户端的SYN报文后,会返回一个ACK报文,其中填入客户端序列号+1(用来验证表示这个回复回复对人了)然后也会随机一个Seq序列号,和SYN报文一块发送给客户端,客户端收到这次的报文后,会返回一个ACK的报文填入服务器端的序列号+1,注意这次可以携带客户端到服务器的数据
过程

  1. 客户端会随机初始化序号Seq ,将次序号置于tcp首部的序号字段中,同时把SYN标志位置为1,表示SYN报文,接着把第一个SYN报文发送给服务端,表示向服务端发起请求,该报文不含应用层数据在这里插入图片描述

  2. 服务端收到客户端的SYN报文后,首先服务端也随机初始化自己的序号Seq,将此序号填入TCP首部的序号字段中,其次包TCP首部的确认应答号ACK字段填入客户端初始化序列号Sqe+1,接着把SYN和ACK的标志位置为1,最后把报文发给客户端,该报文也不包含应用层数据,服务端处于同步收到状态在这里插入图片描述

  3. 客户端收到服务端报文后,还要向服务端回应一个应答报文,首先该应答报文TCP首部ACK标志位置为1,其次确认应答号ACK填入服务段初始化序列号Seq+1,最后把报文发送给服务端,这次报文可以携带客户到服务器的数据在这里插入图片描述

在这里插入图片描述
这是3次握手连接的结果

但是如果在连接之前因为延迟等的一些的原因导致第一个连接丢了,于是客户端发送第二个请求建立了连接,但是就在退出连接的时候第一条丢了的,他找回来了,那么此时如果只有2此握手的话,就会照成新的连接建立了,但是此时客户端没有发出建立的请求,所以不会理睬服务端的确认,也不会向服务端发送任何数据,而服务端却会一直等这,这样以来就会浪费服务端的很多资源

所以在3次握手下,必须又客户端的回复才能连接,没有的话,就证明此次连接到此为止了

4次:把ACK(i+1),SYN(k)合而唯一,顾四次优化成3次、

TCP的四次挥手

客户主动发起TCP报文断开连接标志位是FIN表示释放一个连接,并且还有一个随机的32位序列号Seq,服务器接收到后会发送一个ACK报文并且为了证明正确性(证明确实是回复这个客户端的)这个ACK报文填入的是是序列号+1 ,然后还会发送一个断开连接的信号,FIN报文+ACK报文,这里的ACK报文填入的还是之前的序列号+1,为的是表明是客户端发起的断开连接,然后还会随机生成一个Seq码,之后客户端收到后会断开连接并且发送ACK报文,ACK序号为Seq+1

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值