TCP三次握手、TCP四次挥手、TCP十一种状态集

TCP三次握手:

  • 第一次握手:客户端TCP报文种设置"syn=1",第一个数据包"seq"序列号(X)默认为0,然后把报文给服务端,请求建立连接
  • 第二次握手:服务端接收到客户端报文中请求建立连接的请求,也向客户端发送一个TCP报文,“syn"设置为1,请求客户端的连接,同时"ack"控制字段也设置为1,表示对确认收到客户端的请求。
    服务端TCP报文中第一个数据包的"seq"序列号(Y)也默认为0,报文中"ACK"确认号为"X+1”,告诉客户端下次要发数据包的序列号
  • 第三次握手:客户端向服务端发送"ack=1"的确认控制字段,发送"seq"序列号信息(X+1),发送"ACK"确认号(Y+1)

通过一张图更直观的描述三次握手的过程,(下面的TCP报文为简写,只写了些重要信息)其中"fin"控制字段是请求断开连接的字段,当"fin"设置为1时,即为请求断开连接
在这里插入图片描述

TCP四次挥手

  • 第一次挥手:客户端向服务端发送断开连接请求,控制字段"fin"设置为1
  • 第二次挥手:服务端向客户端发送确认信息,控制字段"ack"设置为1,表示收到了客户端的请求
  • 第三次挥手:服务端向客户端发送请求断开连接的请求,控制字段"fin"设置为1,并向客户端发送确认信息,控制字段"ack"设置为1
  • 第四次挥手:客户端向服务端发送确认信息,控制字段"ack"设置为1,表示确认收到服务端发来的断开连接的信息

在这里插入图片描述

TIP:为什么建立连接进行三次握手,断开连接却需要四次握手?

  • 服务端开启服务后,就一直处于监听状态,等待想要与其建立连接的客户机。所以一旦有客户机来连接自己,不需要向上层(会话层)汇报,就可以直接给客户端发送确认信息,并向客户端发送建立连接的请求。所以只需要三次握手即可连接
  • 而客户端在请求断开连接时,服务端只能先发一个确认信息,表示自己已经收到客户端的断开连接请求,但是不能立马也向客户端发送断开连接的请求,因为服务端需要向上层(会话层)汇报一下,得到会话层的允许后,再向客户端发送请求端开连接的请求。所以需要四次挥手
  • 会话层主要用于建立连接;tcp协议处于传输层,主要用于传输数据

TCP十一种状态集

  • TCP三次握手:5种状态
    在这里插入图片描述
    在这里插入图片描述
  • TCP四次挥手:6种状态
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值