我试图更好地理解networking中立性辩论。 有人指责ISP发送RST数据包到terminal主机,以阻止BitTorrentstream量。 这到底是什么意思?
我对HTTP和TCP / IP有基本的了解(我是程序员),但是服务器pipe理是我绝对不是专家。谢谢。
TCP数据包中有几个标志(SYN,ACK,PSH,RST和FIN)。 这些通常用作正常TCP连接的build立和拆除的一部分。 当连接出现问题时,使用其中一个标志(RST),并且一端需要exception中止连接。 当另一端收到RST连接时,立即断开连接。 当您收到“由对等方重置连接”错误消息时,会发生这种情况。
这意味着如果可以将RST数据包插入到TCPstream中,则可以closures任何TCP连接。 要做到这一点,你需要能够拦截一个有效的数据包,或猜测各个计数器用于跟踪各个TCP连接。
TCP协议由操作系统networking堆栈中实现的有限状态机控制。 作为程序员,FSM的概念应该至less有点熟悉。
伪造一个TCP RST数据包(也就是说,伪造的源IP地址显示为来自远程服务器的IP数据报,包含一个带有RST位设置的TCP段和适当的SEQ / ACK号)是任何沿途的任何人从客户端到服务器可以做到导致TCP连接被接收操作系统closures。 客户端收到数据包,有限状态机“重置”连接,closures连接并阻止进一步的数据传输。
伪造的数据包与来自该远程主机的“真实”TCP RST数据包无法区分。 如果不使用提供身份validation的协议(IPSEC AH或类似),则无法阻止任何中间方创build伪造的数据包。
一些ISP(据说?)伪造这种TCP RST数据包,以防止BitTorrent等应用程序的用户“过度”使用“pipe道”到互联网。 他们使用各种硬件/软件来执行“深度数据包检测”(参见http://en.wikipedia.org/wiki/Sandvine关于这种“解决scheme”的一个供应商的示例)来检测这种stream量。
围绕“networking中立”的辩论有很多政治问题,其中大部分远远超出了讨论服务器故障的时代。 我认为,这只是多年来一直在肆虐的网龙战斗的另一个performance。