名词解释

MTU:最大传输单元(硬件规定),指的是ip头+data的最大字节数(数据包超过该值会分片,主要为UDP协议)
TTL:数据报的寿命(经过一个路由器减1,工作在ip层)
RTO:重传超时时间
cwnd:发送窗口
rwnd:接受窗口

流控制

目的:
    防止发送方速率太快,接受端承受不了(点对点流空)

原理:
    a. 通过滑动窗口实现(滑动窗口协议工作在传输层)
    b. 发送方根据收到ack中下一字节的序号n和接受方窗口大小m,以及目前发送字节序号x,算出还可以发送的字节数
    发送窗口的第一个字节序号 = ack中期望的下一个字节序号

总结:
    a. 发送窗口只有收到接受端的确认,才会移动发送窗口的左边界
    b. 接受窗口只有在前面所有数据报都确认,才会移动接受窗口的左边界
    c. 应用程序可以通过api接口更改rwnd大小;tcp协议栈在下次发送时将新窗口大小发给发送方,对端按照新窗口大小设置发送窗口大小,减缓发送速率

拥塞控制

目的:
    防止过度哦的数据流入网络,引起路由器和链路的不可用

拥塞控制方式:
    慢开始
        过程:发送端初始拥塞窗口 cwnd =1,如果没有网络拥塞,cwnd成倍数增长(慢开始的慢指的是初始拥塞窗口=1)

        为了防止满开始增长速率太快,需要设置慢开始门限(ssthresh)
        a. cwnd < ssthresh 慢开始算法
        b. cwnd > ssthresh 拥塞避免算法
        c. cwnd = ssthresh 两者即可 一般为拥塞避免算法
    拥塞避免
        过程:拥塞窗口缓慢增长,没收到一个确认信息,cwnd + 1

        ****
        慢开始和拥塞避免:
            只要发送方判断出现网络拥塞(没有收到数据报确认信息),ssthresh减半,执行慢开始算法,当cwnd = ssthresh,执行拥塞避免算法
        ****
    快重传和快恢复
        原理:接受方收到失序的数据报立马发出确认信息给到发哦是那个段,不用等到下次发送数据携带进行确认
        过程:
            a. 发送方连续收到3个失序数据报的确认信息,sshthresh立马减半
            b. 不执行慢开始算法,cwnd= ssthresh(初始拥塞窗口大小设置为ssthresh一半)(因为网络有可能没有出现拥塞),执行拥塞避免算法(加法增长),使拥塞窗口缓慢增长