引言
前面三篇笔记中,我介绍了IP地址的三种编址方式,依次是分类的IP编址、划分子网(改进分类编址)及无分类IP地址。本篇笔记我们将介绍硬件地址与IP地址的关系,真正理解“虚拟互连”的含义
IP地址与硬件地址
使用层次不同
在学习IP地址时,很重要的一点就是清楚IP地址与硬件地址的区别,下图说明了这两种地址的区别。从层次的角度上,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。(说IP是逻辑地址,因为IP地址是用软件实现的)
在局域网中,由于硬件地址已固化在网卡的ROM中,因此常常将硬件地址称为物理地址。因为在局域网的MAC帧中源地址和目的地址都是硬件地址,因此硬件地址又称为MAC地址。因此,物理地址、硬件地址和MAC地址常常作为同义词
在发送数据时,数据从高层下到低层,然后才在数据链路上传输。使用IP地址的IP数据报一旦交付给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部中
连接在通信链路上的设备(主机或者路由器)在接收MAC帧时,其根据的是MAC帧的首部中的硬件地址。在数据链路层中,看不到隐藏在MAC帧中的数据中的IP地址。只有在剥去MAC帧的首部和尾部后,把MAC层的数据报上交给网络后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址
实例
图中画的是三个局域网用两个路由器R1和R2互连起来,现在主机H1要和主机H2通信。这两个主机的IP地址分别是IP1和IP2,而它们的硬件地址分别是HA1和HA2(HA:Hardware Address)。通信的途径是:H1->经过R1转发->再经过R2转发->H2。路由器同时连接在两个局域网内,因此它有两个硬件地址,即HA3和HA4,同理,路由器R2也有两个硬件地址,HA5和HA6
从虚拟的IP层看IP数据报的流动
如上图所示,在IP层抽象的互联网上只能看到IP数据报。虽然IP数据报要经过路由器R1和R2的两次转发,但在它的首部中源地址和目的地址始终分别是IP1和IP2。数据报中间经过的两个路由器的IP地址并不出现在IP数据报的首部中。
虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择
从数据链路层看MAC帧的流动
在局域网的链路层,只能看见MAC帧。IP数据报被封装在MAC帧中。MAC帧在不同的网络上传送时,其MAC帧首部中的源地址和目的地址要发生变化
开始在H1到R1间传送时,MAC帧首部写的是从硬件地址HA1发送到硬件地址HA3,路由器R1收到此MAC帧后,在转发时要改变首部中的源地址和目的地址((HA4 -> HA5)。同理,路由器R2收到此帧后,再改变一次MAC帧的首部,写入新的硬件地址(HA6 -> HA2),然后在R2到H2之间传送。MAC帧的首部这种变化,在上面的IP层也是看不见的。因为,在IP层,已经剥去了MAC帧的首部和尾部,没有相关信息了
从协议栈的层次上看数据的流动
这是数据真实传输过程中的简单抽象。在整个传送过程中,不改变IP数据报的源IP地址与目的IP地址,路由器只根据目的站IP地址的网络号进行路由选择。但MAC帧在不同的网络上传输时,其MAC帧首部中的源地址和目的地址要发生改变。这样降低了异构网络进行硬件地址转换的难度,便于因特网上面的两台主机进行通信。学了硬件地址与IP地址的关系,才真正理解了虚拟互联的概念