我从来没有在需要复杂路由的环境中工作的特权,或者如果需要的话,它在我的上游处理。 我一直使用非常简单的静态路由configuration,从不需要做任何多path路由 – 因此我对这个问题一般的困惑。 我想更好地理解多播和任播。
简单的说:
------------------------------------------------------------ | 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 | ------------------------------------------------------------
当两个networking节点需要相互通话时使用单播。 这是非常简单的,所以我不会花太多的时间。 根据定义,TCP是一个单播协议,除了涉及到Anycast的时候(下面会详细介绍)。
当您需要有两个以上的节点查看stream量时,您可以select。
如果所有的节点都在同一个子网上,则广播成为一个可行的解决scheme。 子网中的所有节点都将看到所有stream量。 没有TCP连接状态保持。 广播是以太网协议中的第2层function,也是IPv4中的第3层function。
组播就像一个可以跨越子网的广播,但不像广播不会触及所有节点。 节点必须订阅多播组才能接收信息。 多播协议通常是UDP协议,因为根据定义,不能保持连接状态。 将数据传输到多播组的节点不知道正在接收什么节点。 默认情况下,Internet路由器不传递多播通信。 但对于内部使用来说,这完全是允许的。 因此,上图中的“定义视界”。 组播是IPv4和IPv6的第3层function。
要使用任意广播,您可以在互联网的多个位置宣传相同的networking,并依靠最短path计算将客户端导入到多个位置。 就networking节点本身而言,他们正在使用单播连接与您的任何节点进行通信。 有关Anycast的更多信息,请尝试: 什么是“anycast”,它有什么用处? 。 Anycast也是第3层function,但是路由合并发生的function。
一些在真实互联网中如何使用非单播方法的例子。
广播
ARP是一种广播协议,由TCP / IP堆栈使用来确定如何将stream量发送到networking上的其他节点。 如果目的地址在同一个子网上,则使用ARP来计算到达所述IP地址的MAC地址。 这是一个二级(以太网)广播,对保留的FF:FF:FF:FF:FF:FF MAC地址。
另外,微软的机器浏览协议是以广播为基础的。 如WINS的解决方法是为了允许跨子网浏览而创build的。 这包括3级(IP)广播,这是一个IP数据包,目的地地址列为子网广播地址(在192.168.101.0/24中,广播地址为192.168.101.255)。
NTP协议允许广播方法通告时间源。
组播
在公司networking中,多播可以将实况video传送到多个节点,而无需在传送video的服务器部分提供大量的带宽。 这样你就可以有一个video服务器只提供一个100Mb连接720pstream,但仍然服务于3000客户端的饲料。
当Novell从IPX迁移到IP时,他们不得不select服务广告协议来取代IPX中的SAP协议。 在IPX中,服务广告协议在每次宣布服务可用时都进行了networking广播通告。 由于TCP / IP缺乏这样的全球通告协议,因此Novellselect使用基于多播的协议:服务定位协议。 新的服务器在SLP多播组上宣布他们的服务。 寻找特定types的服务的客户宣布他们需要多播组,并监听单播应答。
惠普打印机在默认情况下宣布他们在多播组的存在。 使用正确的工具,可以轻松了解networking上可用的打印机。
NTP协议还允许多播方法(IP 224.0.1.1)通告时间源到超出一个子网的区域。
任播
任播是有点特殊的,因为单播层在它之上。 Anycast在networking的不同部分宣布同一networking,以减less到达该networking所需的networking跳数。
6to4 IPv6转换协议使用Anycast。 6to4网关宣布他们的存在在一个特定的IP,192.88.99.1。 希望使用6to4网关的客户端将stream量发送到192.88.99.1,并相信networking将连接请求传送到6to4路由器。
特别受欢迎的NTP主机的NTP服务可能很好,但我没有证据。 协议中没有任何东西来阻止它。
其他服务使用Anycast来改善最终用户的数据位置。 Google在某些地方使用search页面进行Anycast(而其他地区则使用地理IP)。 根DNS服务器出于类似的原因使用Anycast。 ServerFault本身可能会去那里,他们在纽约和俄勒冈州有数据中心,但还没有去那里。
过多的广播stream量可以抢占该带宽子网中的所有节点。 目前,全双工千兆以太网端口没有那么值得关注,但是在10Mb的半双工时间内,广播风暴可能会使networking以极快的速度停下来。 那些在所有节点上具有一个大冲突域的半双工networking特别容易受到广播风暴的影响,这就是为什么networking书籍,特别是老的networking,说要关注广播stream量的原因。 交换/全双工networking在广播风暴中难以停止,但仍然可能发生。 IPnetworking正常运行需要广播。
多播具有相同的滥用可能性。 如果组播组中的一个节点开始向该组发送大量stream量,则所有订阅的节点都将看到所有stream量。 与广播一样,过多的Mcaststream量可能会增加碰撞问题的可能性。
多播是IPv4的一项可选function,但对于IPv6来说是必需的。 IPv4中的广播被IPv6中的组播所取代(另请参阅: 为什么IPv6不能发送广播? )。 它经常在IPv4networking上closures。 并非巧合的是,启用多播是networking工程师在不得不这样做之前转移到IPv6的许多原因之一。
计算多lessstream量是多lessstream量取决于几件事情
最后,Bcast和Mcast的stream量占用带宽端口。 当你开始担心是高度依赖于你的个人networking和容错性能。 一般来说,networking节点数量并没有像networking速度那么快,所以整体广播百分比与stream量的比例一直在下降。
有些networking出于特定的原因不允许多播,而其他networking从来没有花时间去设置它。 有一些多播协议可以显示有趣的信息(SLP就是这样)给任何听正确的事情的人。 就个人而言 ,我不介意小的多点传送stream量,因为我所看到的最大的烦恼是在进行networking分析时受到污染的networking捕获; 并为此有filter。
以下是一些基本信息:
单播:单播stream量是指单个主机的stream量。 所有其他主机将忽略不是为他们自己的单播stream量。 在交换式环境中,单播stream量一般不会被stream量所在主机以外的任何主机“听到”。 在使用集线器(不寒而栗)的环境中,所有主机都将“听到”意味着每个其他主机的单播stream量,但他们会忽略所有不是为自己devise的stream量。
广播:广播通信量是为了被特定网段上的所有主机“听到”而发送的通信量。 广播stream量的例子是一个ARP请求,它是物理层(MAC地址FF-FF-FF-FF-FF-FF)的一个广播,或者一个NetBIOS名字查询,它是networking层的广播(无论发生什么作为该特定networking的广播地址,例如networking64.28.42.0/26的64.28.42.63)。
多点传送:多点传送stream量是为了被网段上的特定的一组主机“听到”而发送的stream量。 一些多点传送stream量可以被认为是广播stream量,例如到多点传送地址224.0.0.1的stream量,多点传送stream量是指针对同一网段上的所有主机的多点传送stream量。 组播stream量的另一个例子是将stream量发送到组播地址224.0.0.9,这是RIP路由器用来发送路由信息给同一网段上的其他RIP路由器的路由信息。
我会离开任播给其他人,因为我真的不知道那么多。
Anycast不是IPv4中被广泛接受的通信types,而是存在于IPv6中。
IPv4中的三种通信types是1)单播,2)组播3)广播。
1)IPv4单播一对一的通信types。 networking设备与另一个networking设备进行通信。 用于单播的第3层地址是IPv4 A类,B类,C类地址。 第2层地址是单播MAC地址。
示例:浏览网站,使用FTP下载文件,使用SSH(Secure Shell)等连接到其他设备。
2)IPv4多播一对多的通信types。 networking设备发送IPv4数据包,并将其发送给对该stream量感兴趣的设备。 用于IPv4多播的第3层地址是D类IPv4地址(从224开始到239)。IPv4多播的第2层地址以“01:00:5e”开头。
示例:IPTV,OSPF Hello消息,EIGRP Hello消息,RIPv2路由更新。
3)IPv4广播一对多的通信types。 networking设备发送一个IPv4数据包,它将被传送到该LAN段中的所有设备。 广播stream量问题是广播干扰局域网内所有设备造成带宽浪费。
示例:DHCPv4发现消息
在IPv6中,我们有单播,多播和任播。 单播和组播的概念在IPv4和IPv6中是相同的,除了用于广播和组播的IPv6第3层地址的变化和用于组播的第2层地址之外。 用于IPv6多播通信的第2层地址从“33:33:”开始(在Ipv4中为“01:00:5e”)。
IPv6 Anycast IPv6 Anycasttypes的通信用于标识来自一组接口的接口,这些接口提供相同的服务,但是在路由距离附近(我们可以比较类似于地理距离的路由距离)到客户端。 任播只能在路由协议的帮助下才能实现。
请查看下面的链接以获取有关IPv6 Anycast的更多详细说明。
例如,我的家位于印度,我想解决FQDN“ http://www.serverfault.com ”到一个IP地址。 考虑我有三个DNS服务器,一个位于美国,另一个位于加拿大,其他位于印度,都提供相同的服务。 更好的select是来自印度的DNS服务器,因为它位于我家附近。 如果我在我的位置附近使用该服务,我将得到更快的答复,并减lessnetworkingstream量。 Anycast可以find靠近我家的服务器,并从该服务器获得服务。