《计算机网络微课堂》3-7-2 IP地址

在上节课中我们介绍了 MAC 地址的相关知识,‍‍本节课我们介绍 IP 地址的相关知识,需要说明的是 IP 地址属于网络层的范畴,‍‍而非数据链路层的范畴。

之所以在数据链路层这一章的讲解中引入 IP 地址,‍‍是因为在我们日常的大多数网络应用中,属于数据链路层的 MAC 地址和属于网络层的 IP 地址‍‍都在使用,他们之间存在一定的关系。IP 地址的相关内容比较多,‍‍例如分类的 IP 地址,划分子网的 IP 地址,构造超网的 IP 地址等,‍‍这些内容我们将在网络层这一章详细介绍。本节课我们主要介绍 IP 地址的作用。


区分网络编号

‍‍IP 地址是英特网上的主机和路由器所使用的地址,用于标识两部分信息:‍‍

  • 一部分是网络编号,用来标识因特网上数以百万计的网络
  • 另一部分是主机编号,‍‍用来标识同一网络上不同主机或路由器各接口

如图所示。‍‍假设这是因特网的一部分,我们给网络 N8 上的两台主机各分配了一个 IP 地址,‍‍给路由器 R4 连接该网络的接口,也分配了一个 IP 地址,‍‍这三个 IP 地址的前三个 10 进制数是相同的,也就是网络 N8 的编号。‍‍而最后一个 10 进制数各不相同,是网络 N8 上各主机和路由器接口的编号。换句话说,‍‍同一个网络上的各主机和路由器的各接口的 IP 地址的网络号部分应该相同,‍‍而主机号部分应该互不相同。

又例如我们给网络 N9 上的各主机和路由器的接口,‍‍各分配了一个 IP 地址,这三个 IP 地址的前三个 10 进制数是相同的,也就是网络 N9 的编号。‍‍而最后一个 10 进制数各不相同,是网络 N9 上各主机和路由器接口的编号。‍‍

因特网中不同网络的网络编号必须各不相同。例如在本例中,网络 N8 的编号为 192‍‍.168.0,而网络 N9 的编号为 192.168.1。‍‍需要提醒大家注意的是,在一个 IP 地址中,哪部分是网络编号,哪部分是主机编号,‍‍并不都和本例相同,我们将在后续网络层这一章进行详细介绍。‍‍

IP 地址与 MAC 地址的封装位置

很显然之前介绍的 MAC 地址‍‍不具备区分不同网络的功能,而 IP 地址具备这样的功能,如果只是一个单独的网络,不接入因特网,‍‍可以只使用 MAC 地址,但这并不是一般用户的常见应用方式。

如果主机所在的网络要接入因特网,‍‍则 IP 地址‍‍和 MAC 地址都需要使用。接下来我们从网络体系结构的角度,‍‍看看 IP 地址与 MAC 地址的封装位置。我们以 5 层原理体系结构为例:

  • ‍这是应用层封装好的应用层,报文将其向下交付给运输层
  • 运输层看不懂,‍‍也无需看懂应用层报文的结构与内容。我们用黑色表示,仅仅给其添加一个运输层首部,‍‍运输层将封装好的协议数据单元向下交付给网络层‍‍
  • 网络层看不懂,也无需看懂运输层协议数据单元的结构与内容,仅仅给其添加一个网络层首部,‍‍网络层将封装好的协议数据单元向下交付给数据链路层
  • 数据链路层看不懂,也无需看懂网络层协议数据单元的结构与内容,‍‍仅仅给其添加一个数据链路层首部和一个数据链路层尾部,数据链路层将封装好的协议数据单元‍‍向下交付给物理层
  • 物理层看不懂,也无需看懂数据链路层协议数据单元的结构与内容,‍‍仅仅将他们看作是比特流,以便将他们转换为相应的电信号,发送到传输媒体‍‍
  • 由于 IP 地址属于网络体系结构中网络层的范畴,因此在网络层首部中应该封装有原 IP 地址‍‍和目的 IP 地址
  • 相应的,‍‍由于 MAC 地址属于网络体系结构中数据链路层的范畴,因此‍‍在数据链路层首部中应该封装有源 MAC 地址和目的 MAC 地址‍‍

转发过程中 IP 地址与 MAC 地址的变化情况

接下来我们来看看数据包,‍‍在转发过程中 IP 地址与 MAC 地址的变化情况,如图所示为了简单起见,‍‍图中各主机和路由器各接口的 IP 地址和 MAC 地址用比较简单的标识符来表示,‍‍而并未使用实际的 IP 地址和 MAC 地址。

‍‍假设主机 H1 要给主机 H2 发送一个数据包,我们从网络体系结构的角度‍‍来看看数据包在传输过程中,IP 地址与 MAC 地址的变化情况。

需要注意的是‍‍主机中有完整的网络体系结构,而路由器的最高层为网络层,‍‍它没有网络体系结构中的运输层和应用层,我们所关注的重点是网络层封装 IP 数据报时,‍‍原 IP 地址和目的 IP 地址应该填写什么?数据链路层封装帧时,‍‍源 MAC 地址和目的 MAC 地址应填写什么?

因此‍‍我们忽略网络体系结构中,除网络层和数据链路层外的其他各层,可以想象成‍‍各网络层进行水平方向的逻辑通信,各数据链路层进行水平方向的逻辑通信:

  • 主机 H1 将数据包发送给路由器 R1,在网络层封装的 IP 数据报首部中,‍‍源 IP 地址应填写主机 H1 的 IP 地址 IP1‍‍,目的 IP 地址应填写主机 H2 的 IP 地址 IP2,也就是从 IP1 发送给 IP2‍‍。而在数据链路层封装的帧首部中,源 MAC 地址应填写主机 H1 的 MAC 地址 MAC1,‍‍目的 MAC 地址应填写路由器 R1 的 MAC 地址 MAC3,也就是从 MAC1 发送给 MAC3
  • 路由器 R1‍‍将收到的数据包转发给路由器 R2,在网络层封装的 IP 数据报首部中,源 IP 地址仍然填写主机 H1 的 IP 地址,IP1‍‍目的 IP 地址仍然填写主机 H2 的 IP 地址 IP2,也就是从 IP1 发送给 IP2。‍‍而在数据链路层封装的帧首部中,源 MAC 地址应填写路由器 R1 的 MAC 地址 MAC4,目的 MAC 地址应填写路由器 R2 的 MAC 地址 MAC5,也就是从 MAC4 发送给 MAC5‍‍
  • 路由器 R2 将收到的数据包转发给主机 H2,‍‍在网络层封装的 IP 数据报首部中,源 IP 地址仍然填写主机 H1 的 IP 地址 IP1,‍‍目的 IP 地址仍然填写主机 H2 的 IP 地址 IP2,也就是从 IP1 发送给 IP2;‍‍而在数据链路层封装帧首部时,源 MAC 地址应填写路由器 R2 的 MAC 地址 MAC6,‍‍目的 MAC 地址应填写主机 H2 的 MAC 地址 MAC2,也就是从 MAC6 发送给 MAC2‍‍

通过本例可看出在数据包转发过程中,源 IP 地址和目的 IP 地址始终保持不变,‍‍而源 MAC 地址‍‍和目的 MAC 地址逐个链路或逐个网络改变:

  • 主机 H1 知道应该把数据包传给 R1,‍‍由 R1 帮其把数据包转发出去,H1 知道 R1 相应接口的 IP 地址为 IP3,‍‍但不知道其对应的 MAC 地址是什么
  • 路由器 R1 知道应该把数据包转发给 R2,‍‍R1 知道 R2 相应接口的 IP 地址为 IP5,但不知道其对应的 MAC 地址是什么
  • 路由器 R2 直到应该把数据包传给主机 H2,R2 知道 H2 的 IP 地址为 IP2,‍‍但不知道其对应的 MAC 地址是什么
  • 有的同学可能会对这部分内容产生疑问,‍‍请大家目前先权且这么认可,我们将在后续的网络层这一章详细介绍

‍‍对于本地主机 H1、路由器 R1 和 R2 都存在一个共同的问题,那就是知道 IP 地址,‍‍但不知道其相应的 MAC 地址,如何通过 IP 地址找出其对应的 MAC 地址,‍‍这是我们下节课将要介绍的地址解析协议 ARP 所要实现的功能。‍‍


MAC 地址和 IP 地址相关的练习题:计算机专业考研全国统考,‍‍计算机网络部分‍‍2018 年的题 37,答案是选项 D

我们来一起分析一下,我们之前刚刚介绍过,‍‍在数据包的转发过程中,源 IP 地址和目的 IP 地址始终保持不变,而源 MAC 地址‍‍和目的 MAC 地址逐段链路或逐个网络改变。

针对本题我们来一起填写下表:‍‍

  • 主机 H1 将数据包传输给路由器 r‍‍。在网络层封装 IP 数据报时,在其首部的源 IP 地址字段填入主机 H1 的 IP 地址,‍‍目的 IP 地址字段,填入主机 H2 的 IP 地址。‍‍
  • 在数据链路层封装 market 时,‍‍在其首部的原 MAC 地址字段填入主机 H1 的 MAC 地址,目的 MAC 地址字段,‍‍填入路由器 R 相应接口的 MAC 地址,
  • 路由器 R 数据包转发给主机 H2。‍‍在网络层封装 IP 数据报时,在其首部的源 IP 地址字段仍然填入主机 H1 的 IP 地址,‍‍目的 IP 地址字段‍‍仍然填入主机 H2 的 IP 地址
  • 在数据链路层封装 MAC 帧时,在其手部的原 Mark 地址字段,‍‍填入路由器 R 相应接口的 Mac 地址,目的 MAC 地址字段填入主机 H2 的 MAC 地址。



将本节课的内容小结如下:[

posted @ 2024-05-26 15:09  peterjxl  阅读(6)  评论(0编辑  收藏  举报