是否有可能采用更“积极”的 TCP 策略来有效地优先考虑网络上用户的流量?
似乎增加窗口大小,或减少数据包重新发送时间,或类似的措施可以允许单个用户更有效地利用网络(显然,以牺牲其他用户为代价)。
这是正确的/可能的吗?
答案1
网络数据包没有“用户”字段,因此您最多可以做的是识别来自这些数据包所在主机上的用户的数据包,并在该主机上对它们进行优先级排序。这不会改变网络其余部分如何处理这些数据包。
或者,如果您控制网络(或部分网络),则可以使用上述标识以其他方式标记数据包,然后在您控制的(部分)网络中优先处理这些标记的数据包。
看一下流量控制 ( tc
) 和数据包重写 ( iptables
)。
根据用户修改 TCP 行为(例如,将用户放入网络命名空间,并修改此命名空间中的 TCP 设置)可能不起作用:如果网络已经拥塞,数据包会被丢弃,缓冲区已满会导致延迟在任何地方,更积极地发送数据包只会让每个人的情况变得更糟。
当然,您可以自由地在本地网络中进行试验。
如果您想到的实际应用不是您自己的本地网络中的服务质量,而是类似“我与其他一些人合租一套公寓,而且我非常自私,想要观看 Youtube 视频而无需等待,而其他人等待也没关系”:这根本行不通。您没有为其他人提供有用的内容,您可以优先考虑这些内容,您正在下载内容,并且瓶颈位于 ISP 和您的公寓之间的 DSL(或其他)线路的 ISP 端。 ISP 控制这一端并决定如何确定数据包的优先级,因此您所做的任何操作都不会改变这一点。
答案2
TCP 参数(例如“窗口大小”和“数据包重发时间”)通常由 TCP 实现代码自动调整。总的来说,这是相当有效的。然而,在某些特殊情况下,例如网络带宽过载或巨大的延迟或频繁波动的网络负载,一个用户手动调整这些参数可以比其他用户获得一些好处。