TCP/IP三次握手及断开四次握手过程

TCP/IP状态变迁图

这里写图片描述
各状态详细描述:

  CLOSED:表示初始状态。对服务端和C客户端双方都一样。

  LISTEN:表示监听状态。服务端调用了listen函数,可以开始accept连接了。

  SYN_SENT:表示客户端已经发送了SYN报文。当客户端调用connect函数发起连接时,首先发SYN给服务端,然后自己进入SYN_SENT状态(CLOSED->SYN_SENT),并等待服务端发送ACK+SYN。

  SYN_RCVD:表示服务端收到客户端发送SYN报文(LISTEN->SYN_RCVD)。服务端收到这个报文后,进入SYN_RCVD状态,然后发送ACK+SYN给客户端。

  ESTABLISHED:表示连接已经建立成功了(客户端SYN_SENT->ESTABLISHED,服务器:SYN_RCVD->ESTABLISHED)。服务端发送完ACK+SYN后并接收到客户端的ACK后进入该状态,客户端收到SYN+ACK并发送ACK后也进入该状态。

  FIN_WAIT_1:表示主动关闭连接(一般是客户端)。无论哪方调用close函数发送FIN报文,客户端都会进入这个这个状态。

  FIN_WAIT_2:表示被动关闭方同意关闭连接(一般是客户端)。主动关闭连接方收到被动关闭方返回的ACK后,会进入该状态。

  TIME_WAIT:表示收到对方的FIN报文并发送了ACK报文,就等2MSL后即可回到CLOSED状态了。如果FIN_WAIT_1状态下,收到对方同时带FIN标志和ACK标志的报文时,可以直接进入TIME_WAIT状态,而无须经过FIN_WAIT_2状态。

  CLOSING:表示双方同时关闭连接。如果双方几乎同时调用close函数,那么会出现双方同时发送FIN报文的情况,就会出现CLOSING状态,表示双方都在关闭连接。

  CLOSE_WAIT:表示被动关闭方等待关闭(一般是服务器端)。当收到对方调用close函数发送的FIN报文时,回应对方ACK报文,此时进入CLOSE_WAIT状态。

  LAST_ACK:表示被动关闭方(一般是服务器端)发送FIN报文后,等待对方的ACK报文状态,当收到ACK后进入CLOSED状态。
这里写图片描述
上图描述了Client和Server建立通信、数据传输与断开连接的消息传输简图。

以上即是基本的TCP/IP的三次握手,以及数据传输和断开连接的四次握手过程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值