TCP三次握手与四次挥手

tcp协议

tcp协议属于传输层协议,是面向连接的协议,于是就会产生三次握手的概念

三次握手

三次握手是客户端与服务端建立的三次连接,目的是确保通信双方都有接受与发送信息的能力

三次握手过程

第一次握手

客户端向服务端发起SYN=1和序列号seq=x(SYN报文)

第二次握手

服务端接收到数据,向客户端发送SYN=1,ACK=1,ack=x+1,seq=y(SYN响应)

第三次握手

客户端收到 SYN 报文之后,会发送一个 ACK 报文,ACK=1,ack=y+1,seq=x+1

于是三次握手完成,建立tcp连接

第一次握手确定客户端有发送能力

第二次握手确保服务端有接受信息能力,发送能力

第三次握手确保客户端有接受能力,于是就确保了通信双方的接受和发送能力

四次挥手

第一次挥手

客户端向服务端发送FIN报文,指定序列号seq=u

第二次挥手

服务端收到 FIN 之后,会发送 ACK 报文ACK=1,ack=u+1,seq=v

第三次挥手

如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号FIN=1,ACK=1,ack=u+1,seq=w

第四次挥手

客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,ACK=1,ack=w+1,seq=u+1

为什么要进行四次挥手

当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”。只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四次挥手

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

晚安薯条

你的支持是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值