组播MAC地址和各类IP地址
MAC地址是以太⽹⼆层使⽤的⼀个48bit(6字节⼗六进制数)的地址,⽤来标识设备位置。MAC地址分成两部分,前24位是组织唯⼀标识符(OUI, Organizationally unique identifier),后24位由⼚商⾃⾏分配。
MAC地址有单播、组播、⼴播之分。单播地址(unicast address)表⽰单⼀设备、节点,多播地址或者组播地址(multicast address、group address)表⽰⼀组设备、节点,⼴播地址(broadcast address)是组播的特例,表⽰所有地址,⽤全F表⽰:FF-FF-FF-FF-FF-FF。当然,三层的IP地址也有单播、组播、⼴播之分。
48bit的MAC地址⼀般⽤6字节的⼗六进制来表⽰,如XX-XX-XX-XX-XX。IEEE 802.3规定:以太⽹的第48bit(2012-04-11修改为The first bit) ⽤于表⽰这个地址是组播地址还是单播地址。如果这⼀位是0,表⽰此MAC地址是单播地址,如果这位是1,表⽰此MAC地址是多播地址。见IEEE 802.3 3.2.3 Address fields:“The first bit (LSB) shall be used in the Destination Address field as an address type designation bit to identify the Destination Address either as an individual or as a group address. If this bit is 0, it shall indicate that the address field contains an individual address. If this bit is 1, it shall indicate that the address field contains a group address that identifies none, one or more, or all of the stations connected to the LAN. In the Source Address field, the first bit is reserved and set to 0.”
以太⽹线路上按“Big Endian”字节序传送报⽂(也就是最⾼字节先传送,关于字节序请参考相关⽂档),⽽⽐特序是”Little Endian”(也就是最低位先传送)。⼀个⼗六进制表⽰法表⽰的MAC地址01-80-C2-00-00-00,传送时的bit顺序就是:1000 0000 0000 0001 0100 0011 0000 0000 0000 0000 0000 0000,如下⾯的图(从最左边开始传送):
注意图上的第47bit(2012-04-11修改为The second bit),这⼀位表⽰MAC地址是全球唯⼀地址还是本地地址,0表⽰全球唯⼀地址,1表⽰本地唯⼀地址。这⼀位也叫G/L位。
对于⽹络设备上固化的MAC地址,因为它唯⼀标识这个设备,所以只能是单播地址,也就是MAC帧⾥⾯的Source地址第48位(2012-04-11修改为The first bit)只能为0。
我们常说有2的48次⽅个MAC地址可供⽹络设备使⽤,这些地址可以多到给地球上每⼀粒沙⼦分配⼀个地址,其实这个数量要打折扣的,因为MAC地址虽然有这么多,但真正⽤在⽹卡上并且全球唯⼀的只有2的46次⽅个:第48bit⼀定是0,第47bit⼀定是0。
出自寓言故事的成语这也就引出了⼀个有意思的现象:随便⼀台PC,观察⼀下它的⽹卡地址,第1字节的⼗六进制数⼀般是4的倍数;查看⼀下IEEE分配的OUI(),第1字节的⼗六进制数也⼀般是4的倍数(早期以太⽹没有本地地址的概念,所以分配的OUI⾥⾯G/L bit也可能是1),这种情况下就不是4的倍数了,但肯定是2的倍数,因为第48位只能是0。
关于组播地址,有这么个误解:MAC地址第1字节必须是0x01才表⽰组播地址,连TCP/IP详解上也这么说(见中⽂版12.4.2第⼀段)。IEEE 802.3⾥⾯已经明确说明了只要第48bit是1就表⽰组播地址,所以⽆论MAC地址第1字节是0x01、0xC1或者是0x33都表⽰这个MAC地址是组播地址(以0x33开头的表⽰IPV6对应的⼆层组播地址)。之所以有这样的误解,是因为到⽬前为⽌,⼤部分组播MAC地址的第1字节都是0x01。如:
01-80-C2-00-00-00(STP协议使⽤)
01-80-C2-00-00-01(MAC Control的PAUSE帧使⽤)
01-80-C2-00-00-02(Slow Protocol: 802.3ah OAM/ LACP 协议都⽤这个地址,这个地址很有故事,有多少软件处理这个地址会出问题啊!) 01-00-5E-xx-xx-xx(IP组播地址对应的⼆层组播地址)。
完整的列表见
之所以⼤部分组播地址都以01-80-C2和01-00-5E开头,那是因为使⽤这些组播地址的协议都是带头⼤哥IEEE和IANA名下的,它们的OUI 分别是00-80-C2和00-00-5E是,变成组播地址就是01-80-C2和01-00-5E了,当然,除了带头⼤哥霸占的这些组播地址,还有 01-00-0C-CC-CC-CC这样的地址,这个地址是Cisco霸占的,Cisco的OUI是00-00-0C。
1、802.3标准上说明某个bit时都是按照⽹络传送顺序来说的,所以我⽂章⾥也按这个顺序来说明,⽽不是⼗六进制表⽰法中的bit位置,所以有了48bit的说法,为了防⽌误解,还是遵从标准使⽤"The first bit".
⼗六进制表⽰法的01-80-C2-00-00-00,其中的"第40位"标识是否是组播地址,但传送时bit顺序是这样的:
1000 0000 0000 0001 0100 0011 0000 0000 0000 0000 0000 0000
所以传送过程中最先发送的⼀位(上⾯最左边⼀位)标识是否是组播地址
2、00000001b传的时候从1开始传,然后再传7个0。⽹络上发送数据也是以⽐特为单位的,在⽹线上抓波形看不就是⼀个个⽅波吗?物理层也没办法⼀个波形带⾛8bit数据啊。
1、先总的来看ip地址分类
A类:00000000×××——01111111×××
0.0.0.0 —— 127.255.255.255
B类:10000000,00000000×××——10111111,11111111×××
128.0.0.0——191.255.255.255
C类:11000000,00000000,0000000×××——11011111,1111111,1111111×××
192.0.0.0——223.255.255.255
D类:11100000××——111011111××××
224.0.0.0——239.255.255.255 (组播地址)
E类:11110000×××——11110111×××
240.0.0.0——247.255.255.255 (科学实验)
IP组播和单播的⽬的地址不同,IP组播的⽬的地址是组地址——D类地址.
组播IP地址是本地管理组播地址:239.0.0.0~239.255.255.255孤岛飞鹰大结局
D类地址是从224.0.0.0到239.255.255.255之间的IP地址
其中224.0.0.0到224.0.0.255是被保留的地址
224.0.0.1表⽰⼦⽹中所有的组播组
224.0.0.2表⽰⼦⽹中的所有路由器
224.0.0.5表⽰OSPF(Open Shortest Path First)路由器
224.0.0.6表⽰OSPF指定路由器
224.0.0.12表⽰DHCP(Dynamic Host Configuration Protocol)服务器.
2层的MAC地址是如何与3层的IP地址进⾏映射的呢?通过将MAC地址的前25位强⾏规定位0100.5E,⽽后23位对应IP地址的后23位,⽽组播IP地址的前4位均相同如:
IP地址:x.xxxxxxxx国庆去哪玩
MAC地址:00000001.00000000.x.xxxxxxxx
例如:组播IP地址224.215.145.230应该映射到下列哪个组播MAC地址?( )
(A) 01-00-5e-57-91-e6 (B) 01-00-5e-d7-91-e6
(C) 01-00-5e-5b-91-e6 (D) 01-00-5e-55-91-e6
悠扬的近义词⽤⼆进制来换算,将215.145.230换算成1101,0111,1001,0001,1110,0110,取最后23位放到MAC地址中的23位可以计算得出答案是A。
显然有32个IP地址(有5个y可以不⼀样)对应⼀个MAC地址,所以要避免在同⼀⽹络中使⽤的多个组播IP地址对应⼀个MAC地址。
各类地址:
⼀、127.0.0.1<span "="">127是⼀个保留地址,该地址是指电脑本⾝,主要作⽤是预留下作为测试使⽤,⽤于⽹络软件测试以及本地机进程间通信。在Windows系统下,该地址还有⼀个别名叫“localhost”,⽆论是哪个程序,⼀旦使⽤该地址发送数据,协议软件会⽴即返回,不进⾏任何⽹络传输,除⾮出错,包含该⽹络号的分组是不能够出现在任何⽹络上的。<span "="">
⼆、10.*.*.*,172.16.*.*――172.31.*.*,192.168.*.*<span "="">
上⾯三个⽹段是私有地址,可以⽤于⾃⼰组⽹使⽤,这些地址主要⽤于企业内部⽹络中,但不能够在Internet⽹上使⽤,Internet⽹没有这些地址的路由,⽽使⽤这三个⽹段的计算机要上⽹必须要通过地址翻译(NAT),将私有地址翻译成公⽤合法的IP地址。⼀些带宽路由器或是其它的⽹络设备,往往使⽤192.168.1.1作为缺省的地址,由于私有个⼈⽹络不会与外部互连,所以可以使⽤随意的IP地址,保留这三个⽹段的IP 地址使其使⽤,是为了避免以后接⼊公⽹时引起地址混乱。<span "="">
三、0.0.0.0<span "="">
严格意义上来说,0.0.0.0已经不是真正意义上的ip地址了。它表⽰的是这样⼀个集合,所有不清楚的主机和⽬的⽹络。这⾥的不清楚是指在本机的路由表⾥没有特定条⽬指明如何到达。对本机来说,它就是⼀个收容所,所有不认识的三⽆⼈员,⼀律送进去。如果你在⽹络设置中设置了缺省⽹关,那么windows系统就会⾃动产⽣⼀个⽬的地址为0.0.0.0的缺省路由。<span "="">
四、255.255.255.255<span "="">
受限制的⼴播地址,对本机来说,这个地址指本⽹段内(同⼀个⼴播域)的所有主机,该地址⽤于主机配置过程中IP数据包的⽬的地址,这时主机可能还不知道它所在⽹络的⽹络掩码,甚⾄连它的IP地址也还不知道。在任何情况下,路由器都会禁⽌转发⽬的地址为受限的⼴播地址
的数据包,这样的数据包仅会出现在本地⽹络中。<span "="">
五、224.0.0.0—239.255.255.255<span "="">
这是⼀组组播地址,需要注意它与⼴播地址的区别,其中224.0.0.1特指所有的主机,224.0.0.2特指所有的路由器,224.0.0.5指所有的OSPF 路由器地址,224.0.0.13指PIMV2路由器的地址。另外从224.0.0.0――224.0.0.255只能⽤于局域⽹中路由器是不会转发
的,239.0.0.0――239.255.255.255是私有地址 (与192.168. *.*功能⼀样),224.0.1.0—238.255.255.255可以⽤于Internet上。如果你的主机开启了IRDp(Internet路由发现协议,使⽤组播功能)功能,那么你的主机路由表中应该会有这样的⼀条路由。<span "="">北京的酒店
十一点六、169.254.*.*<span "="">
如果你的主机使⽤了DHCP功能⾃动获得⼀个ip地址,那么当你的DHCP服务器发⽣故障或响应时间太长⽽超出系统规定的⼀个时
间,windows系统会为你分配这样⼀个地址。如果你发现你的主机ip地址是个诸如此类的地址,很不幸,⼗有⼋九是你的⽹络不能正常运⾏了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论