【TCP:可靠数据传输,快速重传,流量控制,TCP流量控制】

可靠数据传输

TCP:可靠数据传输

  • TCP在IP不可靠服务的基础上建立了rdt
    • 管道化的报文段
      • GBN or SR
    • 累计确认(像GBN)
    • 单个重传定时器(像GBN)
    • 是否可以接受乱序的,可以缓存,也可以丢弃
  • 通过以下事件触发重传
    • 超时(只重发那个最早的未确认段:SR)
    • 重复的确认
      • 例子:收到了ACK50,之后又收到3个ACK50
  • 首先考虑简化的TCP发送方:
    • 考虑重复的确认
    • 忽略流量控制和拥塞控制
      在这里插入图片描述
      NextSeqNum = NextSeqNum + length(data):
      发送窗口前沿向前移动。
      SendBase = y
      /* SendBase–1: last cumulatively ACKed byte */
      if (there are currently not-yet-acked segments) start timer else stop timer:
      发送窗口后沿向前移动,没有已发送未确认的字节,关掉定时器。

TCP发送方事件

从应用层接收数据:

  • 用nextseq创建报文段
  • 序号nextseq为报文段首字节的字节流编号
  • 如果还没有运行,启动定时器
    • 定时器与最早未确认的报文段关联
    • 过期间隔:TimeOutInterval
      超时:
  • 重传后沿最老的报文段
  • 重新启动定时器
    收到确认:
  • 如果是对尚未确认的报文段确认
    • 更新已被确认的报文序号
    • 如果当前还有未被确认的报文段,重新启动定时器
      在这里插入图片描述
      解释:这里发送方传送的序号从92开始的,8个字节,接收方收到给一个ACK100的确认,但是这个确认丢失,发送方又传了100开始,20个字节。这个时候就要重发92,8。
      在这里插入图片描述
      这里有几种情况:
      ①隐忍不发,等多个报文在一起时候再一起发。
      ②延时等待,下一个报文在延时时间发了的话,就一起发送。没发的话,就只发送一个ACK。
      ③在发送重复的ACK,指明下一个期待的字节序号。
      ④若报文中间有gap间隔,完全补齐的话,就发送所有的ACK,部分补齐的话,就发送补齐部分。

快速重传

  • 超时周期往往太长:
    • 在重传丢失报文段之前的延时太长
  • 通过重复的ACK来检测报文段丢失
    • 发送方通常连续发送大量报文段
    • 如果报文段丢失,通常会引起多个重复的ACK
  • 如果发送方收到同一数据的3个冗余ACK,重传最小序号的段:
    • 快速重传:在定时器过时之前重发报文段
    • 在这里插入图片描述
      在这里插入图片描述

流量控制

TCP流量控制

流量控制:接收方控制发送方,不让发送方发送的太多,太快以致于让接收方的缓冲区溢出。
在这里插入图片描述

  • 接收方在其向发送方的TCP段头部的rwnd字段“通告”其空闲buffer大小。
  • 保证接收方不会被淹没。
    在这里插入图片描述
    在这里插入图片描述

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-24 09:08:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-24 09:08:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-24 09:08:01       87 阅读
  4. Python语言-面向对象

    2024-04-24 09:08:01       96 阅读

热门阅读

  1. [SP10606] BALNUM - Balanced Numbers 解题记录

    2024-04-24 09:08:01       38 阅读
  2. 算法题解记录21+++打家劫舍(百日筑基)

    2024-04-24 09:08:01       33 阅读
  3. kafak知识总结(2)

    2024-04-24 09:08:01       34 阅读
  4. 对React-Fiber的理解,它解决了什么问题?

    2024-04-24 09:08:01       37 阅读
  5. 网站安全方案

    2024-04-24 09:08:01       28 阅读
  6. 阿里云域名动态解析

    2024-04-24 09:08:01       32 阅读
  7. 使用python写一个井字棋窗口小游戏

    2024-04-24 09:08:01       34 阅读
  8. 暴力数据结构之单链表专题

    2024-04-24 09:08:01       28 阅读
  9. PostCss 概述

    2024-04-24 09:08:01       35 阅读
  10. 文件分享新风尚,二维码生成器全功能解析

    2024-04-24 09:08:01       41 阅读