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

3

**用户数据报协议(UDP):**

与TCP不同的是,UDP支持分组广播(发送到本地网络上的所有设备)和多播(发送到所有订阅者)。

4个回答

9

'兼容性'在这里是一个非常不恰当的选择。 '支持'才是真正被描述的内容。TCP协议是一种点对点协议,根据设计原理。 TCP多播是自相矛盾的。

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

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


4
TCP建立了发送方和接收方之间的连接。发送方发送一个数据包,然后等待接收方确认后再发送另一个1。如果一个数据包长时间没有被确认,发送方会重发该数据包直到收到确认(这就是TCP保证可靠性的方式)。
在多播和广播的情况下,发送方甚至不知道可能有多少个接收者,更不用说它们是谁了。这使得它几乎不可能等待确认并重新发送数据包,如果某人未正确确认数据包,则会出现问题。 1技术上讲,有一个“窗口”允许它在接收确认前发送,比如说五个数据包,但你明白了——它仍然需要知道谁在接收,并获得它发送的数据包的确认,并在未被确认时重新发送数据包。

2
TCP 结合了流量控制和可靠性,基于数据接收方的确认来保证。广播或多播发射器不知道哪些节点在听取,也不知道有多少个,即使通过某种类似于 TCP 点对点同步的多点同步算法获得这些信息,流量控制也将成为一个问题,因为在最差的情况下,接收器会限制整个流的速度。

为什么接收方会限制整个流的速度?你说发送方发送多点接收器,但为什么接收方感受到最差的情况并限制整个流的速度?请详细说明。 - Alok Maity
有一个约定字节数的窗口在传输中,发送方不能在窗口结束之前继续发送,直到先前的字节被确认。"确认即接收"。如果发送方不受等待ACK的限制,则连接不是TCP。 - Jeffrey Hantin

2
简短的回答是因为广播TCP很复杂。
长的回答是,TCP协议的重要部分,即可靠性和拥塞控制,当移植到广播语义时很容易受到滥用,不易扩展,并且多播只是IPv4标准的可选组件,在大多数核心路由器上未实现或已禁用。
许多论文已经发表,调查新协议以提高可扩展性;IPv6将多播提升为核心协议要求,并与源特定多播一起显着改善了核心路由支持和安全性;但仍存在滥用的问题。
滥用涵盖协议的许多方面,从中间人攻击到过载网络基础设施,导致上游源的流量风暴。
今天,您可以使用带有流支持的PGM协议在Windows机器上运行,它几乎与广播TCP相同。它被微软的消息系统MSMQ使用。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接