5.6 TCP可靠传输的实现

  • 本节介绍如何实现TCP的可靠传输

  • 目录
    5.6.1 以字节为单位的滑动窗口
    5.6.2 超时重传时间选择
    5.6.3 选择确认 SACK

TCP使用的4种计时器
  • 重传计时器、持续计时器、保活计时器和时间等待计时器

  • 1、重传计时器
    当TCP发送一个报文段时,就会创建一个 针对这个报文段的重传计时器
    若在 重传计时器截止时间 到来之前就收到了 对此特定报文段的确认 ,就撤销此计时器。
    若在收到 对此报文段的确认 之前 计时器截止期 到,则会重传此报文段,并将计时器复位重新计时。

  • 2、持续计时器
    用于 发送方TCP 收到 零窗口大小通知 后的处理。
    接收方TCP 发出了 窗口大小为0的报文段发送方TCP 就会停止传送报文段,直到 接收方TCP 发送确认并给出一个非零的窗口大小。
    但这个确认可能会丢失
    在TCP中,对于 确认报文段 是不需要发送确认的。
    这个非零窗口大小的确认 丢失了, 接收方TCP 无从得知,会一直等待发送方TCP发送数据;而 发送方TCP 由于未收到次确认也会等待接收方TCP发送确认来通知接收窗口大小。
    要打开这种 死锁 ,TCP为 每一个连接 使用了 一个持续计时器
    当发送方TCP收到 一个零窗口的确认 时,就会启动 该连接的持续计时器 。当持续计时器期限到时, 发送方TCP 就发送一个 探测报文段 (此报文段只有 一个字节的数据 ,探测报文段的有一个序号,但这个序号不需要确认)。 探测报文段 提醒接收方TCP:确认已丢失,请重传。
    持续计时器的值 设置为 重传时间的数值 。若 第一个探测报文段 的持续计时器到期也未收到从接收方TCP的响应,那么需要发送 另一个探测报文段 ,并将持续计时器的值加倍和复位,知道这个值增大到 门限值 (通常是60秒)为止。
    此后发送端每隔60秒就发送一个探测报文段,直到窗口重新打开。

  • 3、保活计时器
    用于防止TCP连接出现长时间的空闲。
    客户端 打开了到服务器的连接,传送了一些数据,然后就保持静默了(也许是故障了)。
    此时需要 服务器 设置 保活计时器 。每当服务器收到客户端的信息,就将计时器复位。
    保活计时器超时时间 一般设置为2小时。
    若服务器超过2小时还没有收到客户的信息,服务器就开始发送探测报文段。若发送了10个探测报文段(每一个相隔75秒)还没有响应,就假定客户出了故障,服务器终止该连接。

  • 4、时间等待计时器
    用于 连接终止阶段
    当TCP关闭一个连接时,它并不认为这个连接马上就关闭了。
    时间等待期间 ,连接还处于一种 中间过渡状态
    为了保证 A发送的最后一个ACK报文段 能够到达B。这个ACK报文段可能丢失,B收不到对 自己向A发送的FIN+ACK报文段 的确认(B无法进入 CLOSED状态 ),B就会超时重传这个FIN+ACK报文段,而A在此延时状态下便能收到这个报文段,A也重传一次确认,重新启动时间等待计时器。
    防止 已失效的连接请求报文段 出现在本连接中。A发送完 最后一个ACK报文段 后,等待 给定的时间 。可以使 本连接持续的时间内 所产生的的所有报文段都从网络中消失。
    此计时器的值通常设置为一个 报文段寿命期待值 的两倍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值