计算机网络系列内容的学习目录 → \rightarrow →谢希仁计算机网络学习系列内容汇总。
数据链路层
■ MAC地址是以太网的MAC子层所使用的地址;
网际层
■ IP地址是TCP/IP体系结构网际层所使用的地址;
■ ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址;
■ 尽管IP地址和ARP协议属于TCP/IP体系结构的网际层 (而不属于数据链路层),但是它们与MAC地址存在一定的关系,并且我们日常的网络应用都离不开MAC地址、IP地址以及ARP协议。
因此,我们将这三者放在一起讨论。
■ 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址;
■ 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。 由于这类地址是用于媒体接入控制MAC(Media Access Contro),因此这类地址被称为MAC地址;
⋄ \diamond ⋄ MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址;
⋄ \diamond ⋄ MAC地址有时也被称为物理地址。请注意:这并不意味着MAC地址属于网络体系结构中的物理层!
例: 下列选项中,不属于物理层接口规范定义范畴的是( C )
A. 接口形状 B. 引脚功能 C. 物理地址 D. 信号电平
分析: MAC地址有时也被称为物理地址,但这并不意味着MAC地址属于网络体系结构中的物理层!
■ 一般情况下, 用户主机会包含两个网络适配器:有线局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
IEEE 802局域网的MAC地址格式:
1. 以下哪个地址是广播MAC地址( C )
A. 00-00-00-00-00-00
B. AB-CD-EF-11-22-33
C. FF-FF-FF-FF-FF-FF
D. 29-29-29-29-29-29
分析: FF-FF-FF-FF-FF-FF是广播MAC地址。
2. 以下哪个地址是多播MAC地址( B )
A. 00-00-00-00-00-00
B. A9-8B-7C-6D-5E-4F
C. FF-FF-FF-FF-FF-FF
D. 0A-1B-2C-3D-4E-5F
分析:
■ IP地址是因特网 (Internet) 上的主机和路由器所使用的地址,用于标识两部分信息:
⋄ \diamond ⋄ 网络编号:标识因特网上数以百万计的网络
⋄ \diamond ⋄ 主机编号:标识同一网络上不同主机(或路由器各接口)
■ 很显然, 之前介绍的MAC地址不具备区分不同网络的功能。
⋄ \diamond ⋄ 如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方式)。
⋄ \diamond ⋄ 如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用。
从网络体系结构看IP地址与MAC地址:
从网络体系结构的角度看看IP地址与MAC地址的封装位置。如下图所示,以五层原理体系结构为例。
应用层封装好的应用层报文将其向下交付给运输层,运输层看不懂也无需看懂应用层报文的结构与内容,用黑色表示,仅仅给其添加一个运输层首部。运输层将封装好的协议数据单元向下交付给网络层,网络层看不懂也无需看懂运输层协议数据单元的结构与内容,仅仅给其添加一个网络层首部。网络层将封装好的协议数据单元向下交付给数据链路层,数据链路层看不懂也无需看懂网络层协议数据单元的结构与内容,仅仅给其添加一个数据链路层首部和一个数据链路层尾部。数据链路层将封装好的协议数据单元向下交付给物理层,物理层看不懂也无需看懂数据链路层协议数据单元的结构与内容,仅仅将它们看作是比特流,以便将它们转换为相应的电信号发送到传输媒体。
由于IP地址属于网络体系结构中网络层的范畴,因此在网络层首部中应该封装有源IP地址和目的IP地址。相应的,由于MAC地址属于网络体系结构中数据链路层的范畴,因此在数据链路层首部中应该封装有源MAC地址和目的MAC地址。
数据包转发过程中IP地址与MAC地址的变化情况:
■ 数据包转发过程中源IP地址和目的IP地址保持不变;
■ 数据包转发过程中源MAC地址和目的MAC地址逐个链路(或逐个网络)改变。
例: 路由器R通过以太网交换机S1和S2连接两个网络,R的接口、主机H1和H2的IP地址与MAC地址如下图所示。若H1向H2发送一个IP分组P,则H1发出的封装P的以太网帧的目的MAC地址、H2收到的封装P的以太网帧的源MAC地址分别是( D )
A. 00-a1-b2-c3-d4-62 00-1a-2b-3c-4d-52 B. 00-a1-b2-C3-d4-62 00-1a-2b-3C-4d-61
C. 00-1a-2b-3c-4d-51 00-12-2b-3C-4d-52 D. 00-1a-2b-3C-4d-51 00-a1-b2-c3-d4-61
分析:
1. 下图中各主机和路由器各接口的MAC地址和所配置的IP地址都已标注在它们的旁边,假设主机H1要给H2发送一个IP数据报,该IP数据报会被封装成以太网帧进行发送,则当H2收到该帧时,其首部中的源MAC地址以及所封装的IP数据报首部中的源IP地址分别是( B )
A. 00-a1-b2-c3-d4-61 192.168.1.254 B. 00-a1-b2-c3-d4-61 192.168.0.1
C. 00-1a-2b-3c-4d-51 192.168.0.1 D. 00-1a-2b-3c-4d-51 192.168.1.254
分析: 在数据包的转发过程中,源IP地址和目的IP地址始终保持不变;而源MAC地址和目的MAC地址逐段链路(或逐个网络)改变。
MAC地址属于数据链路层范畴,IP地址属于网络层范畴。
问题: 如何通过IP地址找到其相应的MAC地址?
这就是地址解析协议ARP所要实现的主要功能。
网络层以上的协议用IP地址来标识网络接口,但以太数据帧传输时,以物理地址来标识网络接口。因此我们需要进行IP地址与物理地址之间的转化。对于IPv4来说,我们使用ARP地址解析协议来完成IP地址与物理地址的转化(IPv6使用邻居发现协议进行IP地址与物理地址的转化,它包含在ICMPv6中)。
ARP协议提供了网络层地址(IP地址)到物理地址(mac地址)之间的动态映射,ARP协议是地址解析的通用协议。
ARP协议只能在一段链路或一个网络上使用,而不能跨网络使用。
ARP协议工作原理:
1. 每个主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址之间的对应关系。
2. 主机(网络接口)新加入网络时(也可能只是MAC地址发生变化,接口重启等), 会发送免费ARP报文把自己IP地址与MAC地址的映射关系广播给其他主机。
3. 网络上的主机接收到免费ARP报文时,会更新自己的ARP缓冲区。将新的映射关系更新到自己的ARP表中。
4. 某个主机需要发送报文时,首先检查 ARP 列表中是否有对应 IP 地址的目的主机的 MAC 地址,如果有,则直接发送数据;如果没有,就向本网段的所有主机发送 ARP 数据包,该数据包包括的内容有:源主机 IP 地址,源主机 MAC 地址,目的主机的 IP 地址等。
5. 当本网络的所有主机收到该 ARP 数据包时:
(1)首先检查数据包中的 IP 地址是否是自己的 IP 地址,如果不是,则忽略该数据包。
(2)如果是,则首先从数据包中取出源主机的 IP 和 MAC 地址写入到 ARP 列表中,如果已经存在,则覆盖。
(3)然后将自己的 MAC 地址写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。
6. 源主机收到 ARP 响应包后。将目的主机的 IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。
总结:
1. 下列情况需要发送ARP请求的是( C )
A. 主机需要接收信息,但ARP高速缓存表中没有源IP地址与MAC地址的映射关系
B. 主机需要接收信息,但ARP高速缓存表中已有源IP地址与MAC地址的映射关系
C. 主机需要发送信息,但ARP高速缓存表中没有目的IP地址与MAC地址的映射关系
D. 主机需要发送信息,但ARP高速缓存表中已有目的IP地址与MAC地址的映射关系
分析: 主机需要发送信息,但ARP高速缓存表中没有目的IP地址与MAC地址的映射关系时,需要发送ARP请求。
2. 主机A发送IP数据报给主机B,途中经过了8个路由器,则在此过程中使用ARP的次数为( B )
A. 8 B. 9 C. 10 D. 11
分析: 主机用1次,其余路由器各1次。
途经8个路由器,那么在发送过程中开始发送,原主机会用1次ARP地址解析协议找到第1个路由器的物理地址,每经历1个路由器就会使用1次ARP地址解析协议,故总共会用到8次。