我们都知道,IP地址在互联网中是用于标识主机的逻辑地址,而MAC地址则是用于标识网卡的物理地址。那他们之间的区别是什么呢?为什么需要两种地址?只有IP地址 不行吗?
IP地址是网络层和以上各层使用的地址,是逻辑地址(称IP地址为逻辑地址是 因为IP地址是用软件实现的)。
MAC地址是数据链路层使用的地址,是物理地址(MAC地址已固化在网卡上的ROM中)。
在发送数据时,数据从高层下到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给数据链路层,就被封装成MAC帧。MAC帧在传送时使用的源地址和目的地址都是MAC地址,这两个MAC地址都写在MAC帧的首部中。
连接在通信链路上的设备(主机或路由器)在收到MAC帧时,根据MAC帧首部中的MAC地址决定收下或丢弃。只有在剥去MAC帧的首部和尾部后把MAC层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。
总之,IP地址放在IP数据报的首部,而MAC地址则放在MAC帧的首部。在图4-15中, 当IP数据报插入到数据链路层的MAC帧以后,整个的IP数据报就成为MAC帧的数据, 因而在数据链路层看不见数据报的IP地址。
IP地址(逻辑地址)
IP(Internet Protocol address)是互联网协议地址的简称。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。
IP协议分两种版本:
- IPv4是目前最广泛使用的IP协议版本,它使用32位二进制数来表示一个IP地址,通常以点分十进制形式来显示,例如192.168.1.1。
-
一个IPv4地址由两部分组成:网络号和主机号。
- 网络号表示该设备所属的网络,
- 主机号表示该设备在该网络中的编号。
-
不同长度的网络号可以划分出不同等级的网络,例如A类、B类、C类等。为了方便表示不同长度的网络号,IPv4引入了子网掩码(subnet mask)的概念,它是一个32位二进制数,其中与网络号对应的位为1,与主机号对应的位为0。例如255.255.255.0就是一个子网掩码,表示前24位为网络号,后8位为主机号。
-
-
- IPv6是为了解决IPv4地址耗尽问题而设计的新一代IP协议版本,它使用128位二进制数来表示一个IP地址,通常以冒分十六进制形式来显示,例如2001:db8::1。
-
一个IPv6地址由两部分组成:前缀和接口标识符。
- 前缀表示该设备所属的网络或子网,
- 接口标识符表示该设备在该网络或子网中的编号。
-
IPv6没有固定长度的网络号或主机号,而是使用前缀长度(prefix length)来表示前缀占用多少位。例如2001:db8::1/64就表示前64位为前缀,后64位为接口标识符。
-
MAC地址(物理地址、硬件地址)
MAC(Media Access Control address)是媒体访问控制地址的简称。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。
一般情况下,用户主机会包含两个网卡,有线网卡和无线网卡。每个网卡有一个全球唯一的MAC地址。而交换机和路由器往往有更多的网络接口,所以有更多的MAC地址。综上,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
地址解析协议 - ARP
ARP通过机器的IP地址,找到其相应的MAC地址。
我们知道,网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终还是必须使用链路层的MAC地址。IP地址和下面链路层的MAC地址之间由于格式不同而不存在简单的映射关系(例如,IP地址有32位,而链路层的MAC地址是48位)。此外,在一个网络上可能经常会有新的主机加入进来,或撤走一些主机。更换网络适配器也会使主机的 MAC地址改变(请注意,主机的MAC地址实际上就是其网络适配器(网卡)的MAC地址)。ARP解决这个问题的方法是在主机的ARP高速缓存中存放一个从IP地址到MAC地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。
每一台主机都设有一个ARP高速缓存(ARP cache),里面存有本局域网上的各主机和路 由器的IP地址到MAC地址的映射表,这些都是该主机目前知道的一些MAC地址。
为什么使用两种地址?
由于全世界存在着各式各样的网络,它们使用不同的MAC地址。要使这些异构网络能够互相通信就必须进行非常复杂的MAC地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事。即使是对分布在全世界的以太网MAC地址进行寻址,也是极其困难的。
然而IP编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,即使必须多次调用 ARP来找到MAC地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的。
因此,在虚拟的IP网络上用IP地址进行通信给广大的计算机用户带来了很大的方便。