下图显示了一个交换局域网,这个局域网连接了3个部门,两台服务器,一台与4台交换机相连接的路由器。

一、链路层寻址和ARP

主机和路由器都具有网络层地址和链路层地址,这两层地址都是有用的,利用地址解析协议(ARP)可以将IP地址转化为链路层地址。

1.1 MAC地址

事实上,并不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址。因此,具有多个网络接口的主机或路由器将具有与之相关联的多个链路层地址,就像它具有与之相关联的多个IP地址一样。然而,重要的是要注意到链路层交换机并不具有与它们的接口(这些接口是与主机和路由器相连的)相关联的链路层地址。这是因为链路层交换机的任务是在主机和路由器之间承载数据报;交换机透明地执行该项任务,这就是说,主机或路由器不必明确地将帧寻址到其间的交换机。下图说明了这种情况:


链路层地址有各种不同的称呼:LAN地址(LAN address)、物理地址(physical address)或MAC地址(MAC address)。因为MAC地址似乎是最为流行的术语,所以接下来就将链路层地址称为MAC地址。对于大多数局域网(包括以太网和802.11无线局域网)而言,MAC地址长度为6字节,所以共有2482^{48}248个可能的MAC地址。如上图所示,,这些6个字节的地址通常用十六进制表示法,地址的每个字节都被表示为一对十六进制数。尽管MAC地址被设计为永久的,但用软件改变一块适配器的MAC地址现在是可能的,但是我们在后面都假定MAC地址是固定的。

MAC地址的一个有趣性质是没有两块适配器具有相同的地址。考虑到适配器是由许多不同国家和地区之间的不同公司生产的,要实现不重复就需要一个权威机构来管理MAC地址,这就是IEEE。当一个公司要生产适配器时,它支付象征性的费用购买组成2482^{48}248个地址的一块地址空间。IEEE分配这块2482^{48}248个地址的方式是:固定一个MAC地址的前24比特,让公司自己为每个适配器生成后24比特的唯一组合。

适配器的MAC地址具有扁平结构(这与层次结构相反),而且不论适配器到哪里用都不会发生变化。带有以太网接口的便携机总具有同样的MAC地址,无论该计算机位于何方。具有802.11接口的一台智能手机总是具有相同的MAC地址,无论该智能手机到哪里。与此形成对照的是,前面说过的IP地址具有层次结构(即一个网络部分和一个主机部分),而且当主机移动时,主机的IP地址需要改变,即改变它所连接到的网络。适配器的MAC地址与人的社会保险号类似,后者也具有扁平的寻址结构,而且无论人到哪里该号码都不会变化。IP地址则与一个人的邮政地址相似,它是有层次的,无论何时当人搬家时,该地址都必须改变。就像一个人可能发现邮政地址和社会保险号都有用一样,一台主机具有一个网络层地址和一个MAC地址是有用的。

当某适配器要向某些目的适配器发送一个帧时,发送适配器将目的适配器的MAC地址插入到该帧中,并将该帧发送到局域网上。一台交换机偶尔将一个入帧广播到它的所有接口,因此一块适配器可以接收一个并非向它寻址的帧。每当适配器接收到一个帧时,将检查该帧中的目的MAC地址是否与它自己的MAC地址匹配。如果匹配,该适配器提取出封装的数据报,并将该数据报沿协议栈向上传递。如果不匹配,该适配器丢掉该帧,而不会向上传递该网络层数据报。

然而,有时某发送适配器的确要让局域网上所有其他适配器来接收并处理它打算发送的帧。在这种情况下,发送适配器在该帧的目的地址中插入一个特殊的MAC广播地址。对于使用6字节地址的局域网(例如以太网和802.11)来说,广播地址是48个连续的1组成的字符串(即十六进制表示法表示的FF-FF-FF-FF-FF-FF)

1.2 地址解析协议

因为存在网络层地址(例如,因特网的IP地址)和链路层地址(即MAC地址),所以需要在它们之间进行转换,对于因特网而言,这就是地址解析协议(ARP)所做的工作。

考虑如下图所示的网络:

在这个简单的网络中,每台主机和路由器有一个单一的IP地址和单一的MAC地址。与以往一样,IP地址以点分十进制表示法表示,MAC地址以十六进制表示法表示。为了便于讨论,我们在本节中将假设交换机广播所有帧;这就是说,无论何时交换机在一个接口接收一个帧,它将在所有其他接口转发该帧。

现在假设IP地址为222.222.222.220的主机要向主机222.222.222.222发送IP数据报,此时源和目的均位于相同的子网中。为了发送数据报,该源必须要向它的适配器提供IP数据报和目的主机222.222.222.222的MAC地址。然后发送适配器将构造一个包含目的地MAC地址的链路层帧,并把该帧发送进局域网

我们要处理的一个重要问题是:发送主机如何确定IP地址为222.222.222.222的目的主机的MAC地址呢?这就是ARP协议发挥作用的地方。发送主机上的ARP模块将取在相同局域网上的任何IP地址作为输入,然后返回相应的MAC地址。在上面的例子中,发送主机222.222.222.220向它的ARP模块提供了IP地址222.222.222.222,其ARP模块就会返回相应的MAC地址49-BD-D2-C7-56-2A。

因此我们看到ARP将一个IP地址解析为一个MAC地址,在很多方面和DNS类似。然而,这两种解析器之间的一个重要区别是,DNS为因特网中任何地方的主机解析主机名,而ARP只为在同一个子网上的主机和路由器接口解析IP地址。如果一个节点试图用ARP为另一个子网中的节点解析MAC地址,那么ARP将返回一个错误。

知道了ARP的用途后,接下来看下ARP是怎么工作的:每台主机或路由器在其内存中具有一个ARP表,这张表包含了IP地址到MAC地址的映射关系。下图显示了在主机222.222.222.220可能看到的ARP表中的内容:

该ARP表也包含一个寿命(TTL)值,它指示了从表中删除每个映射的时间。注意到这张表不必为该子网上的每台主机和路由器都包含一个表项;某些可能从来没有进入到该表中,某些可能已经过期。从一个表项放置到某ARP表中开始,一个表项通常的过期时间是20分钟。

现在假设主机222.222.222.220要发送一个数据报,该数据报要通过IP寻址到本子网上另一台主机或路由器。发送主机首先需要获得给定IP地址的目的主机的MAC地址,如果发送方的ARP表具有该目的结点的表项,这个任务是很容易完成的。当出现ARP表中当前没有该目的主机的表项的情况时,发送方用ARP协议来获取这个地址:首先,发送方构造一个称为ARP分组的特殊分组。一个ARP分组有几个字段,包括发送和接收IP地址及MAC地址。ARP查询分组和响应分组都具有相同的格式。ARP查询分组的目的是询问子网上所有其他主机和路由器,以确定对应于要解析的IP地址的那个MAC地址。

回到我们上面的例子,222.222.222.220向它的适配器传递一个ARP查询分组,并且指示适配器应该用MAC广播地址(即FF-FF-FF-FF-FF-FF)来发送这个分组。适配器在链路层帧中封装这个ARP分组,用广播地址作为帧的目的地址,并将该帧传输进子网中。包含该ARP查询的帧能被子网上所有其他适配器收到,并且(由于广播地址)每个适配器都把在该帧中的ARP分组向上传递给ARP模块。这些ARP模块中的每个都检查它的IP地址是否与ARP分组中的目的IP地址相匹配。与之匹配的一个给查询主机发送回一个带有所希望映射的响应ARP分组。然后查询主机222.222.222.220能够更新它的ARP表,并发送它的IP数据报,该数据报封装在一个链路层帧中,并且该帧的目的MAC就是对先前的ARP请求进行响应的主机或路由器的MAC地址。

一个ARP分组封装在链路层帧中,因而在体系结构上位于链路层之上。然而,一个ARP分组具有包含链路层地址的字段,因而可认为是链路层协议,但它也包含网络层地址,因而也可认为是网络层协议。所以,可能最好把ARP看成是跨越链路层和网络层边界两边的协议,即不完全符合简单的分层协议栈。

1.3 发送数据报到子网以外

现在考虑当子网中的某主机要向子网之外(也就是跨越路由器的另一个子网)的主机发送网络层数据报,如下图所示,显示了一个由一台路由器互联两个子网所组成的简单网络:

在上图中需要注意几点:每台主机仅有一个IP地址和一个适配器,一台路由器对它的每个接口都有一个IP地址。对路由器的每个接口,(在路由器中)也有一个ARP模块和一个适配器。上图的路由器有两个接口,所以它有两个IP地址,两个ARP模块和两个适配器,当然,网络中的每个适配器都有自己的MAC地址。

我们定义子网1的网络地址为111.111.111/24,子网2的网络地址为222.222.222/24。假如子网1上的一台主机将向子网2上的一台主机发送数据报。特别是,假设主机111.111.111.111要向主机222.222.222.222发送一个IP数据报。和往常一样,发送主机向它的适配器传递数据报。但是,发送主机还必须向它的适配器指示一个适当的目的MAC地址。仔细观察上图,我们可以发现,为了使一个数据报从111.111.111.111到子网2上的主机,这个数据报必须首先发送给路由器接口111.11.111.110,它是通往最终目的路径上的第一跳路由器的IP地址。因此,对于该帧来说,适当的MAC地址是路由器接口111.111.111.110的适配器地址,即E6-E9-00-17-BB-4B。发送主机通过ARP获取111.111.111.110的MAC地址。一旦发送适配器有了这个MAC地址,它创建一个帧(包含了寻址到222.222.222.222的数据报),并把该帧发送到子网1中。在子网1上的路由器适配器看到该链路层帧是向它寻址的,因此把这个帧传递给路由器的网络层。路由器现在必须决定该数据报要被转发的正确接口。这是通过查询路由器中的转发表来完成的。转发表告诉这台路由器该数据报要通过路由器接口222.222.222.220转发。然后该接口把这个数据报传递给它的适配器,适配器把该数据报封装到一个新的帧中,并且将帧发送进子网2中。这时,该帧的目的MAC地址确实是最终目的地MAC地址。路由器接下来通过ARP获取这个MAC地址。

二、以太网

以太网几乎占领着现有的有线局域网市场,Bob Metcalfe和David Boggs在20世纪70年代中期发明了初始的以太局域网。初始的以太局域网使用同轴电缆总线来互联结点,以太网的总线拓扑实际上从20世纪80年代到90年代中期一直保持不变。使用总线拓扑的以太网是一种广播局域网,即所有传输的帧传送到与该总线连接的所有适配器并被其处理。

到了20世纪90年代后期,大多数公司和大学使用一种基于集线器的星形拓扑以太网安装替代了它们的局域网。在这种安装中,主机(和路由器)直接用双绞对铜线与一台集线器相连。集线器是一种物理层设备,它作用于各个比特而不是作用于帧。当表示一个0或一个1的比特到达一个接口时,集线器只是重新生成这个比特,将其能量强度放大,并将该比特向其他所有接口传输出去。因此,采用基于集线器的星形拓扑的以太网也是一个广播局域网,即无论何时集线器从它的一个接口接收到一个比特,它向其所有其他接口发送该比特的副本。

在21世纪早期,以太网又经历了一次重要的革命性变化。以太网安装继续使用星形拓扑,但是位于中心的集线器被交换机所替代。交换机不仅是“无碰撞的”,而且也是名副其实的存储转发分组交换机;但是与运行在高至第3层的路由器不同,交换机仅运行在第2层。

2.1 以太网帧结构

以太网帧结构如下所示:

考虑从一台主机向另一台主机发送一个IP数据报,且这两台主机在相同的以太局域网上。设发送适配器(即适配器A)的MAC地址是AA-AA-AA-AA-AA-AA,接收适配器(即适配器B)的MAC地址是BB-BB-BB-BB-BB-BB。发送适配器在一个以太网帧中封装了一个IP数据报,并把该帧传递到物理层。接收适配器从物理层收到这个帧,提取出IP数据报,并将该IP数据报传递给网络层。在这个场景下,我们解释下上图所示的以太网帧的6个字段:

  • 数据字段(46-1500字节): 这个字段承载了IP数据报。以太网的最大传输单元(MTU)是1500字节。这意味着如果IP数据报超过了1500字节,则主机必须将该数据报分片。数据字段的最小长度是46字节。这意味着如果IP数据报小于46字节,数据报必须被填充到46字节。当采用填充时,传递到网络层的数据报括IP数据报和填充部分。网络层使用IP数据报首部中的长度字段来去除填充部分。
  • 目的地址(6字节): 这个字段包含了传毒该帧到局域网上的适配器的MAC地址,在本例中为AA-AA-AA-AA-AA-AA。
  • 类型字段(2字节): 类型字段允许以太网复用多种网络层协议。为了理解这点,我们需要记住主机能够使用除了IP以外的其他网络层协议。事实上,一台给定的主机可以支持多种网络层协议,以对不同的应用采用不同的协议。因此,当以太网帧到达适配器B,适配器B需要知道它应该将数据字段的内容传递给哪个网络层协议(即分解)。IP和其他链路层协议都有它们各自的、标准化的类型编号。此外,ARP协议有自己的类型编号,并且如果到达的帧包含ARP分组(即类型字段的值为十六进制的0806),则该ARP分组将被多路分解给ARP协议。注意类型字段和网络层数据报中的协议字段、运输层报文段的端口号字段相类似;所有这些字段都是为了把上一层中的某协议与上一层的某协议结合起来。
  • CRC(4字节): CRC(循环冗余检测)字段的目的是使得接收适配器(适配器B)检测帧中是否引入了差错。
  • 前同步码(8字节): 以太网帧以一个8字节的前同步码字段开始。该前同步码的前7字节的值都是10101010;最后一个字节是10101011。前同步码字段的前7字节用于“唤醒”接收适配器,并且将它们的时钟和发送方的时钟同步。为什么这些时钟会不同步呢?记住适配器A的目的是根据以太局域网类型的不同,分别以10Mbps、100Mbps或者1Gbps的速率传输帧。但是适配器A不会以精确的额定速率传输帧;相对于额定速率总有一些漂移,局域网上的其他适配器不会预先知道这种漂移。接收适配器只需通过锁定前同步码的前7字节的比特,就能够锁定适配器A的时钟。前同步码的第8个字节的最后两个比特(第一个出现的是两个连续的1)警告适配器B:“重要的内容”就要到来了。

所有的以太网技术都向网络层提供无连接服务。这就是说,当适配器A要向适配器B发送一个数据报时,适配器A在一个以太网帧中封装该数据报,并且把该帧发送到局域网上,没有先与适配器B握手。这种第二层的无连接服务类似于IP的第三层数据报服务和UDP的第四层无连接服务。

以太网技术都向网络层提供不可靠服务。特别是,当适配器B收到一个来自适配器A的帧,它对该帧执行CRC校验,但是当该帧通过CRC校验时它不发送确认帧,而当该帧没有通过CRC校验时它也不发送确认帧。当某帧没有通过CRC校验,适配器B只是丢弃该帧。因此,适配器A根本不知道它传输的帧是否到达了B并通过了CRC校验。

2.2 以太网技术

以太网有很多不同的技术,这些技术具有某些令人眼花缭乱的搜字母缩写词,如10BASE-T、10BASE-2、100BASE-T、1000BASE-LX和10GBASE-T。这些以及许多其他的以太网技术在许多年前已经被IEEE 802.3 CSMA/CD(Ethernet)工作组标准化了[IEEE 802.3 2012]。尽管这些首字母缩写词看起来眼花缭乱,实际上其中非常有规律性。首字母缩写词的第一部分指该标准的速率:10、100、1000和10G,分别代表10Mbps、100Mbps、1000Mbps和10Gbps以太网。“BASE”指基带以太网,这意味着物理媒体仅承载以太网流量;几乎所有的802.3标准都使用于基带以太网。该首字母的最后一部分指物理媒体本身;以太网是物理层也是链路层的规范,并且能够经各种物理媒体(包括同轴电缆、铜线和光纤)承载。一般而言,“T”指双绞铜线。

从历史上讲,以太网最初被设想为一段同轴电缆。早期的10BASE-2和10BASE-5标准规定了在两种类型的同轴电缆之上的10Mbps以太网,每种标准都限制在500米长度之内。通过使用转发器能够得到更长的运行距离,而转发器是一种物理层设备,它能在输入端接收信号并在输出端再生该信号。

/待补充 324

三、链路层交换机

交换机的任务是接收入链路层帧并将它们转发到出链路,它自身对子网中的主机和路由器是透明的。这就是说,某主机/路由器向另一个主机/路由器寻址一个帧(而不是向交换机寻址该帧),顺利地将该帧发送进局域网,并不知道某交换机将会接收该帧并将它转发到另一个结点。这些帧到达该交换机的任何输出接口之一的速率可能暂时会超过该接口的链路容量。为了解决这个问题,交换机输出接口设有缓存,这非常类似于路由器接口为数据报设有缓存,接下来考察下交换机运行的原理。

3.1 交换机转发和过滤

过滤是决定一个帧应该转发到某个接口还是应当将其丢弃的交换机功能转发是决定一个帧应该被导向哪个接口,并把该帧移动到那些接口的交换机功能。交换机的过滤和转发借助于交换机表完成。该交换机表包含某局域网上某些主机和路由器的表项。交换机表中的一个表项包括:

  • 一个MAC地址
  • 通向该MAC地址的交换机接口
  • 表项放置在表中的时间

下图显示了一个交换机表的例子:

帧的转发和数据转发之间有相似点,但它们之间的差距也是很大的,例如交换机转发分组基于MAC地址而不是基于IP地址,交换机表与路由器的转发表的构造方式也有很大差别。

为了理解交换机过滤和转发的工作过程,假定目的地址为DD-DD-DD-DD-DD-DD的帧从交换机接口x到达,交换机用MAC地址DD-DD-DD-DD-DD-DD索引它的表。有三种可能的情况:

  • 表中没有对于DD-DD-DD-DD-DD-DD的表项。在这种情况下,交换机向除接口x外的所有接口前面的输出缓存转发该帧的副本。换言之,如果没有对于目的地址的表项,交换机广播该帧。
  • 表中有一个表项将DD-DD-DD-DD-DD-DD与接口x联系起来。在这种情况下,该帧从包括适配器DD-DD-DD-DD-DD-DD的局域网网段到来。无需将该帧转发到任何其他接口,交换机通过丢弃该帧执行过滤功能即可。
  • 表中有一个表项将DD-DD-DD-DD-DD-DD与接口y≠\ne​=x联系起来。在这种情况下,该帧需要被转发到与接口y相连的局域网段。交换机通过将该帧放到接口y前面的输出缓存完成转发功能。

3.2 自学习

交换机的一个有用的特性就是它的表是自动的、动态和自治的建立的,没有来自网络管理员或者来自配置协议的任何干预。换句话说,交换机是自学习的,这种能力通过如下的方式实现:

  1. 交换机表初始为空
  2. 对于在每个接口接收到的每个入帧,该交换机在其表中存储:
    a. 在该帧源地址字段中的MAC地址
    b. 该帧到达的接口
    c. 当前时间
    交换机以这种方式在它的表中记录了发送结点所在的局域网段。如果在局域网上的每个结点最终都发送了一个帧,则每个结点最终将在这张表中留有记录。
  3. 如果在一段时间(称为老化期)后,交换机没有接收到以该地址作为源地址的帧,就在表中删除这个地址。以这种方式,如果一台PC被另一台PC(具有不同适配器)代替,原来PC的MAC地址将最终从该交换机表中被清除掉。

交换局域网(链路层+以太网+交换机)相关推荐

  1. 汉源高科24个千兆光口光纤汇聚交换机机架式工业级以太网交换机环网管理型交换机

    1,数据控制:支持802.3X全双工流控,支持网络风暴抑制 2,冗余网络:支持STP/RSTP/MSTP,支持符合G.8032(ERPS)标准的以太环网保护技术(自愈时间<30ms),保障网络的 ...

  2. 网络 链路层 | 以太网协议与ARP协议

    数据链路层是计算机网络的底层,主要负责相邻设备之间的数据帧传输 链路层就是负责每一个相邻结点之间的数据传输,但是相邻设备之间也需要描述识别,主要是因为每一个设备都有可能有多个相邻的设备.这种识别在链路 ...

  3. 计算机基础(笔记)——计算机网络(链路层)

    链路层 在链路层中,会讨论到两种截然不同类型的链路层信道.第一种类型是广播信道,这种信道用于连接有线局域网.卫星网和混合光纤同轴电缆( Hybrid Fiber Coaxialcable,HFC)接入 ...

  4. 网络:以太网交换机、路由器

    局域网的中枢-以太网交换机 令牌环网.FDDI.ARCNET等都已成往事,以太网几乎成为了互联网的唯一. 以太网工作原理 局域网要解决的最大问题,无非是多台主句都想在网络上发言,在任何一个时刻,让谁先 ...

  5. 计算机网络 自顶向下(5)链路层——学习笔记

    · 概述: · 结点:任何运行链路了层协议的任何设备.包括主机.路由器.交换机和WiFi接入点. · 链路:沿着通信路径连接相邻结点的通信信道称为链路.数据报必须通过沿端到端路径上各段链路传输. · ...

  6. 最详细的链路层讲解,这一篇就够了

    下面我们把关注点放在数据链路层,如果没有数据链路层,计算机网络也就不复存在:这就好比大楼没有了地基,人没有了腿:所以,数据链路层的知识也固然重要,不少小伙伴只把关注点放在 TCP 和 IP 这两个协议 ...

  7. 《计算机网络:自顶向下方法》学习笔记——第六章:链路层

    两种截然不同类型的链路层信道 广播信道:这种信道用于连接有线局域网.卫星网和混合光纤同轴电缆接入网中的多台主机. 点对点通信链路:这在诸如长距离链路连接的两台路由器之间,或用户办公室计算机与它们所连接 ...

  8. 从第一代到第四代以太网交换机进化史

    [导读]作为一种原理简单.便于实现同时又价格低廉的局域网链路层技术,以太网正在成为网络领域的基础和垄断承载技术.40年风雨兼程,以太网逐渐赢得业界普遍认同,成为最有前途的网络技术.这其中,更高性能的快 ...

  9. 工业以太网交换机的作用和工作原理详解

    工业以太网交换机是基于以太网传输数据的交换机,以太网采用共享总线型传输媒体方式的局域网.工业以太网交换机的结构是每个端口都直接与主机相连,并且一般都工作在全双工方式.交换机能同时连通许多对端口,使每一 ...

  10. 计算机网络 物理层链路层

    计算机网络 物理层 复用 课中给到的示例 检错机制 纠错码 链路层 分组太大帧装不下? 为何帧要限制大小? 以太网 链路层 tracert www.baidu.cn(xxx) 在应用层协议有限定长度标 ...

最新文章

  1. 【Qt】在ubuntu14.04上安装Qt5.12(失败)
  2. Fastadmin管理Mysql_FastAdmin-CMS模版制作(6)-正式部署
  3. GLSL实现滤镜效果
  4. C语言math.h中的常用函数实例详解
  5. html表单的常用属性有哪些,html/form表单常用属性认识
  6. 开源个.NetCore写的 - 并发请求工具PressureTool
  7. jvm上的随机数与熵_向您的JVM添加一些熵
  8. Linux Storage入门学习
  9. 程序员面试金典 - 面试题 05.03. 翻转数位(位运算)
  10. 1小时教你学会正则表达式
  11. linux listen监听,Linux网络协议栈 -- socket listen监听
  12. Python实现代码行数统计工具
  13. 《Adobe After Effects CS5经典教程》——1.6 预览
  14. PCB,原理图 最流行的画图画板软件有哪些?
  15. 我看过的机器学习方面的好文章
  16. 微商怎么做推广加好友?教你几招,让你天天涨粉
  17. 3Dmax转cad及批量出图
  18. xp系统怎么telnet服务器,xp操作系统如何开启telnet服务?
  19. 【洋桃电子】STM32入门100步-01
  20. linux 无线网卡 频段,Linux 网卡配置 (频段、发射功率等)

热门文章

  1. 计算机应用技术基础考试分值,计算机一级考试内容包括哪些 试题分值上是如何分布的...
  2. OkHttp之ConnectInterceptor简单分析
  3. 缓冲区ByteBuffer简单说明
  4. 都在这儿了!Flink Forward Asia 最佳参会指南
  5. Glide4.0源码全解析(一),GlideAPP和.with()方法背后的故事
  6. MAC安装apache tomcat配置方法图文教程
  7. Android TV开发总结(二)构建一个TV Metro界面(仿泰捷视频TV版)
  8. linux内核源码分析--内核启动之,Linux内核源码分析之setup_arch (二)
  9. Linux将字符串转化为float,C语言中如何将字符串转换成float和double类型
  10. java插件不启动_java-插件安装后Eclipse启动问题