单播,任播,广播和多播流量之间有什么区别?


111

我从来没有在需要复杂路由的环境中工作的特权,或者如果确实需要,则在我的上游进行处理。我一直使用非常简单的静态路由配置,并且不需要进行任何多路径路由-因此,我对此主题普遍感到困惑。我想更好地了解多播和任意播。

  • 单播,任播,广播和多播流量之间有什么区别?
  • 它们通常在什么情况下使用以及为什么使用(例如,哪些应用程序使用哪种方法)?
  • 对于给定的网段或广播域,您如何计算多少广播流量太多?
  • 允许广播和多播流量对安全有何影响?

Answers:


171

简单的说:

------------------------------------------------------------
| TYPE      | ASSOCIATIONS     | SCOPE           | EXAMPLE |
------------------------------------------------------------
| Unicast   | 1 to 1           | Whole network   | HTTP    | 
------------------------------------------------------------
| Broadcast | 1 to Many        | Subnet          | ARP     |
------------------------------------------------------------
| Multicast | One/Many to Many | Defined horizon | SLP     |
------------------------------------------------------------
| Anycast   | Many to Few      | Whole network   | 6to4    |
------------------------------------------------------------

当两个网络节点需要互相通信时,使用单播。这很简单,所以我不会花很多时间在上面。从定义上讲,TCP是单播协议,除非涉及到Anycast(在下文中有更多介绍)。

当您需要两个以上的节点查看流量时,您可以选择。

如果所有节点都在同一子网上,则广播成为可行的解决方案。子网上的所有节点将看到所有流量。没有维护类似TCP的连接状态。广播是以太网协议中的第2层功能,也是IPv4中的第3层功能。

多播就像可以跨子网的广播一样,但是与广播不同的是,广播不能覆盖所有节点。节点必须订阅多播组才能接收信息。组播协议通常是UDP协议,因为根据定义,不能保持连接状态。将数据传输到多播组的节点不知道正在接收什么节点。默认情况下,Internet路由器不传递多播流量。但是,内部使用是完全允许的。因此,位于上图中的“定义的范围”。组播是IPv4和IPv6的第3层功能。

要使用任播,您需要在Internet的多个位置上发布同一网络,并依靠最短路径计算将客户端引导到您的多个位置。就网络节点本身而言,它们正在使用单播连接来与您的任播节点通信。有关Anycast的更多信息,请尝试:什么是“ anycast”,它有什么帮助?。Anycast还是第3层功能,但是路由合并发生方式的功能。


例子

在实际Internet中如何使用非单播方法的一些示例。

广播
ARP是一种广播协议,TCP / IP堆栈使用它来确定如何将流量发送到网络上的其他节点。如果目标在同一子网中,则使用ARP找出到达指定IP地址的MAC地址。这是到保留的FF:FF:FF:FF:FF:FF:FF MAC地址的2级(以太网)广播。

同样,微软的机器浏览协议是著名的基于广播的协议。创建了诸如WINS之类的变通办法以允许跨子网浏览。这涉及第3级(IP)广播,这是一个IP数据包,目标地址列为子网的广播地址(在192.168.101.0/24中,广播地址为192.168.101.255)。

NTP协议允许使用广播方法来通告时间源。

组播
在公司网络内部,组播可以将实时视频传递到多个节点,而不必在传递视频源的服务器部分占用大量带宽。这样,您可以使视频服务器仅在100Mb连接上提供720p流,而仍将其提供给3000个客户端。

当Novell从IPX转移到IP时,他们不得不选择一种服务广告协议来替换IPX中的SAP协议。在IPX中,服务公告协议在每次宣布有可用服务时都会在全网络范围内进行公告。由于TCP / IP缺少这样的全局通告协议,因此Novell选择使用基于多播的协议代替:服务定位协议。新服务器在SLP多播组上宣布其服务。寻找特定服务类型的客户端向多播组宣布其需求,并侦听单播回复。

默认情况下,HP打印机宣布它们在多播组中的存在。使用正确的工具,可以很容易地了解网络上有哪些打印机。

NTP协议允许使用组播方法(IP 224.0.1.1)将时间源通告到仅一个子网之外的区域。

Anycast
Anycast有点特殊,因为单播层位于其顶部。Anycast宣布在网络的不同部分发布相同的网络,以减少到达该网络所需的网络跳数。

6to4 IPv6过渡协议使用Anycast。6to4网关宣布它们在特定IP 192.88.99.1上的存在。希望使用6to4网关的客户端将流量发送到192.88.99.1,并信任网络将连接请求传递到6to4路由器。

可以很好地广播特别流行的NTP主机的NTP服务,但是我没有证明。协议中没有阻止它的内容。

其他服务使用Anycast改善最终用户的数据本地性。Google在某些地方使用Anycast进行搜索,而在其他地方则使用geo-IP。出于类似原因,根DNS服务器使用Anycast。ServerFault本身可能就在那儿,它们确实在纽约和俄勒冈州都有数据中心,但是还没有到那儿。


网络问题

过多的广播流量可能会抢夺该带宽子网中的所有节点。如今,对于全双工GigE端口,这不再是一个问题,但是在半双工10Mb的日子里,广播风暴可能会使网络真正真正停顿下来。那些在所有节点上都有一个大冲突域的半双工网络尤其容易受到广播风暴的影响,这就是为什么网络书籍(尤其是较旧的网络书籍)说要关注广播流量的原因。广播风暴使交换/全双工网络更难以停止,但它仍然可能发生。广播是IP网络正常运行所必需的。

多播具有相同的滥用可能性。如果多播组上的一个节点开始向该组发送大量流量,则所有订阅的节点将看到所有该流量。与广播一样,过多的Mcast流量会增加出现问题的此类连接上发生冲突的可能性。

组播是IPv4 的可选功能,但IPv6 必需。IPv4广播已被IPv6中的多播替换(另请参见:为什么IPv6无法发送广播?)。它在IPv4网络上经常关闭。并非巧合的是,启用多播是网络工程师在必须执行IPv6之前不愿转向IPv6的众多原因之一。

计算多少流量就是太多流量取决于几件事

  • 半双工与全双工:半双工网络对bcast / mcast流量的容忍度要低得多。
  • 网络端口的速度:网络速度越快,问题就越少。在10Mb以太网中,端口上5-5%的流量可能是bcast流量(如果不是更多的话),但是在GigE上,小于1%(可能更少)的可能性更大。
  • 网络上的节点数:节点数越多,不可避免的广播流量(ARP)越多。如果您正在使用特定的广播协议,Windows浏览或其他问题(例如群集心跳),则开始出现问题的位置将发生变化。
  • 网络技术:有线以太网的速度足够快,只要您拥有驱动它的现代设备,bcast / mcast就不会给您造成问题。另一方面,无线可能会遭受过多的广播流量,因为它是所有节点之间的共享介质,因此在单个冲突域中。

最后,Bcast和Mcast流量抢占了带宽端口。当您开始担心时,高度取决于您的个人网络和可变性能的承受能力。通常,网络节点数的扩展速度没有网络速度快,因此总体广播流量百分比随着时间的推移一直在下降。

一些网络出于特定原因而禁止多播,而另一些则从未花费时间来设置它。有一些多播协议可以向任何听取正确信息的人透露有趣的信息(SLP就是这样的信息)。个人而言,我不介意次要组播流量,因为我进行网络分析时最大的烦恼就是污染了网络捕获。为此,有过滤器。


4
+1。广播可以而且确实在第2层和第3层都发生。ARP请求是第2层广播,而NetBIOS名称查询是第3层广播。
joeqwerty 2011年

1
绝对完美的答案。如果可以的话,我会加10。我特别喜欢您对SLP的讨论,因为我已经对其进行了mcast相关的问题。

11

以下是一些基本信息:

单播:单播流量是指用于单个主机的流量。所有其他主机将忽略不适合自己的单播流量。在交换环境中,单播流量通常不会被流量所针对的主机“听到”。在使用集线器(抖动)的环境中,所有主机都将“听到”用于其他所有主机的单播流量,但是它们将忽略所有不适合自己的流量。

广播:广播流量是为了被特定网段上的所有主机“听到”而发送的流量。广播流量的示例可能是ARP请求,它是在物理层上广播(MAC地址FF-FF-FF-FF-FF-FF)或NetBIOS名称查询,它是在网络层上广播(无论发生什么情况)是该特定网络的广播地址,例如网络64.28.42.0/26的64.28.42.63)。

组播:组播流量是指被网段上的特定主机组“听到”的流量。可以将某些多播流量视为广播流量,例如到多播地址224.0.0.1的流量,这是针对同一网段上所有主机的多播流量。多播流量的另一个示例是发送到多播地址224.0.0.9的流量,RIP路由器使用该流量将路由信息发送到同一网段上的其他RIP路由器。

我将Anycast留给其他人,因为我对此并不了解。


我真的很高兴它也得到了答复。我也不知道播客是什么。
KCotreau

6

Anycast不是IPv4中广泛接受的通信类型,但它存在于IPv6中。

IPv4中的三种通信类型是1)单播,2)组播3)广播。

1)IPv4单播一对一通信。一个网络设备与另一个网络设备进行通信。用于单播的第3层地址是IPv4 Class A,Class B,Class C地址。第2层地址是单播MAC地址。

示例:浏览网站,使用FTP下载文件,使用SSH(安全外壳)连接到另一台设备等。

2)IPv4组播一对多通信。网络设备发送IPv4数据包,然后将其传递给对该流量感兴趣的设备。用于IPv4组播的第3层地址是D类IPv4地址(从224到239开始)。用于IPv4组播的第2层地址以“ 01:00:5e”开头。

示例:IPTV,OSPF Hello消息,EIGRP Hello消息,RIPv2路由更新。

3)IPv4广播一对一通信。网络设备发送IPv4数据包,它将被传送到该LAN网段中的所有设备。广播流量的问题是,广播会干扰LAN中的所有设备并造成带宽浪费。

示例:DHCPv4发现消息

在IPv6中,我们有单播,组播和任意播。在IPv4和IPv6中,单播和组播的概念相同,只是用于广播和组播的IPv6第3层地址和用于组播的第2层地址有所变化。用于IPv6组播流量的第2层地址从“ 33:33:”开始(在Ipv4中为“ 01:00:5e”)。

IPv6 Anycast IPv6 Anycast通信类型用于从一组接口中标识一个接口,这些接口提供相同的服务,但在路由距离上靠近客户端(我们可以比较类似于地理距离的路由距离)。仅在路由协议的帮助下才可以进行任播。

检查以下链接,以获取有关IPv6 Anycast的更清晰说明。

http://www.omnisecu.com/tcpip/ipv6/unicast-multicast-anycast-types-of-network-communication-in-ipv6.php

例如,我的家位于印度,我想将FQDN“ www.serverfault.com ” 解析为IP地址。考虑一下,我有三台DNS服务器,其中一台位于美国,另一台位于加拿大,另一台在印度,都提供相同的服务。更好的选择是来自印度的DNS服务器,因为它位于我家附近。如果在我家附近使用该服务,我将得到更快的答复,并减少网络流量。Anycast可以找到我家附近的服务器,并从该服务器获取服务。


0

只是对任播的澄清。

绝对不应将Anycast与其他* cast分组。但是,它不是在单播之上,因为它单播。该术语仅用于标识同一IP可能存在于多个位置。在这方面,这是对“ cast”的明显误用。有点像“ WiFi”是基于术语“ Hi-Fi”的上乘术语,即使两者彼此无关。

当路由器从多个来源听到相同的单播前缀时,它不知道(也不关心)它们是否代表不同的目的地(任何广播),或者是否是通过不同路径可到达的相同目的地。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.