TCP之确保传输可靠的答题技巧

可靠性传输

  • 丢包发现

    • TCP的报文都是有序列号的
    • 如果序列号不按顺序到达,那么可以发现丢包或者乱序
    • 一旦检测到乱序,那么就将乱序部分调整,一旦检测到丢包,那么就通知发送方重新传输
  • 丢包重传

    • 有三种做法
      • 一种是亭等协议,就是没法送一个tcp报文,只有当接收方返回ack之后,才会发下一个报文,效率比较低
      • 一种是回退n帧协议,也就是一次性发送n个报文给接收方,一旦第k个报文出错,那么从k往后的报文都要重新发送
      • 最后是选择重传协议,接收方回发送sack报文,该报文头回添加错误的报文信息,从而通知发送方发送对应的报文,而不是全部重新发。
  • 流量控制

    • 流量窗口
      • 维护了三个指针
      • 一个指向窗口末尾,与起始位置的偏移量代表窗口大小,一般窗口大小由接收方的接收窗口大小来确定
      • 一个指向以发送并且已确认的数据包的位置
      • 一个指向已发送但是尚未确认的位置
      • 用于动态维护目前可发送的数据包,提高网络中的带宽占用
  • 拥塞控制

    • 慢启动

      • 发送方会从发送1个数据包开始,以2的倍数为指数增加报文数量
      • 一旦到达了预先设定的拥塞避免阈值,那么增加速度就从指数增加变为线性增加
    • 快速恢复

      • 一旦发生网络堵塞,首先将拥塞避免阈值设置为当前发送数据包数量的一半,然后下一次开始的时候,将窗口大小设置为拥塞避免阈值,然后线性增长。
    • 快速重传

      • 接收方一旦收到乱序报文,那么就返回最大的已接受连续报文的序列号给发送方,当发送方接收到三个同样序列号的ACK时,就重传这个

你可能感兴趣的:(一些小技巧,笔记)