现在使用一个测试程序来让我们能在一个接口上加入一个多播组(不再显示使用这个测试程序的过程)。在以太网接口( 1 4 0 . 2 5 2 . 1 3 . 3 3)上加入多播组2 2 4 . 1 . 2 . 3。执行n e t s t a t程序看到内核已加入这个组,并得到期望的以太网地址。用黑体字来突出显示和前面n e t s t a t输出的不同。
我们在输出中再次显示了其他两个接口: s l 0和l o 0,目的是为了重申加入多播组只发生在一个接口上。
显示了t c p d u m p对进程加入这个多播组的跟踪过程。
当主机加入多播组时产生第1行的输出显示。第2行是经过时延后的IGMP报告,我们介绍过报告重发的时延是1 0秒内的随机时延。
在两行中显示硬件地址证实了以太网目的地址就是正确的多播地址。我们也看到了源IP地址为相应的s u n主机地址,而目的IP地址是多播组地址。同时,报告的地址和期望的多播组地址是一致的。
最后,我们注意到,正像指明的那样, TTL是1。当TTL的值为0或1时,tcpdump在打印时用方括号将它们括起来,这是因为TTL在正常情况下均高于这些值。然而,使用多播我们期望看到许多TTL为1的IP数据报。
在这个输出中暗示了一个多播路由器必须接收在它所有接口上的所有多播数据报。路由器无法确定主机可能加入哪个多播组。
多播路由器的例子
继续前面的例子,但我们将在s u n主机中启动一个多播选路的守护程序。这里我们感兴趣的并不是多播选路协议,而是要研究所交换的IGMP查询和报告。即使多播选路守护程序只运行在支持多播的主机(sun)上,所有的查询和报告都将在那个以太网上进行多播,所以我们在该以太网中的其他系统中也能观察到它们。
在启动选路守护程序之前,加入另外一个多播组224.9.9.9,