UDP无流量控制和拥塞控制,所以,咱们主要讨论的是TCP的拥塞控制和流量控制,并要注意二者的区别。缓存
太多发送主机发送了太多数据或者速度过快,以致于网络没法处理网络
表现:学习
- 分组丢失(路由器缓存溢出)blog
- 分组延迟过大,甚至致使路由器不可用(在路由器缓存排队)资源
Q:rdt(可靠数据传输)已经解决了分组丢失的问题,为何要学习拥塞控制?路由
A:这是两个不一样的问题,rdt解决的是端到端,针对个体利益的角度,使用确认、重传机制;拥塞控制是社会机制,从群体利益角度,使得每个主机作出必定的牺牲,采用某种机制来控制整个网络的负载。it
Q:流量控制和拥塞控制有什么不一样?io
A:流量控制是发送方不要发送的太快,致使接收方处理不了;而拥塞控制是不要让整个网络处理不了路由器
1. 两个senders,两个receivers,一个路由器(无限缓存),没用重传方法
致使:
C为带宽bandwidth,in和out是速率
- (右图)拥塞时分组延迟delay太大
- (左图)达到最大throughput吞吐量,<C/2时,线性增加,直至达到maxC
2. 一跳/一个路由器(有限的缓存),sender能够重传分组
致使:
备注:
- 状况b,不能提早获知路由器的缓存信息,只能经过肯定丢失才重传
- 状况b相对于a,意味着有效的吞吐量下降了,因为拥塞,因为丢失,须要重传,(网络资源是有限的)形成了网络资源的浪费
- 状况c,不只肯定分组丢失以后才重传,并且会等待必定时间后重传,这时候将有更多的重传,因此吞吐量更低了
3. 四个sender,多跳/四个路由器(有限缓存),超时/重传
致使:
红线和绿线竞争,都要使用R2,因为拥塞,吞吐量也变低了,会形成不断的丢失
Q:假如红线已经在前一个路由器正常转发,可是到达R2后因为竞争拥塞,则会产生什么代价?
A:相对于一跳,多跳拥塞会产生另外一个代价——任何用于该分组的”上游“传输能力全被浪费
前半段:in速率和out速率线性增长
后半段:当in速率增大到必定程度的时候,out速率基本等于0——>你们都在往里面发数据,可是,几乎没用数据被正确的接收,意味着网络瘫痪了/网络全部的资源都被浪费掉了
在传输层或者网络层进行控制/管制数据、网络的负载(成因)
方法(2种)
- 端到端的拥塞控制(在传输层,TCP就是使用这种方法)
网络层或者网络层的设备,好比路由器路由器并不须要显式的支持,而是端系统经过管制/控制本身的发送速率,经过观察loss、delay等网络行为判断是否发生拥塞
- 网络辅助的拥塞控制(在网络层,典型的ATM就是使用这种方式)
路由器向发送方显式的反馈网络拥塞信息
简单的拥塞指示(1bit):SNA、DECbit、TCP/IP ECN、ATM
指示发送方应该使用何种速率