前言:
之前在写消息系统的时候,借鉴了一些TCP在流量控制的经验,发现还挺有用的。所以这张总结一点关于TCP在容灾、控制上的算法。主要包括超时重传,动态窗口,顺序保障。
================流量窗口=========================
可以从图中看到,在8,14的两个ack win=0 这个时候sun就会等待。当窗口够大时,服务端就会发送9这个ack告知客户端继续发送数据。可见同一个SYN的ACK可以发多次。
滑动窗口:
滑动窗口特点 写道
1) 称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生在数据被发送和确认时。
2) 当窗口右边沿向右移动时将允许发送更多的数据,我们称之为窗口张开。这种现象发生在另一端的接收进程读取已经确认的数据并释放了T C P的接收缓存时。
3) 当右边沿向左移动时,我们称之为窗口收缩。Host Requirements RFC强烈建议不要使用这种方式。但T C P必须能够在某一端产生这种情况时进行处理。第2 2 . 3节给出了这样的一个例子,一端希望向左移动右边沿来收缩窗口,但没能够这样做。
2) 当窗口右边沿向右移动时将允许发送更多的数据,我们称之为窗口张开。这种现象发生在另一端的接收进程读取已经确认的数据并释放了T C P的接收缓存时。
3) 当右边沿向左移动时,我们称之为窗口收缩。Host Requirements RFC强烈建议不要使用这种方式。但T C P必须能够在某一端产生这种情况时进行处理。第2 2 . 3节给出了这样的一个例子,一端希望向左移动右边沿来收缩窗口,但没能够这样做。
如果左边沿到达右边沿,则称其为一个零窗口,此时发送方不能够发送任何数据。
在通告窗口和发送数据窗口之间的空闲为可用窗口。
========================超时重传=============================
即当TCP发送一个包,但是得不到ACK时,就会进行超时重传。直到最后不成功发送一个R重置信号。
第一个重传到最后一个R的间隔时间一般为2分钟。
连续重传之间不同的时间差,它们取整后分别为1、3、6、1 2、2 4、4 8和多个6 4秒,这个倍乘关系被称为“指数退避(exponential backoff )”。
==============================拥塞避免======================================
(1)慢启动。
TCPIP协议 写道
现在,T C P需要支持一种被称为“慢启动(slow start)”的算法。该算法通过观察到新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作。
慢启动为发送方的T C P增加了另一个窗口:拥塞窗口(congestion window),记为c w n d。当与另一个网络的主机建立T C P连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小)。
每收到一个A C K,拥塞窗口就增加一个报文段( c w n d以字节为单位,但是慢启动以报文段大小为单位进行增加)。发送方取拥塞窗口与通告窗口中的最小值作为发送上限。拥塞窗口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。
发送方开始时发送一个报文段,然后等待A C K。当收到该A C K时,拥塞窗口从1增加为2,即可以发送两个报文段。当收到这两个报文段的A C K时,拥塞窗口就增加为4。这是一种指数增加的关系。
在某些点上可能达到了互联网的容量,于是中间路由器开始丢弃分组。这就通知发送方它的拥塞窗口开得过大。当我们在下一章讨论T C P的超时和重传机制时,将会看到它们是怎样对拥塞窗口起作用的。现在,我们来观察一个实际中的慢启动。
慢启动为发送方的T C P增加了另一个窗口:拥塞窗口(congestion window),记为c w n d。当与另一个网络的主机建立T C P连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小)。
每收到一个A C K,拥塞窗口就增加一个报文段( c w n d以字节为单位,但是慢启动以报文段大小为单位进行增加)。发送方取拥塞窗口与通告窗口中的最小值作为发送上限。拥塞窗口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。
发送方开始时发送一个报文段,然后等待A C K。当收到该A C K时,拥塞窗口从1增加为2,即可以发送两个报文段。当收到这两个报文段的A C K时,拥塞窗口就增加为4。这是一种指数增加的关系。
在某些点上可能达到了互联网的容量,于是中间路由器开始丢弃分组。这就通知发送方它的拥塞窗口开得过大。当我们在下一章讨论T C P的超时和重传机制时,将会看到它们是怎样对拥塞窗口起作用的。现在,我们来观察一个实际中的慢启动。
(2)拥塞避免算法
相关推荐
Codelife 不止代码 - 自阅读加注标签-技术规划的借鉴 有摘记和感想.md,提供了原文的详细目录大纲,更重要的是给出了自学摘记,记录下诸多感想。 人的学习进步体现在对抽象问题的概括和具体问题的有针对性的见解,...
EJB(Enterprise JavaBeans)是Java EE平台中的一个核心组件,用于构建企业级分布式应用程序。EJB 3是其第三个主要版本,发布于2006年,它引入了...如果你正在探索或使用EJB 3,这些摘记和文档将是你宝贵的参考资料。
Fluent软件应用过程中的一些比较重要的说明摘记
### 《Effective C++》摘记知识点解析 #### 标题与描述概述 - **标题**:“《Effective C++》摘记”:该标题表明了文章的主要内容是关于《Effective C++》一书中的精华总结。 - **描述**:“《Effective C++》中的...
软考信息系统管理师考试摘记。 项 目 管 理 知 识 体 系(九大管理) INPUT TOOL OUTPUT 4.1 制定项目章程 1、合同(如果适用) 1、项目选择方法 1、项目章程 2、项目工作说明书 2、项目管理方法系 3、事业环境...
《胡希恕伤寒论坛讲座》摘记.doc
### Hibrenate 学习摘记 #### Hibernate 概述与基本配置 Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了 Java 应用程序与数据库之间的交互过程。通过将对象模型与数据库模型进行映射,开发人员可以更...
自主研修摘记为我们提供了一系列策略,旨在实现这一目标,并且这些策略在教学实践中被证明是行之有效的。 首先,创设情境,激发兴趣是教师与学生接触的第一个环节,也是极为重要的一步。通过结合教材内容和学生心理...
5种小型设备上深度学习推理的高效算法.md 移动电话等小型边缘设备上实现的嵌入式系统的深度学习应用的部署、训练和运用越发变得困难,因为运算速度和资源利用(存储、传输)受到硬件限制。 由此提出有效地进行推理...
《第5课网络摘记教学设计.doc》这一文档,正是针对这一需求,精心设计的一堂课程。这节课不仅仅是一次简单的信息技术教学,更是一次激发学生对航天科技兴趣,提高他们信息搜集、处理及科技学习能力的实践活动。 ...
构建高性能Web站点涉及多个关键领域,包括服务器...总的来说,构建高性能Web站点需要综合考虑服务器架构、缓存策略、网络协议和资源管理等多个方面,通过精细调整和优化,确保在高并发环境下仍能提供快速稳定的服务。
"胡希恕伤寒论坛讲座摘记" 本文摘记了胡希恕伤寒论坛的讲座要点,总共十八点,涵盖了中医基础理论、方剂学、诊断学等多方面的知识点。 一、温病不能发汗,不能吃泻药,更不能用火攻,只能用白虎汤。 本点讲述了...
- 多道批处理系统:通过作业调度算法,当一个程序因IO操作而使CPU空闲时,可以调用执行另一个程序。这种系统提高了资源利用率和系统吞吐量,但平均周转时间长,没有交互能力。 - 分时系统:为了解决多道批处理系统...
我今天要与大家分享的是我在高中政治教学中关于有效课堂教学的一些探索和心得。在农村高中环境下,面对学生素质、师资力量及教学设施的局限,如何实现有效的政治课堂成为了一个重要的课题。经过四年的教学实践,我...
在新时代教育改革的浪潮中,各地学校积极响应国家教育政策,探索适合本地实际的教改之路。2021-2022年,自贡市绿盛实验学校作为改革的先锋,不仅在本地深入实践课堂教学改革,还远赴山东,向当地的名校学习先进的...
### UNIX系统概述与核心知识点解析 #### 一、UNIX系统简介 ...通过上述内容,我们不仅了解了UNIX系统的基本概念和发展历程,还探讨了一些实用的技术细节,希望能够帮助读者更好地理解和使用UNIX系统。
PKCS#8 私钥信息语法格式是 RSA 实验室技术摘记的一部分,该标准于 1993 年 11 月 1 日发布。该标准描述了一种私钥信息的语法,私钥信息包含一个对应于某个公钥算法的私钥和一个属性集。本文还描述了一种加密密钥的...
在当今数字化浪潮的推动下,企业对于高效、用户导向和适应性强的B端产品需求日益增长。Facebook作为互联网界的巨头,在设计B端产品时所遵循的四项基本原则,不仅体现了对用户体验和效率的极致追求,也体现了对产品...
下面是一些 EndNote 容易处理的高级格式化特性: 在脚注位置的参考书目缩写,包括“Ibid” 在同一个文献编号下将多个参考书目编组 在一个文献下用数字标示文字摘记 允许匿名工作选项 缩进选项 作者名或标题首字母...
下面是调用一个模型(Module)的函数。这个函数的基本功能是指定一个模型(抽象化为类)的名称,然后它会在模型目录下面寻找这个类的脚本实例化以后返回。这样的做法有一点好处就是载入和实例化是自动的,你可以获得...