[计算机网络]-链路层-交换局域网

前言

交换局域网 中,所有站点都连接到一个交换式集线器或局域网交换机上。而交换式集线器或局域网交换机具有交换功能,当工作站需要通信时,交换式集线器或局域网交换机能同时连通许多端口,协调这些工作站,使每一对端口都能像独占通信媒体那样无冲突的传输数据

链路层寻址和 ARP

MAC

我们知道主机和路由器和路由器具有链路层地址,事实上,是它们的适配器具有链路层地址,所以,具有多个网络接口的主机或路由器将具有与之相对应的多个链路层地址
但链路层交换机并没有与它们的接口相对应的链路层地址,因为交换机的任务是在主机与路由器之间承载数据报而且是透明地执行该项任务,主机或路由器不必明确地寻址到其间的交换机,那么交换机自然就不需要链路层地址这个属性了

链路层地址有多种说法:LAN 地址,物理地址 或 MAC 地址,其中 MAC 地址最为流行
MAC 地址长度为 6 字节,共有 248 个可能的 MAC 地址。地址通常用十六进制表示法,即每个字节被表示为一对十六进制数。尽管 MAC 地址被设计为永久的,但用软件改变一块适配器的 MAC 地址是可能的

MAC 地址的一些性质

  1. 没有两块适配器的 MAC 地址是相同的,由 IEEE 管理着 MAC 地址空间来保证这个性质。在一个公司要生产适配器时,它需要购买组成 224 个地址的一块地址空间,然后公司自己为每个适配器生成后 24 比特的唯一组合
  2. MAC 地址具有扁平结构 (与之相反的是 层次结构),不论适配器到哪里用都不会变化,例如带有以太网接口的便携机总具有同样的 MAC 地址,不论该计算机位于何处。与之相对照的,是 IP 地址,IP 地址具有层次结构,即网络部分加上主机部分,而且当主机移动时,其 IP 地址需要改变,即改变其所连接到的网络

帧的发送与接收

当某适配器要向某些目的适配器发送一个帧时,发送适配器将目的适配器的 MAC 地址插入到该帧中,并将该帧发送到局域网上

一块适配器可以接收到一个并非向他寻址的帧,因为一台交换机偶尔将一个入帧广播到它的所有接口。所以当适配器接收到一个帧时,将检查该帧中的目的 MAC 地址是否与它自己的 MAC 地址匹配,如果匹配,就提取出封装的数据报并将其沿协议栈向上传递;如果不匹配就丢弃该帧

当发送适配器的确要让局域网上所有其它适配器都接收并处理接下来其即将发送的帧时,它要在该帧的目的字段中插入一个特殊的 MAC 广播地址 (FF-FF-FF-FF-FF-FF)

为何主机和路由器接口除了网络层地址还有MAC地址

  1. 首先,局域网是为任意网络协议而设计的而不只是用于 IP 和因特网,如果适配器只被指派 IP 地址而没有 “中性的” MAC 地址的话,该适配器将不能方便地支持其它网络层协议
  2. 其次,如果适配器使用网络层地址而不是 MAC 地址,那么其网络层地址必须存储在适配器的 RAM 中,并且在每次适配器移动时要重新配置;另一种选择是在适配器中不使用任何地址,让适配器将收到的每个数据报都向上传递,让网络层核对网络地址是否匹配,这种选择的问题是,主机将被局域网上发送的每个帧中断,即便目的地是相同广播局域网上的其他结点
  3. 总之,规范上的需求,为了使网络体系结构中各层次成为极为独立的构建模块,不同的层次需要有它们自己的寻址方案

地址解析协议 ARP

地址解析协议 ( A d d r e s s   R e s o l u t i o n   P r o t o c o l Address\ Resolution\ Protocol Address Resolution Protocol,ARP) 的任务是在网络层地址如 IP 地址和链路层地址即 MAC地址 之间进行转换

同一个子网 中,源主机要向目的主机发送一个数据报,该源必须要向它的适配器不仅提供 IP 数据报,而且还要提供目的主机的 MAC 地址,然后发送适配器才能构造一个包含目的地 MAC 地址的链路层帧,并将其发送到局域网中
那么这里的问题就是如何确定目的主机的 MAC 地址:源主机的 ARP 模块将取在 相同局域网 上的任何 IP 地址作为输入,然后将返回相应的 MAC 地址
具体来说,每台主机或路由器在其内存中具有一个 ARP 表,这张表包含的就是 IP 地址到 MAC 地址的映射关系。除了这两个字段外表中每一条记录还包含一个寿命 TTL 值,它指示的是从表中删除每个映射的时间,从放置到某 ARP 表中开始,一个表项通常的过期时间是 20 分钟

当一台主机需要发送数据报到 本子网 中另一台主机或路由器时,它需要获得给定 IP 地址的目的主机的 MAC 地址
如果发送方的 ARP 表中具有该目的结点对应的表项,就可以直接获得这个 MAC 地址的值
而如果表中没有对应的表项,这种情况下,发送方将用 ARP 协议来解析这个地址:

  1. 首先,发送方构造一个称为 ARP 分组 的特殊分组。一个 ARP 分组有几个字段,包括发送和接收主机的 IP 地址及 MAC 地址,ARP 查询分组和响应分组都具有相同的格式
  2. 然后发送方将 ARP 查询分组传递给它的适配器,并指示适配器应该用 MAC 广播地址 来发送这个分组
  3. 于是适配器在链路层中封装这个 ARP 分组,用广播地址作为帧的目的地址,并将该帧传输到子网中
  4. 包含该 ARP 查询的帧能被子网上的所有其它适配器收到,收到不代表接收,但由于广播地址的作用,每个适配器都会接收并把该帧中的 ARP 分组向上传递给 ARP 模块
  5. 每个 ARP 模块都会检查其 IP 地址是否与 ARP 分组中的目的 IP 地址相匹配。与之匹配的一个就会给查询主机发送回一个带有所希望映射的 ARP 响应分组
  6. 然后查询主机就能更新它的 ARP 表,并根据映射关系发送它的数据报

发送数据报到子网以外

为了将目的地址在不同子网的数据报发送出去,该数据报必须首先发送给第一跳路由器,通过 ARP 协议找到该路由器 IP 对应的 MAC 地址,然后将包含数据报的帧发送到该路由器

路由器通过查询转发表找到该数据报要转发的接口,通过一次或多次转发将数据报发送到目的子网的路由器,该路由器再通过 ARP 找到数据报的目的 IP 地址的 MAC 地址,转发到目的 IP 主机即可

以太网

以太网技术向网络层提供无连接服务以及不可靠服务,它只对帧进行 CRC 校验,且当该帧通过校验时不发送确认帧,当该帧未通过校验时也不发生否定确认帧,只是丢弃该帧。因此发送适配器根本不知道它所传输的帧是否到达了接收适配器,又是否通过了 CRC 校验

对于数据的可靠交付,只能由上层的协议,例如传输层使用 TCP 协议,来保证,在这种情况下,缺失或丢弃的数据将再次到达接收适配器,从这种意义上说,以太网确实重传了数据,尽管它并不知道它正在传输的是一个全新的数据报,还是一个已经被传输过至少一次的数据报

帧结构

一个帧的生命历程大致为:发送帧的主机的适配器在一个以太网帧中封装了一个 IP 数据报,并把该帧传递到物理层;接收适配器从物理层接收到该帧,提取出 IP 数据报,并将该 IP 数据报传递给网络层

插图

  • 数据:该字段长 46 ~ 1500 字节,其中承载了 IP 数据报

    以太网的最大传输单元 MTU 是 1500 字节,这意味着 IP 数据报的长度最大只能达到 1500 字节,如果超过了 1500 字节主机就必须将该数据报分片

    如果 IP 数据报长度小于 46 字节,则必须被填充到 46 字节,当采用了填充时,传递到网络层的数据将包含 IP 数据报和填充部分,网络层则使用 IP 数据报首部中的长度字段来去除填充部分

  • 目的地址:该字段长 6 字节,包含目的适配器的 MAC 地址,当然也包括广播地址。如果接收适配器收到的帧的目的地址是自己的 MAC 地址或者是广播地址,它都会将该帧的数据字段的内容传递到网络层;若是其它任何 MAC 地址,则丢弃该帧

  • 源地址:同样长 6 字节,内容为发送适配器的 MAC 地址

  • 类型:长度 2 字节,该字段允许以太网复用多种网络层协议。一台主机可以支持多种网络层协议,因此,当帧到达一个接收适配器,适配器需要知道它要将该帧的数据字段传递给哪个网络层协议,IP 和其它网络层协议都有自己的类型编号。如果到达的帧包含 ARP 分组,即类型字段的值为十六进制的 0806,则该 ARP 分组将被分解给 ARP 协议

    该类型字段和网络层数据报中的协议字段,运输层报文段中的端口号字段类似,都是为了把一层的某协议跟上一层的某协议结合起来

  • CRC:长度 4 字节循环冗余检测的目的是使接收适配器检测帧中是否引入了比特差错

  • 前同步码:以太网帧以一个 8 字节的前同步码字段开始,该同步码前 7 字节都是 10101010,最后一个字节是 10101011

    前 7 字节用于 “唤醒” 接收适配器并且将它们的时钟和发送方的时钟进行同步,因为发送适配器难以做到以精确的额定速率来传输帧,相对于额定速率总有一些 漂移,而局域网上的其它适配器肯定无法预先知道这种 漂移,通过锁定前同步码的前 7 字节比特,接收适配器就能锁定发送适配器的时钟

    同步码的最后两个比特就用于告诉接收适配器,“重要的内容”,即其它的数据部分即将到来

虚拟局域网

随着交换局域网的发展,位于同一局域网中的每台主机互连已成可能,好处在于任何主机都可直接与其它主机通信,缺点在于 缺乏流量隔离,主机的广播帧必须跨越整个机构网络发送到每台主机,这将带来大量的广播流量影响局域网的性能;更重要的,是为了安全或者隐私的目的来限制局域网的广播流量,禁止任意主机之间随意通信

虚拟局域网就可以处理这种问题,支持 VLAN 的交换机允许经一个单一的物理局域网基础设施定义多个虚拟局域网。一个 VLAN 中的主机彼此通信

在基于端口的 VLAN 中,交换机的端口由网络管理员划分为组,每个组构成一个 VLAN,在每个 VLAN 中的端口形成一个广播域,来自其中某个端口的广播流量仅能到达该组中的其它端口,不同组之间发送的帧彼此隔离。而且,在这种情况下,即便是不同组的主机也能连接到同一台交换机上而不怕流量互相传播,提高了单台交换机的使用率

在这种组间隔离的情况下,不同组间如何实现通信呢。有一种方式是将 VLAN 交换机的一个端口与一台外部路由器相连,一个组要发往另一个组的数据报先通过自己的 VLAN 到达路由器,然后由该路由器转发跨越另一个组的 VLAN 到达另一个组中的目的主机

还有一个问题是不同交换机间如何通信,这个问题的解决方法为 VLAN 干线连接 ( V L A N   t r u n k i n g VLAN\ trunking VLAN trunking),每台交换机中一个特殊端口被配置为干线端口,不同交换机间使用干线端口连接干线线路进行互联。该干线端口属于所有 VLAN,发送到任何 VLAN 的帧经过干线链路转发到其它交换机

猜你喜欢

转载自blog.csdn.net/Pacifica_/article/details/125836400