交换局域网
链路层寻址和ARP
MAC地址
- 又称LAN地址,物理地址;
- 主机,路由器具有链路层地址。事实上,主机或路由器上的网络适配器具有链路层地址;
- 具有多个网卡的主机或路由器将具有多个链路层地址(同时也具有多个网络层地址,即IP);
- 链路层交换机的接口不具有链路层地址;(网络层交换机即路由器的接口具有网络层地址即IP)
- 对大多数局域网,MAC地址长度为6字节,常用十六进制数表示,,用“-”分隔每个字节;
- MAC被设计为永久的,但用软件改变一块网络适配器的MAD地址是可能的;
- 网络适配器的MAC地址是唯一的;
- IEEE管理MAC地址空间,网络适配器厂商在生产适配器之前,需向其象征性地支付费用以获得一块地址空间,该地址空间的前24Bit固定;后24bit由厂商为自己的适配器分配;
- 适配器的MAC地址具有扁平结构而非层次结构;
发送帧时,网卡目的网卡的MAC地址插入帧中,并将该帧发生到局域网;
接收帧时,网卡检查收到的帧的目的MAC地址是否与自身匹配,若不匹配则丢弃;
MAC广播地址 特殊目的MAC地址,表明该帧发给局域网内的所有网卡。6字节MAC局域网中,广播地址为FF-FF-FF-FF-FF-FF;
主机和路由器网卡双地址
网卡同时具有IP地址和MAC地址,为什么?
- 局域网为任意的网络层协议而设计,并非仅限于IP协议和因特网;
- 使用可变的网络层地址会造成麻烦;
- 若不使用任何链路层地址,而将链路层帧的数据直接交付给网络层,由网络层负责匹配,这样做会给上层带来较大负担(对每个帧都要中断网络层);
地址解析协议(Address Resolution Protocol,ARP)
ARP服务
- 因特网通过地址解析协议实现网络层地址(IP)和链路层地址(MAC)间的转换;
- 端系统的ARP模块将其所在局域网上的任一IP地址作为输入,将相应MAC地址作为输出;
- ARP为同一个子网上的主机和路由器解析IP地址;
- ARP协议跨越网络层和链路层边界;
- ARP协议即插即用,通过ARP解析自动建立,无需管理员配置;
ARP表
- 每台主机或路由器在内存中存放一张ARP表,该表包含IP地址到MAC地址的映射;
- 表项包含IP地址,MAC地址,寿命TTL(过期时间,时长常为20分钟)三个字段;
- ARP表事实上是一个缓存,它缓存了ARP解析的数据;
ARP解析
假定要主机A要查询IP Ib 的MAC
- 检查ARP表中有无 IP Ib 的表项,若有,返回相应地址;若无,进入2;
- 向网卡传递一个ARP查询分组,该分组的源包括主机A的IP和MAC,该分组的目的地包括IP Ib和MAC广播地址;
- ARP查询分组在子网中传播,被每个其它网卡接收;
- 每个网卡接收该查询分组并将数据交付各自的ARP模块,ARP模块检查查询分组中的目标IP,若目标IP不匹配则丢弃,若匹配,则向查询主机发送一个ARP响应分组,通过自身的MAC;
- 主机A收到ARP响应,更新ARP表;
跨子网数据报
- 当向其它子网发送数据报时,发送主机不可能知晓最终目的地的MAC地址,因为ARP协议只解析同一子网内的IP;
- 事实上,发送主机设置数据报的目标IP是最终目的主机,但目标MAC却是同一子网内的第一跳路由器在该子网一侧的网卡的MAC,该MAC也是通告ARP获得;
- 路由器接收到来自子网A的数据报后,为之设置恰当的源和目的MAC地址并转发到另一个子网中的接口;