⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc1112.txt

📁 RFC规范的翻译稿
💻 TXT
📖 第 1 页 / 共 3 页
字号:
的任何地方。
6.3本地网络服务接口的扩展
为了支持多播IP数据报的发送,对本地网络服务接口没有任何改变。当IP模块调用现
存的“send local"操作时,只不过指定一个IP主机组目的地址,而不是单个IP目的地址。
6.4以太网本地网络模块的扩展
通过允许多播地址出现在以太网分组中的目的地址字段,以太网就能支持本地多播分组
的发送。为了支持多播IP数据报的发送,所需的是一个将IP主机组地址映射到以太网多播
地址的过程。
IP主机组地址映射到以太网多播地址,是通过将IP地址的低23位放在以太网多播地址
01-00-5E-00-00-00(十六进制)的低23位上。因为在IP主机组地址上有28个有意义的位,所
以多个主机组地址可以映射到相同的以太网多播地址上。
6.5 非以太网的本地网络模块的扩展
其它的那些本身就支持多播的网络,例如符合IEEE 802.2标准的环和总线网络。它们
可以像以太网那样达到发送多播IP数据报的目的。对于那些支持广播而不支持多播的网络,
例如实验性以太网,所有的IP主机组地址可以被映射为单个本地广播地址(以增加所有本
地主机费用为代价)。对于连接两个主机(或者一个主机,一个多播路由器)的一个的点对
点连接,多播应该完全像单播那样传递。对于像ARPANET这样的存储转发网络,或公共的
X.25网络,所有IP主机组地址必须映射为IP多播路由器的众所周知的本地地址;在这些网
络上路由器负责完成在一个网络内或所有网络中的多播传递。
7. 接收多播IP数据报
7.1 对IP服务接口的扩展
高层协议使用与接收标准的单播数据报一样的“Receive IP”操作,接收到来的多播IP
数据报。目的高层协议的选择由IP首部的协议字段决定,而与目的IP地址无关。然而,在
属于一个特定组的任意数据报被接收之前,高层协议必须请求IP模块加入该组。因此,必
须扩展IP服务接口,提供以下两个操作:
JoinHostGroup(group-address, interface)
LeaveHostGroup(group-address, interface) 
JoinHostGroup操作要求本主机在给定的本地网络接口上成为以“group-address”标记的
主机组中的成员。LeaveGroup操作要求本主机在给定的本地网络接口上离开以
“group-address”标记的主机组。如果主机只有一个接口,则interface参数可以省略。对于
属于多个网络的主机,高层协议可以不指明interface,这要求使用缺省的interface发送多播
数据报(参看6.1节)。
   允许在多个interface上加入一个相同的组,这种情况下可能会有重复的多播数据报被接
收;也允许多个高层协议要求加入同一个组。
   这两种操作都立即返回(即它们是非阻塞操作),表示成功或是失败。每种操作都可能因
为无效的组地址或接口标识符而出错。JoinHostGroup操作可能由于缺少本地资源而失败。
LeaveHostGroup可能因为本主机不属于在给定接口上的某一组而失败。LeaveHostGroup如
果成功,组成员关系可能还存在,因为可能有多个高层协议是同一个组的成员。
7.2 IP模块的扩展
为了能够接收多播IP数据报,必须扩展IP模块,维持一个与每个网络接口相关的主机
组成员列表。在到来的数据报中,目的地属于这些组地址中某一个的数据报的处理方式与目
的地属于主机的单播地址中某一个数据报的处理方式相同。
如果主机接收到目的地址是组地址的数据报,而该主机不属于该组,则这个数据报将被
丢弃而不生成任何错误或日志记录。在有多个网络接口的主机上,如果目的地属于某一组的
数据报经由一个接口到达,而该主机只在另一个网络接口上属于这个组,则这个数据报将被
毫无声息的丢弃。( 出现这种情况的唯一原因是本地网络模块的多播地址过滤功能不完
善。)
如果到来的数据报的IP生存时间(TTL)为1,则该数据报不会被拒收(即,如果到来
的数据报不会再被转发,则它的生存时间字段不会自动减少)。如果到来的数据报的源地址
字段出现了IP主机组地址,则该数据报将被毫无声息的丢弃。ICMP出错信息(目的主机
不可达,超时,参数问题,源站被抑制,重定向)不会因为目的地为IP主机组的数据报而
产生。
主机组成员列表根据高层协议的JoinHostGroup和LeaveHostGroup操作要求而更新。每
个成员应该有一个相应的参照数或其它同样的机制,来处理加入和离开同一组的多个要求。
当第一个要求加入和最后一个要求离开在给定接口上的某个组时,那个接口的网络模块就被
告知,去更新它的多播接收过滤器(参看7.3部分)。
IP模块也必须扩展,实现在附录1中说明的IGMP协议。IGMP是用来让邻近的多播路
由器获知在一个特定的本地网络中出现的主机组成员。为了支持IGMP,每个2级主机必须
在初始化时加入“所有主机”组(地址为224.0.0.1),而且只要主机是开着的,它都要是这
个组的成员。
(地址是所有主机组的数据报会被多播路由器当成一个特殊情况,不管它的生存时间是
多少,它不会被传递出单一的网络。因此,所有主机地址不用于互联网范围上的广播地址。
为了达到IGMP的目的,属于所有主机组的这项要求仅仅在主机属于至少一个其它组时才真
正是必须的。然而,要求主机在任何时候是一个所有主机组的成员的原因是(1)简单,(2)接
收不必要的IGMP请求的频率应足够的低,以使开销可以忽略不计。(3)所有主机地址可以
用于其它面向路由选路的目的,例如通知网关的存在或解析本地地址)
7.3 对本地网络服务接口的扩展
把到来的本地网络多播分组传递给IP模块使用的方式与处理本地网络单播分组时一
样,都是使用“Receive Local”操作。为了允许IP模块通知本地网络模块它要接收哪种多
播分组,必须扩展本地网络服务接口,以提供以下两个新操作:
JoinLocalGroup(group-address)
LeaveLocalGroup(group-address)
“group-address”是IP主机组地址,JoinLocalGroup操作要求本地网络模块接收和向上传递
目的地为给定IP主机组地址的分组。LeaveLocalGroup操作要求本地网络模块停止向上递交
目的地为给定IP主机组地址的分组。本地网络模块应该能够映射IP主机组地址到本地网络
地址,
这是更新本地网络模块的多播接收过滤器所要求的。任何本地网络模块都可以忽略
LeaveLocalGroup操作的要求。如果它不能充分过滤到来的分组,也可以向上传递超出
JoinLocalGroup操作所要求的更多的多播地址的分组。
本地网络模块不会向上传递任何从该模块出发的多播分组;多播回送是在IP层或更高
层处理。
7.4 对以太网本地网络模块的扩展
为了支持多播IP数据报的接收,以太网模块必须能接收地址是与主机的IP主机组地址
相关的以太网多播地址的分组。利用以太网硬件接口可能具有的地址过滤能力是非常可取
的,这样主机只接收目的地指向它的那些分组。
   不幸的是,许多当前的以太网接口对硬件能识别的地址数目有很少的限制。而且,一个
具体的实现必须能侦听任意数目的以太网多播地址,这意味着当地址数目超过过滤器的限制
时,“打开”地址过滤器以接收所有的多播分组。
   对于那些硬件地址过滤能力不强的接口,为了性能的原因,在以太网模块的软件中执行
以太网地址过滤可能要好一些。然而,这并不是强制性的,因为IP模块基于IP目的地址执
行它自己的过滤。
7.5 对以太网以外的本地网络模块的扩展
  像IEEE 802.2网络这样的其它多播网络,为了达到接收多播IP数据报的目的而进行的
处理方式与以太网相同。对于纯广播网络,如实验性以太网,所有到达的广播分组能够被接
收并传递给IP模块以实现IP层过滤。在点对点或存储转发网络,多播IP数据报以本地网
络单播的形式到达,所以没有必要修改本地网络模块。
附录1 INTERNET组管理协议(IGMP)
Internet组管理协议(IGMP)用于IP主机向所有紧邻的多播路由器报告它们的主机组
成员关系。IGMP是不对称的协议,将从主机的视角而不是从多播路由器的视角描述它。
(IGMP也可以在多播路由器之间对称或非对称的使用。这样的用法这里没有指定。)
像ICMP一样,IGMP是IP的一个组成部分。要在所有符合IP多播规范的2级主机上
实现。IGMP报文封装在IP数据报中,数据报的IP协议字段为2。所有与主机相关的IGMP
报文具有如下格式:
       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |版本   | 类型  |    未用       |           校验和              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                        组地址                                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
版本
   本备忘录说明IGMP版本1。版本0在RFC-988中说明,它现在已经废弃。
类型
   有两种与主机相关的IGMP报文:
    1=主机成员请求
    2=主机成员报告
未用
     未用字段,在发送时为零,接收时被忽略。
组地址
    主机成员请求报文在被发送时组地址字段为零,被接收时忽略该字段。
    主机成员报告报文中,组地址字段为被报告组的IP主机组地址。

非正式的协议描述
多播路由器发送主机成员请求报文(在下文叫做请求),以发现哪些主机组在它们所属
的本地网络上有成员。请求的目的地址为所有主机组(224.0.0.1),携带的IP生存时间为1。
主机为了响应一个请求,生成主机成员报告报文,报告它们在接到请求的网络接口上
所属的每个主机组。为了避免并发报告“爆炸”,减少被传送的报告的总数,使用了两种技
术:
1. 当主机接收到一个请求,不是立即发送报告,而是为到达请求的网络接口上每个组
成员启动一个报告延时定时器。每个定时器被设置为在0到D秒之间的一个不同的、随机
选择的值。当一个定时器超时,会为相应的主机组产生一个报告。因此,报告的产生时间分
散在D秒的间隔内,而不是都立即产生。
2. 被发送的报告的IP目的地址等于它要报告的主机组的地址,它的IP生存时间为1,
所以在同一网络上这一组的其它成员能侦听到该报告。如果主机听到在那个网络上它所属的
组的报告,则主机停止那个组的定时器,不再产生那个组的报告。因此,在通常情况下,仅
仅为出现在网络上的每个组生成一个报告,这是由延迟定时器最先超时的成员主机生成的。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -