zoukankan      html  css  js  c++  java
  • Java每日一面(Part1:计算机网络)[19/11/02]

    作者:故事我忘了
    个人微信公众号:程序猿的月光宝盒

    ## 1.TCP的滑动窗口

    1.1 RTT和RTO的区别

    ​ RTT:发送一个数据包到收到对应的ACK,所花费的时间

    ​ RTO:重传时间间隔,TCP在发送一个数据包之后,会启动一个重传定时器,RTO就是这个定时器的重传时间,再通俗的讲就是,一开始先算一个定时器时间,如果你回复了ACK,那重传定时器就自动失效,也就是说不用重传了,但是如果没有回复给我ACK,RTO定时器的时间又到了,就重传,由于RTO是本次数据包所发送的超时时间,那么RTO就需要一个很好的算法去统计,来更好的预测这次的超时时间,RTO不是固定写死的配置,而是经过RTT计算出来的,有了RTT才能计算出RTO.基于RTO才有了重传机制,而后才有滑动窗口

    1.2 TCP使用滑动窗口做流量 控制与乱序重排

    滑动窗口主要有两个作用:

    ​ 1.保证TCP可靠性

    ​ 2.保证TCP的流控特性

    1.3 窗口数据的计算过程

    图片

    ◇EffectiveWindow = AdvertisedWindow-(LastByteSent-LastByteAcked)

    1.4 滑动窗口的基本原理

    1.4.1 TCP会话的发送方

    图片

    任何时候都能分为4类

    1:已经发送并且得到端的回应的

    2:已经发送但是没有得到端的回应的

    3:未发送,但允许对端发送的

    4:未发送,且不允许对端发送的

    其中:2+3即为发送端口

    1.4.2 滑动原理:

    图片

    1.5 TCP会话的接收方

    图片

    在某一时刻,在接受缓存范围内有四种状态

    1+2.已接收,已发送回执

    3.未接收,但是可以接收(准备接收)

    4.未接受,也不能接收

    其中3为接收窗口

    由上可知,TCP最基本的传输可靠性,来源于确认重传机制,TCP滑动窗口的可靠性,也是建立在确认重传基础上的

    滑动窗口的大小可以根据一定策略动态调整.

  • 相关阅读:
    go1.13 mod 实践和常见问题
    etcd 添加用户,授权特定目录
    golang 你所不知道的 log 和 fmt
    redis 原理系列之--字符串存储的实现原理(1)
    golang 写文件--详细解释
    面向对象范式的核心本质是?---不是继承 不是封装也不是多态
    关于自控力和拖延 的一点分享--《自控力》
    Linux 精确判断是否同一文件--及终端获取字符串md5 的值
    ARM版本及系列
    技术团队塑造
  • 原文地址:https://www.cnblogs.com/jsccc520/p/11780435.html
Copyright © 2011-2022 走看看