交换局域网
1.1 链路层寻址和ARP
1.1.1 MAC地址
并不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址。但是注意链路层交换机并不具有与它们接口相关联的链路层地址。如下图所示:
这是因为链路层交换机的任务是在主机和路由器间承载数据报,它是透明执行该任务的。
链路层地址有多个称呼:LAN地址,物理地址,MAC地址,该地址有6个字节,使用16进制表示每个字节。适配器的MAC地址具有扁平化结构,即无论适配器到哪里都不会变化。不同于IP地址的层次化结构,IP地址会改变。
1.1.2 地址解析协议
将IP地址和MAC地址进行转换,就是地址解析协议(ARP)。如下图所示:
注意,局域网上每个接口都有一个IP地址和MAC地址。
假设IP地址为222.222.222.220的主机要向主机222.222.222.222发送IP数据报。该源必须要向它的适配器提供目的主机的MAC地址,然后发送适配器构建一个包含目的地MAC地址的链路层帧,并放进局域网。那如何获得222.222.222.222的MAC地址?
DNS可以将主机名解析为IP地址,而ARP能将一个IP地址解析为一个MAC地址。但是DNS可以为任何地方的主机解析主机名,ARP只能为同一个子网上的主机和路由器解析IP地址。每台主机或路由器都有一个ARP表。下图是222.222.222.220的可能的ARP表:
其中,TTL指示了从表中删除每个映射的时间,通常为20分钟。这张表不必为该子网上的每台主机和路由器包含表项。
当表中没有目的主机的表项时,处理步骤如下:
- 发送方构建一个ARP分组,该分组包括发送方和接收方的IP地址及发送方MAC地址,且ARP查询分组和响应分组有相同的格式。
- 源主机向它的适配器传递一个ARP查询分组,且指示适配器使用MAC广播地址(即FF-FF-FF-FF-FF-FF)来发送这个分组。
- 适配器在链路层帧中封装这个ARP分组,并将该帧传输进子网中。
- 子网上的其他适配器都能接受到该帧,且适配器都把该帧的ARP分组向上传递给ARP模块。
- ARP模块检查它的IP地址是否和ARP分组中的目的地址一致。
- 匹配的主机给查询主机回一个希望映射的响应ARP分组(响应ARP报文在一个标准帧中发送,,查询报文在广播帧中发送)。
- 查询主机就可以更新它的ARP表了。
可以把ARP协议认为是跨越链路层和网络层边界的协议,因为它既有IP地址,也有MAC地址。
1.1.3 发送数据报到子网以外
如下图所示:
首先要明白路由器有两个接口,所以它有两个IP地址,两个ARP模块和两个适配器,每个适配器有自己的MAC地址。
此时,主机111.111.111.111要向主机222.222.222.222发送一个IP数据报。
- 数据报首先发送给路由器接口111.111.111.110,这个步骤需要ARP获得路由器的MAC地址。
- 将帧发送给路由器后,路由器查询转发表,找到该数据报需要通过接口222.222.222.220转发。
- 然后该接口把数据报传递给适配器,适配器封装到一个新的帧中,将该帧发送进子网2中,路由器通过ARP获得目的主机的MAC地址。
1.2 以太网
以太网是第一个广泛部署的高速局域网。集线器是一种物理设备,它作用于每个比特而不是作用于帧,但是某集线器同时从两个不同的接口接收到帧,将出现碰撞,生成该帧的结点必须重新传输该帧。而交换机不仅是无碰撞的,还是存储转发的。
1.2.1 以太网帧结构
结构如下图所示:
- 数据字段(46字节-1500字节):以太网的最大传输单元(MTU)是1500字节。该字段承载了IP数据报(也可以承载其他网络层分组),所以IP数据报超过1500字节就分片。最短长度是46字节,所以如果IP数据报小于46字节就被填充到46字节。采用填充时,传递到网络层的数据就包括IP数据报和填充部分,然后网络层使用IP数据报首部中的长度字段去除填充部分。
- 类型字段(2字节):类型字段允许以太网复用多种网络层协议。
- CRC(4字节):使得接收适配器检测帧中是否引入了差错。
- 前同步码(8字节):该同步码前7个字节的值都是10101010,用于唤醒接收适配器。
以太网向网络层提供不可靠服务,因为缺乏可靠的传输所以导致以太网便宜且简单。
1.3 链路层交换机
交换机本身对于子网中的主机和路由器是透明的,且帧到达交换机的输出接口的速率可能暂时会超过该接口的链路容量,所以输出接口设有缓存。
1.3.1 交换机转发和过滤
过滤决定一个帧应该转发到某个接口还是将其丢弃的一个交换机的功能。转发是决定一个帧应该被导向哪个接口,并将该帧移动到那些接口的交换机功能。这两个功能都是借助交换机表完成的,该表包含局域网上某些主机和路由器部分的表项。如下表所示:
假设目的地址为DD-DD-DD-DD-DD-DD的帧从交换机接口x达到。有3种可能的情况:
- 表中没有对DD-DD-DD-DD-DD-DD的表项时,交换机向除了接口x外的其他接口前的输出缓存转发该帧的副本,即广播该帧。
- 表中有一个表项将目的MAC地址与接口x联系,此时交换机执行过滤功能将该帧丢弃(意味着该帧已经广播过了)。
- 表中有一个表项将目的MAC地址与接口y≠x联系起来,则交换机将该帧放到接口y前的输出缓存完成转发。
1.3.2 自学习
交换机表是自动,动态和自治地建立的,无需人员或配置协议的干扰,所以交换机是即插即用设备。实现自学习的过程如下:
- 交换机表初始为空。
- 对于每个接口接受到的每个入帧,交换机在其表中存储。
- 如果一段时间后,交换机没有接受到以该地址为源地址的帧,就删除这个地址。
1.3.3 交换机和路由器比较
交换机即插即用,但是交换机对于广播风暴不提供任何保护措施。
路由器对于广播风暴提供了防火墙保护,但是路由器和连接到它们的主机都需要人为配置IP地址。
对于几百台主机,交换机足够了。而对于几千台以上的网络,除了交换机还包括路由器。