• TCP的可靠性


    原因:

    1.确认和重传机制

    2.序列号

    3.流量控制(窗口)

    4.拥塞控制(慢启动,拥塞避免,快速重传,快速恢复)

    http://blog.csdn.net/baidu_35692628/article/details/78255476?locationNum=4&fps=1

    Tcp:1)流量控制:防止较快主机使较慢主机缓冲区溢出,是点对点;2)拥塞控制:  全局性,防止过多的数据注入网络。

    tcp 采用滑动窗口进行流量控制,滑动窗口大小可变,窗口大小的单位是字节。

    发送窗口在连接建立时由双方确定,但在通信过程中,接收端可以根据自己的资源情况, 随时动态的调整对方的发送窗口上限制。

    拥塞控制:慢开始、拥塞避免、快重传、快恢复。

    接收端窗口:这是接收端根据其目前的接收缓存大小所许诺的最新窗口值,是来自接收端的流量控制。接收端将此窗口值放在 tcp 报文的首部中的窗口字段,传送给发送端,是来自接收端的流量控制。

    拥塞窗口:这是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。

    当网络发生拥塞时,路由器就会丢掉分组,因此,只要发送端没有按时收到应当到达的确认报文 ack,就可认为网络出现了拥塞。

    发送窗口上限=min{接收窗口,拥塞窗口}。

    慢开始:由小到大逐渐增大发送端的拥塞窗口数值。

    为了防止拥塞,窗口 cwnd 的增长引起网络拥塞,还需要慢开始门限 ssthresh。

    当 cwnd<ssthresh, 使用慢开始算法; 当 cwnd>ssthresh, ,使用拥塞避免算法; 当

    cwnd=ssthresh,既可用慢开始算法也可用拥塞避免算法。

    无论是慢开始还是拥塞避免,只要发送端发现网络阻塞,就将慢开始门限设为出现拥塞时的发送窗口值的一半,然后拥塞窗口为一,并执行慢开始算法。这样做的目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。

    快重传算法规定:发送端只要一连收到三个重复 ack,即可断定有分组丢失,就应该立即重传丢失的报文,而不需要等待为该报文设置的重传计时器超时。

    与慢开始不同,拥塞窗口不设为 1,,而设为慢开始门限+3*mss(mss:最大报文段)。

  • 相关阅读:
    设计模式-工厂设计模式
    Spring Batch BATCH_JOB_SEQ 出现死锁问题
    windows 安装 jenkins 自动化构建部署至linux服务器上
    Git安装
    MAVEN(一) 安装和环境变量配置
    Jenkins 安装
    jenkins操作
    linux firewalld 防火墙操作命令
    【Azure Redis 缓存】Azure Redis读写比较慢/卡的问题排查
    【Azure 服务总线】向服务总线发送消息时,返回错误代码Error code : 50009
  • 原文地址:https://www.cnblogs.com/cing/p/8622545.html
Copyright © 2020-2023  润新知