事实上,并不是节点(即主机或路由器)具有MAC地址,而是节点的适配器具有链路层地址,LAN地址有各种不同的称呼:LAN地址、物理地址和MAC地址。因为MAC地址看起来是最为流行的术语,所以将链路层地址称为MAC地址,MAC地址长度为6个字节,通常采用十六进制表示法。另外MAC地址有一个有趣的性质是,没有两个适配器具有相同的地址。考虑到适配器是由许多不同国家的不同公司生产的,这看起来似乎是件神奇之事。适配器的MAC地址具有扁平结构(这与层次结构相反)。有一个特殊的MAC广播地址即FF-FF-FF-FF-FF-FF。
这里可以看出来,节点除了网络层地址之外还有MAC地址,这有几个原因,首先,LAN是为任意网络层协议而设计的,而不只是为了IP和因特网。其中从设计原则角度来讲,保证了各层的独立性,打个比方,如果链路层地址由网络层地址替代,那么网络层地址必须存储在适配器的RAM中,并且每次适配器移动(或加电)时都要重新进行配置。还有就是对各种协议的支持,因为很多协议是采用网络层地址,有些协议是采用链路层地址。所以我们现在有3种类型地址:应用层的主机名、网络层的IP以及链路层的MAC地址。
因为存在网络层地址和链路层地址,所以需要在它们之间进行转换。对于因特网而言,这是地址解析协议(ARP)的工作。现在假设IP地址为222.222.222.220的节点要发送IP数据报到节点222.222.222.222。那么发送节点如何确定IP为222.222.222.222的MAC地址呢?它使用了一个ARP表,该表保存IP地址对应的MAC地址信息,一般ARP表包含IP地址信息、MAC地址信息和生存期(TTL)值。如果目的节点的信息在ARP表中,这个任务很容易完成。但是如果ARP表里没有目的节点的信息。那么发送节点会构造一个ARP分组的特殊分组,将包括发送节点和目的节点的IP地址和MAC地址等相关信息,通过广播地址作为帧的目的地址,传输进子网中。那么接收到这些信息的节点将比较匹配,如果信息匹配成功,该节点将返回一个ARP响应包,然后发送节点更新自己ARP表,接着发送它的IP数据报。关于ARP协议有两件有趣的事情需要注意。首先,查询ARP报文是在广播帧中发送的,而响应ARP报文在一个标准帧中发送。那么如果发送的数据报要到子网以外的节点呢?
集线器是一种物理层设备,它作用于各比特而不是作用于帧。当表示一个0或一个1的比特到达一个接口时,集线器只是重新生成这个比特,将其能量强度放大,并将该比特向其他所有接口传输出去。因此具有基于集线器星型拓扑的以太网也是一个广播LAN。
以太网帧结构
前同步码 | 目的地址 | 源地址 | 类型 | 数据 | CRC |
数据字段:最大传输1500字节,最小46字节。
目的地址:6字节,目的适配器的MAC地址。
源地址:6字节,本适配器的MAC地址。
类型字段:2字节,允许以太网复用多种网络层协议。
循环冗余检测:4字节,检查帧中是否引入差错。
前同步码:8字节,前7个字节都是10101010,最后一个字节是10101011,用于将发送方和接收方的时钟进行同步。
所有的以太网技术都向网络层提供无连接服务。
待续……