广播,就是指同时向子网中的多台计算机发送消息,并且所有子网中的计算机都可以接收到发送方发来的消息。每个广播消息包含一个特殊的IP地址。
广播消息地址分为两种类型:本地广播和全球广播。
通过本地广播向子网中的所有计算机发送广播消息时,其他网络不会受到本地广播的影响。我们知道IP地址分为两部分,网络地址和主机地址,标准网络地址部分组成了本地网络地址的第一部分,字节地址中全部为1的部分用于主机地址部分(即十进制的255)。
例如,对于B类网络192.168.0.0,使用子网掩码255.255.0.0,(此IP地址的网络号为192.168,主机号为0.0,子网掩码全为1的对应的IP地址的网络号)则本地广播地址是192.168.255.255,用二进制表示为11000000、10101000、11111111、11111111。其中前两个字节为网络地址,后两个字节为主机地址。
仍以192.168.0.0为例,如果子网掩码为255.255.255.0,则本地广播地址是192.168.0.255。192.168.0为网络地址,255代表192.168.0子网中的主机地址。
全球广播使用四个字节所有位全为1的IP地址,即点分十进制的255.255.255.255,这个特定的广播地址表明数据报的目的地是网络上的所有设备。但是由于路由器会自动过滤掉全球广播,所以使用这个地址没有实际意义。
子网划分
子网划分是为了解决网络IP不够用的情况,
它的实质其实就是,在A,B,或者C类中把原先分配给它的主机号位数拿出若干个位来作网络号.这样就可以缓解网络IP不够用的情况了.
一个子网192.168.15.0,要划分成三个子网,其中一个子网有100台,另两个分别是60、48台。
三个子网,故最多向主机号借两位,子网可分为四个(00,01,10,11) ,平均下来每个子网为2^6-2=62台,因第一个子网要求100台,故子网00,01被分成一个
一个子网100台,故需要二进制至少需要7位主机号,因为默认的子网掩码为255.255.255.0,故此时的子网掩码为255.255.255.128,IP地址为192.168.15.1~192.168.15.127
一个子网60台.故需要二进制至少需要6位主机号,因为默认的子网掩码为255.255.255.0,故此时的子网掩码为255.255.255.192 .IP地址为192.168.15.129~192.168.15.190
一个子网48台.故需要二进制至少需要6位主机号,因为默认的子网掩码为255.255.255.0,故此时的子网掩码为255.255.255.192 .IP地址为192.168.15.192~192.168.15.254
组播
广播的通信模式虽然能够实现一对多的通信需要,但是,由于广播是向子网中的所有计算机用户发送消息,没有目的性,不但增加了网络传输负担,而且资源消耗较高。组播的出现,较好地解决了这个问题。组播也叫多路广播。所谓组播是将消息从一台计算机发送到本网或全网内选择的计算机子集上,即发送到那些加入指定组播组的计算机上。组播组是开放的,每台计算机都可以通过程序随时加入到组播组中,也可以随时离开。
组播组是分享一个组播地址的一组设备。与IP广播类似,IP组播使用特殊的IP地址范围来表示不同的组播组。组播地址(1110开头的D类地址)是范围在224.0.0.0到239.255.255.255的D类IP地址。任何发送到组播地址的消息都会被发送到组内的所有成员设备上。组可以是永久的,也可以是临时的。大多数组播组是临时的,仅在有成员的时候才存在。用户创建一个新的组播组时只需从地址范围内选出一个地址,然后为这个地址构造一个对象,就可以开始发送消息了。
使用组播时,应注意的是TTL(生存周期Time To Live)值的设置。TTL值是允许路由器转发的最大数目,当达到这个最大值时,数据包就会被丢弃。如果使用默认值(默认值为1),则只能在子网中发送。可以通过UdpClient对象的Ttl属性直接设置TTL值,例如:
UdpClient myUdpClient = new UdpClient();
myUdpClient.Ttl = 50;
该语句设置TTL值为50,即最多允许50次路由器转发。
在UdpClient类中,使用JoinMulticastGroup方法将UdpClient对象和TTL一起加入组播组,使用DropMulticastGroup退出组播组。例如:
//创建UdpClient的实例并设置使用的本地端口号
UdpClient udpClient=new UdpClient(8001);
udpClient.JoinMulticastGroup(IPAddress.Parse("224.100.0.1"));
或者:
UdpClient udpClient=new UdpClient(8001);
udpClient.JoinMulticastGroup(IPAddress.Parse("224.100.0.1"), 50);
其中50为TTL值。
组播IP地址到MAC地址的映射
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路由器
224.0.0.6表示OSPF指定路由器
224.0.0.12表示DHCP服务器
2层的MAC地址是如何与3层的IP地址进行映射的咧?
通过将MAC地址的前25位强行规定为0100.5e,而后23位对应IP地址的后23位,而组播IP地址的前4位均相同,如
IP地址: 1110yyyy.yxxxxxxx.xxxxxxxx.xxxxxxxx
MAC地址: 00000001.00000000.01011110.0xxxxxxx.xxxxxxxx.xxxxxxxx
后面是相同的