TCP/IP三次握手与四次挥手

三次握手

三次握手是在建立tcp连接时需要客户端和服务器总共发送3个包。进行三次握手的作用是为了确认双方的接收能力和发送能力,指定自己的初始化序列号为后面的可靠性传送做准备。
1、第一次握手:
客户端向服务端发送一个 SYN 报文(SYN = 1),并指明客户端的初始化序列号 ISN(x)。请求发送后,客户端进入SYN_SENT 状态。

2、第二次握手:

服务器收到客户端的 SYN 报文之后,会发送 SYN 报文作为应答(SYN = 1),并且指定自己的初始化序列号 ISN(y)。同时会把客户端的 ISN + 1 作为确认号 ack 的值,表示已经收到了客户端发来的的 SYN 报文,希望收到的下一个数据的第一个字节的序号是 x + 1,此时服务器进入 SYN-RCVD 的状态。

3、第三次握手:

客户端收到服务器端响应的 SYN 报文之后,会发送一个 ACK 报文,把服务器的 ISN + 1 作为 ack 的值,表示已经收到了服务端发来的的 SYN 报文,希望收到的下一个数据的第一个字节的序号是 y + 1,并指明此时客户端的序列号 seq = x + 1(初始为 seq = x,所以第二个报文段要 +1),此时客户端进入 ESTABLISHED状态。服务器收到 ACK 报文之后,也进入ESTABLISHED状态,此时双方连接的建立完成。

四次挥手

tcp的连接的拆除需要发送四个包称为四次挥手,tcp连接是双向的,在四次挥手中,前两次挥手用于断开一个方向的连接,后两次挥手用于断开另一方向的连接。
1、第一次挥手

客户端发送一个 FIN 报文,报文中会指定一个序列号 seq = u。并停止再发送数据,主动关闭 TCP 连接。此时客户端进入 FIN_WAIT_1 状态,等待服务端的确认。

2、第二次挥手

服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端进入 CLOSE_WAIT状态。

3、第三次挥手

服务端将最后的数据发送完毕后,就向客户端发送连接释放报文,其报文头包含:FIN=1,ack=u+1,由于在CLOS-WAIT状态,服务端很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器进入LAST-ACK状态。

4、第四次挥手

客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答(ack = w+1),且把服务端的序列值 +1 作为自己 ACK 报文的序号值(seq=u+1),此时客户端进入TIME_WAIT状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值