单播、广播和多播IP地址
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单播、广播和多播IP地址相关的知识,希望对你有一定的参考价值。
参考技术A 原文地址: http://www.cnblogs.com/gaoxing/archive/2012/02/19/2358484.html除地址类别外,还可根据传输的消息特征将IP地址分为单播、广播或多播。主机使用IP地址进行一对一(单播)、一对多(多播)或一对所有(广播)的通信。
单播地址是IP网络中最常见的。包含单播目标地址的分组发送给特定主机,一个这样的例子是,IP地址为192.168.1.5(源地址)的主机向IP地址为192.168.1.200(目标地址)的服务器请求网页,如图5.8所示。
要发送和接收单播分组,IP分组报头中必须有一个目标IP地址,而以太网帧报头中必须有相应的目标MAC地址。IP地址和MAC地址一起将数据传输到特定的目标主机。
如果目标IP地址属于另一个网络,则在帧中使用的目标MAC地址将为与源IP地址位于同一个网络中的路由器接口的MAC地址。
广播分组的目标IP地址的主机部分全为1,这意味着本地网络(广播域)中的所有主机都将接收并查看该分组。诸如ARP和DHCP等很多网络协议都使用广播。
C类网络192.168.1.0的默认子网掩码为255.255.255.0,其广播地址为192.168.1.255,其主机部分为十进制数255或二进制数11111111(全为1);
B类网络172.16.0.0的默认子网掩码为255.255.0.0,其广播地址为172.16.255.255;
A类网络10.0.0.0的默认子网掩码为255.0.0.0,其广播地址为10.255.255.255。
在以太网帧中,必须包含与广播IP地址对应的广播MAC地址。在以太网中,广播MAC地址长48位,其十六进制表示为FF-FF-FF-FF-FF-FF。图5.9所示的是一个广播IP分组。
多播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个多播组IP地址,多播地址范围为224.0.0.0~239.255.255.255。由于多播地址表示一组设备(有时被称为主机组),因此只能用作分组的目标地址。源地址总是为单播地址。
远程游戏就是一个使用多播地址的例子,很多玩家通过远程连接玩同一个游戏;另一例子是通过视频会议进行远程教学,其中很多学生连接到同一个教室。还有一个例子是硬盘映像应用程序,这种程序用于同时恢复众多硬盘的内容。
同单播地址和广播地址一样,多播IP地址也需要相应的多播MAC地址在本地网络中实际传送帧。多播MAC地址以十六进制值01-00-5E打头,余 下的6个十六进制位是根据IP多播组地址的最后23位转换得到的。一个MAC多播地址是01-00-5E-0F-64-C5,如图5.10所示。每个十六 进制位相对于4个二进制位。
即时通讯开发之详解TCP/IP中的广播和多播IGMP协议
单播是说,对特定的主机进行数据传送。例如给某一个主机发送 IP 数据包。这时候,数据链路层给出的数据头里面是非常具体的 目的地址,对于以太网来 说,就是网卡的 MAC 地址(不是 FF-FF-FF-FF-FF-FF 这样的地址)。现在的具有路由功能的主机应该可以将 单播数据定向转发,而目的主机的网 络接口则可以过滤掉和自己 MAC 地址不一致的数据。
广播是主机针对某一个网络上的所有主机发送数据包。这个网络可能是网络,可能是子网,还可能是所有的子网。如果是网络, 例如 A 类网址的广播就是 netid.255.255.255,如果是子网,则是 netid.netid.subnetid.255;如果是所有的子网(B 类 IP)则是则是 netid.netid.255.255。广播所用的 MAC 地址 FF-FF-FF-FF-FF-FF。网络内所有的主机都会收到这个广播数据,网卡只要把 MAC 地址为 FF-FF-FF-FF-FF-FF 的数据交给内核就可以了。一般说来 ARP,或者路由协议 RIP 应该是以广播的形式播发的。
可以说广播是多播的特例,多播就是给一组特定的主机(多播组)发送数据,这样,数据的播发范围会小一些(实际上播发的范围 一点也没有变小),多播的 MAC 地址是最高字节的低位为一,例 如01-00-00-00-00-00。多播组的地址是 D 类 IP,规定是 224.0.0.0-239.255.255.255。
虽然多播比较特殊,但是究其原理,多播的数据还是要通过数据链路层进行 MAC 地址绑定然后进行发送。所以一个以太网卡在 绑定了一个多播 IP 地址之 后,必 定还要绑定一个多播的 MAC 地址,才能使得其可以像单播那样工作。这个多播的 IP 和多播 MAC 地址有一个对应的算法,在书的 p133到 p134之间。可以 看到 这个对应不是一一对应的,主机还是要对多播数据进行过滤。
个人的看法:广播和多播的性质是一样的,路由器会把数据放到局域网里面,然后网卡对这些数据进行过滤,只拿到自己打算要 的数据,比如自己感兴趣的多 播数据,自己感兴趣的组播数据。当一个主机运行了一个处理某一个多播 IP 的进程的时候,这个进程 会给网卡绑定一个虚拟的多播 mac 地址,并做出来一个多播 ip。这样,网卡就会让带有这个多播 mac 地址的数据进来,从而实现通信, 而那些没有监听这些数据的主机就会把这些数据过滤掉,换句话说,多播,是让主机 的内核轻松了,而网卡,对不起,您就累点吧。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询
IGMP 的作用在于,让其他所有需要知道自己处于哪个多播组的主机和路由器知道自己的状态。一般多播路由器根本不需要知道 某一个多播组里面有多少个 主机,而只要知道自己的子网内还有没有处于某个多播组的主机就可以了。只要某一个多播组还有一台主 机,多播路由器就会把数据传输出去,这样,接受方就会通 过网卡过滤功能来得到自己想要的数据。为了知道多播组的信息,多播路 由器需要定时的发送 IGMP 查询,IGMP 的格式可以看书,各个多播组里面的主机要根 据查询来回复自己的状态。路由器来决定有几 个多播组,自己要对某一个多播组发送什么样的数据。
这种查询回应数据报的 TTL 一般是1,而且就算是出错也不产生 ICMP 差错(没必要)。
以上是关于单播、广播和多播IP地址的主要内容,如果未能解决你的问题,请参考以下文章