网络子系统72_IP多播地址与MAC多播地址的映射关系

//  为了支持IP 多播,以太网的大佬们已经为 Ethernet和Fiber Distributed Data Interface (FDDI)的MAC地址保留了一个多播地址区间:01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF。正如下图所示48位的MAC地址中的高25位是固定的,低23位是可变的。

          

//  为了映射一个IP 多播地址到MAC层的多播地址,IP多播地址的底23位可以直接映射为MAC层多播地址的底23位。因为IP多播地址的前4位是固定的,另外还有比邻的5位不需要映射到MAC层多播地址,因此,一个主机接收到一些不属于自己所属组的MAC层多播包是可能的。然而,这些包会被IP层通过判断IP目标地址而丢弃掉。
//  例如:多播地址224.192.16.1可以映射为01-00-5E-40-10-01。用低23位,多播地址224.192.16.1的第一个8位是不会用到的,第二个8位中的后7位会被用到,第三个和第四个8位可以直接转换为十六进制字符。第二个8位,即192的二进制表示是11000000,如果丢到最高位,就变成了1000000或64(十进制),或0X40(十六进制)。第三个8位是16,即0X10(十六进制)。第四个8位是1,即0X01(十六进制)。因此,MAC地址就由 224.192.16.1变成了01-00-5E-40-10-01。
//  IP多播地址的范围是:224.0.0.0--239.255.255.255,其中:
//    1)224.0.0.0--224.0.0.255 本地保留,ttl=1,其中224.0.0.1是本网所有主机接收
//    2)224.0.0.2是本网所有路由器接收
//    3)239.0.0.0--239.255.255.255 私有组播地址
//    4)232.0.0.0--232.255.255.255 特定源多播
//    5)224.0.1.0--238.255.255.255 全球
时间: 2024-10-22 23:53:24

网络子系统72_IP多播地址与MAC多播地址的映射关系的相关文章

利用java实现对实验室局域网主机或宿舍网络主机的扫描监控,要 求输出主机名、IP 地址、MAC 地址等信息

问题描述 利用Java实现对实验室局域网主机或宿舍网络主机的扫描监控,要求输出主机名.IP地址.MAC地址等信息,做个简单的界面,跪求源代码 解决方案

网络子系统58_主地址、辅地址

// 参考 深入理解linux网络技术内幕 // 主地址 // 在NIC上配置ip地址时,如果该地址是子网内的第一个地址时,默认指定为主地址 // 辅地址 // 在NIC上配置ip地址时,如果该地址与此NIC已经配置的地址在同一子网,则该地址 // 被视为辅地址 // 主地址作用: // 1.删除主地址时,所有相关的辅地址也被删除,可通过/proc配置,当主地址被删除时可以 // 将辅助提升为主地址 // 2.为本地生成的流量选择源ip地址,只考虑主地址

网络子系统64_设备ip地址配置

// 相同子网: // 掩码相同,网络地址相同 // 为设备配置ip地址 // 函数主要任务: // 1.合理性检查: // 1.1 相同子网内该地址没有被添加过 // 1.2 相同子网内的地址scope应该相同 // 2.将ifa插入到in_device->ifa_list中 // 3.通知netlink,inetaddr_chain 新地址的加入 // 注:地址在in_device->ifa_list中的排列: // 1.主地址:插入的如果为主地址,则按照scope从大到小的顺序排列 //

网络子系统15_arp邻居项初始化

// 初始化struct neighbour // 当邻居子系统新创一个neighbour时,邻居子系统调用特定协议的初始化函数,初始化邻居项. // 调用路径:neigh_create->arp_constructor // 函数主要任务: // 1.设置邻居项的地址类型,a,b,c,d // 2.使用与此邻居项关联的接口设备的neigh_param作为该邻居项调整邻居协议的参数. // 3.根据与此邻居项关联的接口设备的信息,初始化邻居项的状态,以及ops // 3.1 驱动没有提供填充l2

网络子系统73_入口路由缓存查找

// 入口路由缓冲查找 // 返回值: // 0,路由查找成功 // -ENOBUFF,内存问题导致查找失败 // -EINVAL,常规查找失败 // hash值计算: // 目的地址,源地址,入口设备index,tos进行hash // 函数主要任务: // 1.根据hash值遍历bucket // 2.比较5元组 // 3.如果缓存命中,更新引用计数,绑定到skb->dst // 4.否则,如果为本地多播地址,或者内核支持多播路由,多播路由中查找 // 5.否则,在路由表中查找 // 注:缓

网络子系统6_设备开启与关闭

// 网络设备开启 // 函数主要任务: // 1.设置dev->state=__LINK_STATE_START // 2.调用驱动程序的回调函数open // 3.设置dev->flags |= IFF_UP表示设备开启 // 4.更新多播列表, // 5.激活设备 // 6.通知监听器,设置dev->flags // 设备开启之后应该具备的特征: // 1.dev->state, 表示设备可以进行传输接收 // 2.dev->flags,表示设备已经开启 // 3.设备

网络子系统14_邻居子系统通用接口

//创建一个新的邻居项 //参考 深入理解linux网络技术内幕 // 1.邻居子系统为具体的邻居协议,提供通用的功能接口 // 2.系统中所有的邻居协议被链接在neigh_tables链表中 // 3.neigh_table代表一个具体的邻居协议 // 4.具体邻居协议在运行时的行为,可以通过struct neigh_parms调节, // neigh_params与设备关联,每个邻居协议neigh_table提供一个默认的neigh_params. //注册一个邻居协议到系统中 // 1.与

批量绑定IP地址和mac地址的方法

  这里要跟大家分享的是关于批量绑定IP地址和mac地址的方法,在网络管理中,IP地址盗用现象经常发生,不仅对网络的正常使用造成影响,同时由于被盗用的地址往往具有较高的权限,因而也对用户造成了大量的经济上的损失和潜在的安全隐患.因此为了防止IP地址被盗用,可以在代理服务器端分配IP地址时,把IP地址与网卡地址进行捆绑.那么IP地址和mac地址要如何进行批量绑定?系统城的小编下面就跟大家详解有关的具体措施. 1.首先,我们要登录目前连接的路由器后台,到DHCP客户端面列表中查看目前连接的全部电脑;

网络子系统43_ip选项预处理

//选项格式: // 1.type中指示该选项在分片时是否需要被拷贝 // 2.ptr从1算起,1为type的位置 // 3.len不包括type字段,其余都包括(len,ptr,选项内容) //type字段: ip选项type字段的常见代码值: //inet_addr_type(addr)返回l3 addr的路由类型: // 1.RTN_LOCAL 该ip地址属于一个本地接口 // 2.RTN_UNICAST 根据路由表,该ip地址可以抵达,而且是单播地址 // 3.RTN_MULTICAST