前文学习了IP地址,现在我们来看下硬件地址,以及与IP地址的区别。
从层次的角度来看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。
在发送数据时,数据从高层下到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在了MAC帧的首部中。
连接在通信链路上的设备(主机或路由器)在收到MAC帧时,根据MAC帧首部中的硬件地址决定收下或丢弃。只有在剥去MAC帧的首部和尾部,把MAC层的数据上交给网络层后,网络层才能在IP数据报的首部中找到源IP地址和目的IP地址。
总之,IP地址放在IP数据报的首部,而硬件地址则放在MAC帧的首部。在网络层和网络层以上使用的是IP地址,而数据链路层及以下使用的是硬件地址。
强调以下几点:
在IP层抽象的互联网上只能看到IP数据报。
虽然在IP数据报首部有源IP地址,但路由器只根据目的站IP地址的网络号进行路由选择。
在局域网的链路层,只能看见MAC帧,IP数据报被封装在MAC帧中。MAC帧在不同网络上传送时,其MAC帧首部中的源地址和目的地址在发生变化。
尽管互连在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或路由器之间的通信。“屏蔽”是一个很有用,很普遍的基本概念。
思考两个问题:
(1)主机或路由器怎样知道应当在MAC帧的首部填入什么样的硬件地址?
(2)路由器中的路由表是怎样得出的?