TCP三次握手/四次挥手

TCP三次握手/四次挥手

TCP的三次握手四次挥手实质就是TCP通信的连接和断开。

三次握手

  • 任何基于TCP的应用,在发送数据之前,都需要由TCP进行三次握手进行连接
握手流程:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oagl5gBn-1683529215901)(C:\Users\su\AppData\Roaming\Typora\typora-user-images\image-20230505160457734.png)]

三次握手原理

  • 第1次握手:客户端发送一个带有SYN(synchronize)标志的数据包给服务端
    • 详细:客户端发送建立连接的请求,请求中包含seq(序列号)和SYN,此seq是发送端随即生成。SYN字段为1标识需要建立TCP连接**(syn=1,seq=x,x为随机值)。**
  • 第2次握手:服务端接收成功后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了
    • 详细:服务端回复客户端的请求,回复的报文包含syn,seq,ack,此seq是回复端随机生成,syn置为1表示需要建立一个连接,并生成ack字段,ack的数值为seq+1,确认收到客户端发来的信息。(syn=1,seq=y,ack=x+1)。
  • 第3次握手:客户端再回传一个带有ACK标志的数据包,表示我知道了,握手结束
    • 客户端收到服务端发送的TCP建立验证请求后,会使自己的序列号加1表示,并且再次回复ACK验证请求,在服务端发过来的seq上加1进行回复。(SYN=1,ACK=y+1,seq=x+1)。
  • 其中:SYN标志位数置1,表示发起一个连接;ACK表示序列号有效,确认收到消息。

四次挥手

TCP连接是全双工,因此每个方向都必须单独进行关闭。只要一方发送完数据就能发送FIN来终止该方向的连接;收到一个FIN意味着该方向没有数据流动;先关闭的一方为执行主动关闭,而另一方执行被动关闭

四次挥手原理

  • 第1次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1状态
    • 客户端报文发送断开请求,请求中包含seq序列号、fin,fin为1表示需要断开tcp连接。(FIN=1,seq=x,x由客户端随机生成)
  • 第2次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态
    • 服务端回复客户端的断开请求,回复的报文中包含ack、seq、fin,ack为ack+1确认收到客户端发来的信息,seq随机生成,fin置为1表需要断开连接**(FIN=1,ACK=x+1,seq=y,y由服务端随机生成)**
  • 第3次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态
    • 服务端回复完客户端的断开请求后,不会马上进行TCCP连接的断开,会先确保断开前,所有传输的数据是否已经传输完毕,一旦确认传输完毕,会讲回复报文的fin置为1,并产生随机seq。(FIN=1,ACK=x+1,seq=z,z由服务端随机生成)
  • 第4次挥手:客户端收到FIN后,客户端t进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,服务端进入CLOSED状态,完成四次挥手
    • 客户端收到服务端的断开请求,回复服务端的断开请求,包含随机seq和ack,ack会在断开请求的seq基础+1,从而完成服务端请求的验证回复。(FIN=1,ACK=z+1,seq=h,h为客户端随机生成)
  • 其中:FIN标志位数置1,表示断开TCP连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

'Beyond'

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

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

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

打赏作者

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

抵扣说明:

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

余额充值