我很菜很疑惑,到底应该怎么办到限制下载速度。下载速度不是由服务器的上行速度,和ISP入口的下行速度决定的吗?那么我们如何插手呢?无论我们怎么做?路由器还是继续收一样多的包啊。。?因为服务器的上行速度和ISP的下行速度是不会变的啊。。路由器收一样多的包,那么该拥挤还是拥挤,空闲还是继续空闲啊。我记得有人说过,sleep了某个流量很大的进程可以起作用。但是就算sleep了,服务器发过来的包还是照样塞满路由器缓冲区,不是吗?那到底怎么实现?还是我理解错了?请大家指点指点

解决方案 »

  1.   

    就是sleep嘛,但你钻牛角尖了,路由器塞满了不关你的程序什么事的,路由器有自己的丢包处理机制,tcp也有相应的滑动窗口应付拥塞。
      

  2.   

    我们的网络情况是由路由器决定的啊,路由器缓冲区拥挤,我们也同样受影响啊?你说它有丢包机制,好,可是服务器向路由器发送包的数目总是那么多,那路由器凭什么判断什么时候丢包?我们的程序能够影响路由器让它丢包?
    让我们的程序sleep了,服务器不是照样继续发送请求的数据给我们吗?速度没变啊,至少从服务器到路由器这一段速度是不可能的啊。
      

  3.   

    路由器缓冲区拥挤,我们也同样受影响啊?
    答:是的。那路由器凭什么判断什么时候丢包?
    答:各路由器实现不同,单cisco的路由器就有好几种qos队列,详细请查看cisco文档或相关设备文档。我们的程序能够影响路由器让它丢包?
    答:你的程序接收慢,路由器队列满,自然就有影响。服务器不是照样继续发送请求的数据给我们吗?
    答:是的。速度没变啊,至少从服务器到路由器这一段速度是不可能的啊。
    答:理解错误,tcp本身就有拥塞避免机制,细节本人也描述不好,为免误导,请查看TCP/IP详解卷一。
      

  4.   

    详细点分析 
    outer 路由器缓冲区 inter----   网卡缓冲区-----程序
    当程序不断被sleep,网卡缓冲区的数据读取速度变慢,路由器inter缓冲区等待不到网卡缓冲区队列空闲的时候,就会开始丢弃关于到达这张网卡的包。
    你是这个意思吗?我这样理解对吗?
      

  5.   

    按你的topo,可以理解为是outer缓冲区满了丢弃。有些路由器实现是未满就开始丢弃