流控制机制,流控制机制原理是什么?
可以将网络服务分为最优的无连接服务或可靠的面向连接的服务。在Internet协议集中,IP属于最优服务,而TCP属于可靠的服务。IP仅提供简单的数据分组转发,而TCP执行流控制、确认以及重新发送丢失或损坏的数据分组。它将服务“分散”在网络上并将发送的可靠性责任交给终端系统。TCP是终端对终端的传输协议,即它运行在终端系统,而不是在网络中。IP是网络协议。TCP提供的服务包括以下内容:
流控制机制 用以控制数据分组流,这样发送者不会发送超过接收者所能处理的数据分组。
可靠的发送机制 为接收系统提供了确认它已收到数据分组的方法,同时也提供了使发送者知道它必须重新发送丢失或损坏的数据分组的方法。即TCP协议每发送一个数据包将会收到一个确认信息。这种发送/应答模式是提供可靠的协议的唯一方法:你必须让对方知道你否收到了数据。当然,这也会造成一些性能损失,而人们需要改善系统效率不高的状况。所以引入了“捎带确认(piggybacking ACKs)”的方法。TCP协议之所以是全双工的就是因为这个“捎带确认”信息,因为它允许双方同时发送数据。这是通过在当前的数据包中携带以前收到的数据的确认信息方式实现的。从提高网络利用率的角度看,这比单纯发送一个通知对方“信息已收到”的数据包要好得多。最后,还有一个批量确认的概念:也即一次确认一个以上的数据包,表示“我收到了包括这个数据包在内的全部数据包”。
拥塞控制机制 允许网络系统检测网络拥塞(网络上的通信量超过了网络或网络设备的处理能力)并迫使这些传输返回以减轻拥塞。拥塞发生在繁忙的网络上。发生拥塞时,终端系统和网络不得不协同工作以最大程度地减轻拥塞。作为比较,流控制用在终端系统之间。接收者使用流控制向发送者表明它已超负荷。然后发送者迫使它的传输停止。
Internet成功的一个关键因素就是TCP协议的避免拥塞机制。当前TCP协议在Internet中仍然是占主导地位的传输协议,但它不是适用于任何地方,有越来越多的应用由于某种原因而没有选择使用TCP协议。通信不仅包括多点传送通信,而且包括单点传送通信,诸如不需要可靠性的流化的多媒体,以及包括象DNS(Domain Name Server域名服务器)或路由信息的通信,它们带有被认为对网络运行至关重要的短信息。许多通信并不使用任何形式的预留带宽或端到端拥塞控制。为了保持最优传输量,端到端的拥塞控制的继续使用对保持Internet的稳定至关重要。
流控制是必要的,因为发送者和接收者通常在容量和处理能力上并不般配。接收者可能无法用与发送者相同的速度处理数据分组。如果缓存区已满,会丢弃数据分组。流控制机制的目标在于阻止丢弃数据分组从而避免重新传送。
流控制用于在数据链路层中控制直连设备间的流。作为比较,TCP控制跨多步跳路由网络设备间的流。数据链路层协议包括SDLC(同步数据链路控制)、HDLC(高层数据链路控制)、LAP-B(链路访问过程平衡)、SLIP (串行线路Internet协议)以及PPP(点对点协议)。传输层协议包括TCP(传输控制协议)和Novell SPX (顺序数据分组交换)。
当讨论数据链路层协议时,传输单元为帧。在传输层中,TCP的传输单元为段。段被封装在IP数据报中,而IP数据报又封装在数据链路层的帧中。
流控制的类型
以下将介绍几种流控制方案。每种机制都有助于发送者和接收者同步它们之间的传输和接收速率,从而防止丢弃数据分组。数据分组被丢弃后,必须重新发送,这会浪费网络带宽。
物理层流控制
物理层连接包含用于在计算机上连接辅助设备或连接两个通信设备(比如从计算机的串行端口到调制解调器或终端连接)的串行接口(如V.24 (RS-232))。流控制可用于发出接收者已准备好传输的信号,在接收者超负荷时,可发出必须停止传输的信号。
有两种类型的物理层流控制:
硬件(波段外)流控制 在这种方案中,使用物理接口上的特殊引线来发出可以开始或可以结束传输的信号。当发送站准备好发送数据时,它会激活RTS(Request To Send)。当接收站准备好接收数据时,它会激活CTS ( Clear To Send )引线。如果接收者变成超负荷,它将使CTS处于非激活状态。
软件(波段内)流控制 在这种方案中,使用被称做XON和XOFF的特殊控制字符来控制流。 当接收者准备好接受数据时,它发送XON字符。当它超负荷时,它发送XOFF字符。当它准备好接收更多数据时,它会发送另一个XON字符。
“停止并等待”流控制
在物理层上最简单的流控制是“停止并等待”机制。首先,发送者向目的地发送数据分组。一旦收到,目的地即向发送者返回确认数据分组以表明它已准备好接收另外的数据分组。源在发送另外的数据分组之前会始终等待确认数据分组。该技术自然避免了目的地的溢出。如果目的地需要时间来处理数据分组,它会暂缓发送确认。
在仅用少量数据分组就可发送信息时该技术显得非常有用。但是,在需要大量数据分组的长时间传输时其效率将十分低下。为每一个数据分组发送确认也是过重的负担。另外,部分网络使用小型数据分组,这意味着会有更多的数据分组,因此将有更多确认。
源抑制消息
该方案中,发送者开始向接收者发送数据分组并持续发送直到它收到来自接收者的源抑制消息。该源抑制消息可通知发送者降低其数据传输速率。 源抑制发生在至少有一个数据分组已遭丢弃之时。当接收者的缓冲区已满时,数据分组会被丢弃。此后,接收者将向发送者发送源抑制消息,但在发送者减慢速度之前,可能会丢弃其余的数据分组。对每一个丢弃的消息,都会发送一个源抑制消息。发送者开始减慢速度并持续减速直到接收者不再发送源抑制消息。此后,发送者开始加大传输速率, 但如果又收到源抑制消息,则速率又会慢下来。该方案的惟一缺点在于,在发送者开始减慢消息发送速率之前,数据分组会被丢弃。
“滑动窗口”流控制
“滑动窗口”流控制旨在以更加有效的方式来提供可靠的服务。它对确认仅使用较小的网络带宽。滑动窗口技术主要是允许发送者一次发送多个数据分组,并尽量有效地使用传输信道。同时,它的流控制技术允许接收者向发送者通知其缓冲区的状态。在以下讨论中,“数据分组”一词指数据块,可以是帧或TCP段。
您可以将滑动窗口技术理解为发送者和接收者之间的对话。发送者在开始会说“我将向你发送x个数据分组,然后你要给我发送确认”。如果接收者开始溢出,它将说“我的缓冲区已溢出,请按比例减小正在发送的数据分组数”。该过程是动态的,并可自动调整一次发送的数据分组数。一个自适应的滑动窗口会设法确定最佳的窗口大小,这样它就可以在不使接收者溢出的情况下发送尽可能多的数据分组。如果窗口太大,则将在接收者处发生数据分组丢弃,而发送者会按比例减小该窗口的大小。
TCP的窗口机制为自适应流控制。它会逐渐增大数据速率直至收到减速信号。该信号表明有数据分组遭丢弃。当接收者丢弃数据分组(或因为网络拥塞未收到数据分组)时,它不会确认该数据分组。发送者通过这种信号来减慢或者停止传输。该方法的缺点在于,只有发生数据分组丢弃后,它才有效,因此它是不可预测的。流可能随着网络上通信方式的改变而迅速增大和减小。如果终端系统有足够大的缓冲区,则发送者可能将流增加到使网络达到饱和的程度。在快速网络上,发送者可能在它收到减慢消息之前已完成了整个传输。
网络流控
前面描述了在终端系统中执行的流控制。因为仅希望网络提供基本的数据分组转发,因此开始并未从网络执行这些流控制。这提高了性能并保持了网络的简洁。最近以来,网络设计者开始对网络中的通信和流控制变得感兴趣。其中一项技术是,先通过“速率评估程序”评估某个通信流的传输速率,然后按照数据分组的速率与CTR(确认的目标速率)和PTR(最大的目标速率)的对比结果来标记数据分组。在标记时将使用某种颜色,该颜色指定了与DiffServ(区分服务)兼容的丢弃优先级。小于或等于CTR的数据分组被标为“绿色”,在CTR和PTR之间的分组被标为“黄色”,而在PTR之上的数据分组则被标记为“红色”。