网络-tcp三次握手和四次挥手

背景

tcp/ip协议中,最重要的协议莫过于面向连接的tcp协议。

  • 面向连接
  • 可靠传输

tcp协议解决网络的不可靠的缺点。

三次握手

参考流程图:https://www.processon.com/view/link/5d1e0c26e4b05dcb43974c77
在这里插入图片描述

  1. 客户端未连接状态,服务端处于监听状态
  2. 客户端发起syn握手同步请求
  3. 客户端改变自己的状态到SYN_SENT状态,表示自己已经发送了握手请求
  4. 服务端收到SYN,改变自己的状态为SYN_RECEIVED状态
  5. 服务端回复SYN+ACK响应,客户端变更状态为ESTABLESHED
  6. 客户端发起ACK,服务端变更为ESTABLISHED状态
  7. 客户端开始向服务端发送有效数据

三次握手的过程就是一个连接状态改变的过程,其中每一步都有可能出现丢包而导致过程中断,都会从第一步重新开始

四次挥手

参考流程图:https://www.processon.com/view/link/5d1e0c26e4b05dcb43974c77
在这里插入图片描述

  1. 发送端和接收端(这里发送端可能是客户端也可能是服务端)都处于ESTABLESHED连接状态
  2. 发送端发送fin包,自己改变状态为FIN_WAIT_1
  3. 接收端接收到fin包,改变状态为CLOSE_WAIT,并且发送ACK包
  4. 接收端发送ack包,发送端改变自己的状态FIN_WAIT_2
  5. 接收端处理还没有中断的数据传输,并且发送FIN包,改变自己的状态为LAST_ACK
  6. 发送端接收到FIN包,改变自己的状态为TIME_WAIT状态,并发送ACK包
  7. 接收端接收到ACK包,改变自己的状态CLOSED,并且不再回复
  8. 发送端超时没有收到其他包,认为连接已经关闭,改变自己的状态为CLOSED

我们发现,发送端最后的状态是TIME_WAIT和CLOSED,这一点在linux服务器经常会发生。例如我们执行netstat -nap,发现很多连接都是TIME_WAIT状态,这个时候其实就是因为服务器作为发送端,终止的tcp连接。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值