TCP兼容性:为什么TCP与数据包广播和多播操作不兼容?

时间:2011-01-28 00:59:27

标签: networking tcp udp

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

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

4 个答案:

答案 0 :(得分:9)

'兼容'是一个非常糟糕的单词选择。 “支持”是真正被描述的内容。 TCP是一种点对点协议,按设计。期。 TCP多播是一个矛盾。

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

编辑2:令人难以置信的是,自从这个问题发布以来,有人已经从维基百科UDP页面中删除了所有提及的多播。我修好了它。试。

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

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

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

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

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

使用Windows机器,您可以使用PGM协议和流支持,它几乎像广播TCP一样运行。它由Microsoft的消息传递系统MSMQ使用。

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