《IP组播(第1卷)》一1.4 三层组播是建立在TCP/IP协议栈中的

1.4 三层组播是建立在TCP/IP协议栈中的

IP组播是建立在TCP/IP协议栈中的。也就是说,传输组播数据帧和数据包所需的协议是由Internet工程任务组(IETF)进行控制的。IETF成员通过RFC发布和管理相关协议,也就是说IP组播协议是开放标准。

注释
 

组播协议IETF标准适用于IPv4和IPv6组播技术;但和其他IP协议一样,这并不意味着所有厂商处理组播的方式都是相同的,同时也不意味着所有组播协议的实施都能够与标准完美兼容。
使用TCP/IP协议栈也意味着IP组播隶属于互联网数字分配机构(IANA)。IANA负责控制和协调公共地址空间中的IP地址,也包括分配组播地址。

1.4.1 这是个组

三层单播、广播和组播的对比和比较可以从组播传输的唯一性入手。广播和组播之间最主要的区别在于,组播接收方可以连接在任意网段或子网中,而子网的范围却决定了广播的边界,也称为广播域。因此路由器和交换机必须能够知道哪些网段或子网中连接着对(某个或某些)组播组感兴趣的组播主机。发送方和接收方通过组成员身份来管理这一过程。

在使用广播时,设备会在数据包中使用特定的目的 IP 地址,以便将这个广播数据包发送给所有接收方主机。路由器和交换机无须借助上层协议负载就能够识别出组播,因为子网指定了组播边界。下面我们把数据包头部的格式画出来,对比单播IPv4数据包、广播IPv4数据包和组播IPv4数据包的区别。图1-9展示了基本的单播IP数据包。

转发单播消息的工作很简单——沿着去往IP目的地的方向转发。广播的转发也很简单。广播数据包也是沿着去往目的地的方向转发,只不过需要把它复制多份,向所有本地以太网段(VLAN或子网)中的交换机端口进行转发。广播分为两类:所有主机广播和定向广播。所有主机广播是发给所有子网中的所有IP主机的数据包。定向广播是发给某个子网/超网或VLAN中所有IP主机的数据包。

注释
 

复制是指对数据包进行简单的拷贝,然后将其转发到网络中。只要单个数据包有多个接收方,就需要执行复制,比如广播或组播。复制也是所有网络设备(比如交换机或路由器)的基本功能。
如果组播中包含所有主机,那么本地交换机会根据收到这个数据包的逻辑网段,复制并向所有属于这个逻辑网段的接口发送这个广播数据包。

图 1-10 描绘了一个本地网段上的所有主机广播。路由器默认不会转发从属于某个子网的接口收到的所有主机广播,这样就把广播域与网络的其他部分隔离开来。

如果是定向广播的话,路由器会把它转发到目的子网,并且由那个子网中的交换机将其复制给所有主机,如图1-11所示。

同一个子网中组播和广播主机的区别比较有趣。如果子网中只有一部分主机需要接收数据包该怎么办?这些主机可以注册一个组地址,然后发送方向这个组地址发送消息,这样可以减轻发送数据包的负担,只向网段中的某些主机发送,减少了复制成本,并且只会占用主机所属LAN中的带宽。图1-12展示了这种情景。

广播和组播之间的主要区别在于,组播流的注册主机可以位于多个网段中。如何能够让路由器和交换机只把组播数据包复制给这些注册主机,而不会复制给一个网络中或Internet中所有网段上的所有主机?组播发送方使用特殊的目的IP地址传输IP数据包,这种目的IP地址称为组地址,这个IP地址对应着特殊的组播MAC地址。你可能已经注意到了,组播数据帧中的二层目的地址并不是本地子网中的地址。第2章将对组播MAC地址进行详细说明。

1.4.2 IPv4三层组播编址中定义的组

组地址(Group Address)代表一组对这条数据流感兴趣的节点。组地址与源IP地址结合在一起标识了组播流。接收方主机要向上游组成员网络设备表达它对这个组播流感兴趣的意愿。表达意愿的行为称为加入组。

IPv4和IPv6组地址的编址由几个IETF RFC进行控制。最重要并且当前使用的RFC是5771,这个文档记录了组播组地址空间的最终分配方案,以及空间中的每个组类型。组播组使用的地址空间来自于IPv4有类地址空间。表1-2中列出了有类路由编址的划分方案。

RFC 5771为组播组保留了D类地址空间,这个RFC文档代替或更新了几个RFC,其中包括RFC 988。RFC 988是1986年颁布的,它是最初将1110保留为IPv4组播组地址开头4比特的文档。RFC 988代替了RFC 966,后者是最初的IP组播理论RFC。RFC 988和RFC 966都是重要的组播历史文档,如果读者希望更深入地学习组播技术和术语,可以从这个两个文档入手,详细了解组播的理论。

1.4.3 IPv4组播组地址的分配

RFC 5771根据IANA对于组播组地址的分配和部署建议,进一步细化了D类地址的分配。表1-3中列出了分配方式。

接下来简要解释一下每个组播类别及其适用场合。

本地网络控制(224.0.0.0/24):本地控制地址块用于具体的协议控制流量。路由器接口会侦听但不会转发本地控制组播;比如OSPF“所有路由器”(224.0.0.5)。IANA负责控制这个地址块中的地址分配。在IANA网站(www.iana.org)中可以看到完整的本地网络控制地址列表。
注释
 

只有当节点上启用了控制组特性,路由器才会侦听本地控制数据包。比如路由器接口上只启用了RIPv2,那么这个接口就只会处理RIPv2的控制组数据包(组地址为224.0.0.9)。
互联网络控制(224.0.1.0/24):互联网络控制地址块用于路由器接口可能会转发到ASN(自治系统编号)或Internet中的协议控制流量。比如RFC 4330中定义的NTP(网络时间协议),组播地址为224.0.1.1,或者RFC 2730中定义的组播DHCP发现协议,组播地址为224.0.1.68。互联网络控制组中的地址分配也是由IANA进行统一管理的。
点对点(I:224.0.2.0~224.0.255.255;II:224.3.0.0~224.4.255.255;III:233.252.0.0~233.255.255.255):传统上这些地址块中的地址是分配给既不属于本地,也不属于互联网络控制的应用。路由器接口可能会在全球范围内转发点对点(AD-HOC)数据包。大多数使用点对点地址块的应用都需要多个地址(比如小于/24的地址空间)。IANA负责控制公共点对点地址块的分配,未来将会从点对点III中分配地址,如果相关应用无法与本地控制或互联网络控制相符合的话。在公共网络中也可以使用为分配的点对点地址。
SDP/SAP(224.2.0.0/16):会话描述协议/会话通知协议(SDP/SAP)地址块用于通过SAP接收地址的应用,定义在RFC 2974中。
指定源组播(232.0.0.0/8):SSM(指定源组播)编址定义在RFC 4607中。SSM是一种IP组播组模式,在这种模式中,组播流会被转发给接收方,同时接收方会明确表达它们只希望接收一些组播源发来的组播流。SSM多用于一对多应用中。使用SSM地址块不需要IANA的官方分配,因为这些应用对于主机来说是位于本地的;不过依照IANA的策略,这些个址块是专为SSM应用保留的,不能用于其他目的。本章及其他章节中会进一步讨论SSM。
注释
 

IANA最早将232.0.0.0/8分配给VMTP(多用消息处理协议)。
GLOP(233.0.0.0/8):这些地址是在全球范围内静态分配的。每个静态分配的GLOP都对应着一个16比特的ASN(自治系统编号),ASN也是由IANA分配的。ASN会以点分十进制格式(X.Y)插入到组播组地址中,成为组播组地址中间的2字节。比如ASN为X.Y,GLOP分配的地址就是233.X.Y.0/24。被分配了32比特ASN的域应该请求点对点III地址块中的地址分配。另一种用法是用在IPv6组播组编址中。因为SAN是公共的,因此IANA无须分配GLOP组。GLOP地址块是用于公共事务、网络和Internet运营商的。IANA将GLOP编址当作实验性编址,233.252.0.0~233.255.0.0是保留地址。
管理范围(239.0.0.0/8):管理范围的地址旨在用于私有域本地,定义在RFC 2365中。这些组地址的功能与RFC 1918私有IP地址块(比如10.0.0.0/8或172.16.0.0/16~172.31.0.0/16地址块)的功能类似。网络架构中可以使用这个地址块来创建地址规划方案,要求这个方案能够完美符合私有域的需求,并且未来还可以因为不同的地址位置、应用或网络进一步细分。第5章详细介绍了这个地址块中的地址划分。

时间: 2024-09-10 15:44:12

《IP组播(第1卷)》一1.4 三层组播是建立在TCP/IP协议栈中的的相关文章

Linux下套接字详解(补充)--OSI七层与TCP/IP五层网络架构详解

OSI七层模型 OSI是Open System Interconnect的缩写,意为开放式系统互联. OSI是Open System Interconnect的缩写,意为开放式系统互联. OSI七层参考模型的各个层次的划分遵循下列原则: 根据不同层次的抽象分层 每层应当有一个定义明确的功能 每层功能的选择应该有助于制定网络协议的国际标准. 各层边界的选择应尽量节省跨过接口的通信量. 层数应足够多,以避免不同的功能混杂在同一层中,但也不能太多,否则体系结构会过于庞大 同一层中的各网络节点都有相同的

SQL Server 连接问题-TCP/IP

原文:SQL Server 连接问题-TCP/IP 出自:http://blogs.msdn.com/b/apgcdsd/archive/2012/02/24/ms-sql-server-tcp-ip.aspx TCP/IP的基本工作原理这里就不浪费口水了.现在这网络年代,谁不知道TCP/IP啊.不要跟我抬杠说你偏就没听说过TCP/IP阿,真是这样那你得自己去补补课了.   TCP/IP协议有两个基本的东西,一个是IP地址, 另一个是端口号. 在SQL Server 上使用TCP/IP协议是非常

TCP/IP四层模型和OSI七层模型简介

表1-1是 TCP/IP四层模型和OSI七层模型对应表.我们把OSI七层网络模型和Linux TCP/IP四层概念模型对应,然后将各种网络协议归类. 表1-1  TCP/IP四层模型和OSI七层模型对应表 OSI七层网络模型 Linux TCP/IP四层概念模型 对应网络协议 应用层(Application) 应用层 TFTP, FTP, NFS, WAIS 表示层(Presentation) Telnet, Rlogin, SNMP, Gopher 会话层(Session) SMTP, DNS

在Windows 2003中重置TCP/IP

在Windows Server 2003(简称Windows 2003)的连接属性对话框中,如果点击"Internet协议(TCP/IP)选项,"卸载"按钮为灰色,是不可用的.这是因为TCP/IP协议是Windows Server 2003的核心组件,不能删除. 如果我们需要将TCP/IP重置到原始状态,该怎么办呢?此时,我们可以借助"netsh"命令行工具来解决这一问题.在"运行"对话框中输入"cmd",打开&qu

利用“TCP/IP筛选”功能限制服务器的端口

对于个人用户来说,您可以限制所有的端口,因为您根本不必让您的机器对外提供任何服务;而对于对外提供网络服务的服务器,我们需把必须利用的端口(比如WWW端口80.FTP端口21.邮件服务端口25.110等)开放,其他的端口则全部关闭. 这里,对于采用Windows 2000或者Windows XP的用户来说,不需要安装任何其他软件,可以利用"TCP/IP筛选"功能限制服务器的端口.具体设置如下: 1.右键点击"网上邻居",选择"属性",然后双击&qu

Windows 2003中重置TCP/IP

  在Windows Server 2003(简称windows 2003)的连接属性对话框中,如果点击"Internet协议(TCP/IP)选项,"卸载"按钮为灰色,是不可用的.这是因为TCP/IP协议是Windows Server 2003的核心组件,不能删除. 如果我们需要将TCP/IP重置到原始状态,该怎么办呢?此时,我们可以借助"netsh"命令行工具来解决这一问题.在"运行"对话框中输入"cmd",打开&

TCP/IP、Http等各层协议汇总表

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据.关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:"我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP.FTP.TELNET等,也可以自己定义应用层协议.WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做

c++-TCP/IP通信:如何制定一个好的报文协议?

问题描述 TCP/IP通信:如何制定一个好的报文协议? 我想做一个简单的TCP/IP通讯程序,客户端需要注册,登陆,登录信息有: 用户名.密码(都是必填项)和其他若干选填项(可填可不填): 我现在要注册,包含以下信息,举个例子: 用户名:wang 密码:ab12345 手机号:12345678910 这三条信息是一次性打包发送还是分三次打包发送(一条信息一个包)? (1)若是一次性打包发送,该如何打包?协议如何定比较好,请举实例说明.发给服务端后服务端又该如何解析?比如第三条信息,可以是手机号,

协议系列之TCP/IP协议

根据前面介绍的几种协议,将IP协议.TCP协议.UDP协议组合起来,于是便有了TCP/IP协议.现在很多的应用的通信都是建立在TCP/IP协议的基础上,运用非常广泛,很有必要对其学习一下. 打个不太恰当的比方,TCP/IP协议可以看成是邮局与邮递员的关系(实际TCP/IP协议族会包含四层,应用层.传输层.网络层.链路层).这个协议族中的IP协议定位到哪台计算机,而具体到这台计算机的哪个端口(应用程序)就需要TCP协议,一个属于网络层,一个属于传输层,互相依赖,提供有效的解决通信问题的措施.这就好