TCP三次握手四次挥手

三次握手建立连接

在这里插入图片描述

  • 首先客户端向服务器发送SYN标志位 第一次握手

    举个栗子: 客户端给服务器打电话: 我要跟你说话啦!

  • 服务器发送SYN和ACK应答 第二次握手

    服务器响应: 我也要跟你说话了, 收到你的请求了, 每句话编号, 我的下一句编号是Y!

  • 客户端发送ACK应答 第三次握手

    客户端: 我收到你的通话请求了, 我要说的下一句的编号是Z!

可靠的消息通信

此时客户端和服务器建立了可靠的通信基础。彼此之间通过编号确认所有收到的消息以及消息的顺序。 为什么要确认顺序呢, 因为一次消息的程度是有限制的, 由于网络波动, 可能晚发送的消息早达到, 甚至有可能有的消息丢失, 为什么? 自己去复习网络基础去吧!

通过确认编号, 就知道了之前所有的消息已经收到, 例如 服务器给客户端发送 1-10 十条消息, 而客户端接收到了 1, 2, 3, 5, 此时, 客户端给服务器的ACK应答应为4, 期待4的发送, 此时服务器就知道了自己应该再吧4发送一次, 顺便发送后面5-10。 因为部分消息可能丢失了。 需要再次发送。

四次挥手关闭连接

在这里插入图片描述

过程为:

  • 主动方发送FIN标志位, 同时关闭写缓冲区

    主动方: 我该说的说完了,我不说了。

  • 被动方发送ACK应答, 同时关闭读缓冲区

    被动方:我知道了, 我不听了, 我继续说

  • 被动方发送FIN标记, 同时关闭写缓冲

    被动方此时也说完了: 我也说完了, 我不说了。

  • 主动方发送ACK应答, 同时关闭读缓冲

    主动方: 行我知道了, 我也吧不听了。

主动方发送ACK应答之后,进入TIME_WAIT状态, 会等待2MSL时间

原因:

  1. 为了保证最后发送的ACK能够到达被动方, 因为这个ACK可能会丢失, 如果丢失了, 主动方没管的话, 被动方话一直等待ACK应答, 不会关闭连接, 浪费资源。如果到达了被动方, 在数据链路层会有确认报文段, 2MSL时间内没有收到确认报文段的, 主动方会再次发送ACK应答, 并重新计时2MSL。
  2. 防止已失效的报文段到达, 因为可能因为网络的原因, 前面的报文段晚到达了, 此时如果没有2MSL的时间, 会再次发起三次握手连接。 并此方一直陷入等待的状态, 浪费资源。 等待2MSL可以使得网络中所有的报文段到达此处。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值