天天看点

TCP/IP-浅谈单播、广播、组播、IP地址、MAC地址、交换机10M以太网100M以太网IP层为什么既需要mac地址又需要ip地址

首先必须明白两点:

  • 网络的MAC层提供单播,广播,组播服务,网络是否具备单播,广播,组播能力,由MAC层是否提供单播,广播,组播服务决定
  • 网络的IP层设置单播,广播,组播方式,根据IP地址,包括IP单播地址,IP广播地址,IP组播地址,IP层的单播,广播,组播在送往MAC层时,要在MAC层进行映射

10M以太网

10M的以太网就是只能提供广播MAC服务的网络,所以即使它根据IP地址填写了单播MAC地址,但是它的收发实际上都是广播的

100M以太网

100M的以太网不同,100M以上的以太网必须以交换机作为组网和转发的方式

IP层

如果IP层给出的是单播IP地址

那么MAC层会根据邻居列表里的IP-MAC对应关系把目标MAC地址填到MAC层,然后交换机根据目标MAC地址在交换机的MAC-PORT转发表里查找到对应的端口号,把数据包转发到对应的端口,实现单播

如果IP层给出的是广播IP地址

那么MAC层会根据广播IP地址把MAC层设置为广播,把MAC地址设置为广播MAC地址,交换机根据广播MAC地址,会在每个端口(发端口除外)复制一份数据包,以使得这个包可以到达整个广播域里的每个主机,实现广播,其本质是交换机的泛洪转发

如果IP层给出的是组播IP地址

那么MAC层会根据组播IP地址把MAC层设置为组播,把MAC地址设置为组播MAC地址,交换机根据组播MAC地址,查找组播组内的所有主机,再根据MAC-PORT转发表查找它们的端口号,把数据包转发到它们的端口,实现组播

通过IGMP协议实现加入或离开组播组

为什么既需要mac地址又需要ip地址

几种说法

  • 在开始学习以太网协议时,接触的书籍,诸如<<图解TCP IP>>,里面的解释是这样的
TCP/IP-浅谈单播、广播、组播、IP地址、MAC地址、交换机10M以太网100M以太网IP层为什么既需要mac地址又需要ip地址
  • 不过我并不喜欢这个解释,或者说这个说法并不能完全解答为什么mac地址和ip地址在网络通信中缺一不可,所以我又在知乎上看到了大神的见解,我更倾向于这个
TCP/IP-浅谈单播、广播、组播、IP地址、MAC地址、交换机10M以太网100M以太网IP层为什么既需要mac地址又需要ip地址
  • 还有的说法是ip地址属于网络层,网络层属于操作系统,是软件,而mac地址是数据链路层,数据链路层属于设备驱动程序,是硬件。ip地址和mac地址实现了从软件到硬件驱动

我的理解

在计算机和网络刚成型时,只有几台设备互联,只需要微型芯片和网卡,就可以实现网络通信

后来随着接入设备较多,出现了交换机,实现了局域网二层转发,这时候还是只需要mac地址就足够

随着设备越来越多,如果所有设备同用一个广播域,就会造成网络负担,而mac并不能划分网段

这时候需要把网络分割成不同的局域网,就有了ip地址,它由网络地址和主机地址组成,它可以在网络层划分网段

所以,我是从网络发展的角度分析mac地址和ip地址的必要性,也许网络的发展并不是完全如此,有兴趣的可以自己查阅网络发展史

继续阅读