美文网首页
TCP的重传

TCP的重传

作者: 黄云斌huangyunbin | 来源:发表于2019-05-05 11:24 被阅读0次

    我们都知道tcp发送的消息,如果没收到ack是会重传的。
    具体是怎么重传的呢

    比如发送1,2,3,4,5 这5个包,只有2这个包没收到,发送端要怎么重传呢?

    没收到2的时候,接受方ack一直都是2,从这个角度来说,发送方其实是不知道3,4,5这个几个包的情况的,所以都会重传。

    答:重传2,3,4,5这些包

    但是这个很浪费啊,明明3,4,5都收到了的,发送方还要重传一遍。

    所以tcp有个sack机制

    接受方会返回收到了哪些包,发送方就只是发送2这个包就可以了。

    答:开启sack的情况下,只是重传2这个包
    image.png

    还有个问题,tcp的重传默认是要等一段时间的,这个时间就是RTO,RTO的计算比较复杂,可以大概认为和rtt相关,是个相对比较长的时间了。
    有不有更快的解决方法呢,毕竟丢包是比较低概率的事情。

    快速重传:

    发送方连续收到3次相同的ack,这个时候即使超时定时器还没有超时,也开始启动重传。

    答:1,2,3,4,5 这5个包,只有2这个包没收到,会连续3次都为2的ack,所以会马上重传。
    image.png

    相关文章

      网友评论

          本文标题:TCP的重传

          本文链接:https://www.haomeiwen.com/subject/mzjcoqtx.html