【问题标题】:TCP compatibility: Why is TCP not compatible with packet broadcast and multicasting actions?TCP 兼容性:为什么 TCP 与数据包广播和多播操作不兼容?
【发布时间】:2011-01-28 00:59:27
【问题描述】:

** http://en.wikipedia.org/wiki/User_Datagram_Protocol: **

“与 TCP 不同,UDP 兼容数据包广播(发送给本地网络上的所有人)和多播(发送给所有订阅者)。”

【问题讨论】:

    标签: networking tcp udp


    【解决方案1】:

    “兼容”在这里是一个非常糟糕的词选择。 “支持”是真正被描述的内容。按照设计,TCP 是一种点对点协议。时期。 TCP 多播在术语上是矛盾的。

    编辑:我更新了维基百科页面以反映此评论。

    编辑 2:令人难以置信的是,自发布此问题以来,有人已从 Wikipedia UDP 页面中删除了所有提及多播的内容。我修好了它。再次。

    【讨论】:

      【解决方案2】:

      TCP 在发送方和接收方之间建立连接。发送方发送一个数据包,然后等待接收方的确认,然后再发送另一个1。如果数据包在没有得到确认的情况下时间过长,它会重新发送数据包,直到收到确认(这就是它获得可靠性的方式)。

      在多播和广播的情况下,发送者甚至不知道可能有多少个接收者,更不用说他们是谁了。如果有人没有正确确认数据包,这使得它几乎不可能等待确认并重新发送数据包。

      1从技术上讲,有一个“窗口”允许它在收到确认之前发送,比如说,五个数据包,但你明白了——它仍然需要知道谁在接收,并得到确认已发送的数据包,如果未确认则重新发送数据包。

      【讨论】:

        【解决方案3】:

        TCP 结合了流量控制和基于数据接收者确认的可靠性。广播或多播发送器不知道有哪些或有多少其他节点正在侦听;即使通过某种类似于 TCP 的点对点同步的多点同步算法来实现,流量控制也是一个问题,因为接收方在最坏的条件下会限制整个流量的速度。

        【讨论】:

          【解决方案4】:

          简短的回答是因为广播 TCP 很复杂。

          长答案是 TCP 协议的重要部分,即移植到广播语义时的可靠性和拥塞控制很容易被滥用,不能很好地扩展,而多播只是 IPv4 标准的简单和可选组件,并且在大多数核心路由器上要么未实现要么禁用。

          已经发表了许多研究新协议以提高可扩展性的论文; IPv6 将组播提升为核心协议要求,并且与特定源组播一起显着提高了核心路由支持和安全性;离开仍然很严重的滥用领域。

          滥用涵盖协议的许多方面,从中间人攻击到网络基础设施过载,导致上游到源的流量网络风暴。

          在今天的 Windows 机器上,您可以使用具有流支持的 PGM 协议,该协议的运行方式几乎与广播 TCP 一样。它被 Microsoft 的消息传递系统 MSMQ 使用。

          http://msdn.microsoft.com/en-us/library/ms740125(v=vs.85).aspx

          【讨论】:

            猜你喜欢
            • 2016-10-23
            • 1970-01-01
            • 1970-01-01
            • 2012-07-18
            • 2020-06-15
            • 1970-01-01
            • 2012-02-27
            • 2020-02-15
            • 1970-01-01
            相关资源
            最近更新 更多