HCIA-Datacom笔记之以太网交换基础
在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以太网协议是充分理解数据链路层通信的基础。
以太网交换机是实现数据链路层通信的主要设备,了解以太网交换机的工作原理也是十分必要的。
7.1 以太网协议介绍
以太网是当今现有局域网(Local Area Network, LAN)采用的最通用的通信协议标准,该标准定义了在局域网中采用的电缆类型和信号处理方法。
以太网是建立在CSMA/CD (Carrier Sense Multiple Access/Collision Detection,载波监听多路访问/冲突检测)机制上的广播型网络。

早期的以太网:
以太网是建立在CSMA/CD机制上的广播型网络。冲突的产生是限制以太网性能的重要因素,早期的以太网设备如集线器HUB是物理层设备,不能隔绝冲突扩散,限制了网络性能的提高。
交换机组网:
交换机做为一种能隔绝冲突的二层网络设备,极大的提高了以太网的性能,并替代HUB成为主流的以太网设备。但是交换机对网络中的广播数据流量不做任何限制,这也影响了网络的性能。
7.1.1 冲突域
冲突域是指连接在同一共享介质上的所有节点的集合,冲突域内所有节点竞争同一带宽,一个节点发出的报文(无论是单播、组播、广播),其余节点都可以收到。


- 在传统的以太网中,同一介质上的多个节点共享链路带宽,争用链路的使用权,这样就会发生冲突。同一介质上的节点越多,冲突发生的概率越大。
- 交换机不同的接口发送和接收数据独立,各接口属于不同的冲突域,因此有效地隔离了网络中物理层冲突域,使得通过它互连的主机(或网络)之间不必再担心流量大小对于数据发送冲突的影响。
在共享网络,以太网络使用CSMA/CD技术,避免冲突问题。CSMA/CD的基本工作过程如下:
1、终端设备不停的检测共享线路的状态。
- 如果线路空闲则发送数据。
- 如果线路不空闲则一直等待。
2、如果有另外一个设备同时发送数据,两个设备发送的数据必然产生冲突,导致线路上的信号不稳定。
3、终端设备检测到这种不稳定之后,马上停止发送自己的数据。
4、终端设备发送一连串干扰脉冲,然后等待一段时间之后再进行发送数据。发送干扰脉冲的目的是为了通知其他设备,特别是跟自己在同一个时刻发送数据的设备,线路上已经产生了冲突。
CSMA/CD的工作原理可简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发。
7.1.2 广播域
广播报文所能到达的整个访问范围称为二层广播域,简称广播域,同一广播域内的主机都能收到广播报文。
全1MAC地址FF-FF-FF-FF-FF-FF为广播地址,所有节点都会处理目的地址为广播地址的数据帧,该数据帧所能到达的整个访问范围称为二层广播域,简称广播域。
注:MAC (Medium Access Control)地址,在网络中唯一标识一个网卡,每个网卡都需要并会有唯一的一个MAC地址。

在传统的以太网中,同一介质上的多个节点共享链路,一台设备发出的广播报文,所有设备均会收到。

交换机对广播报文会向所有的接口都转发,所以交换机的所有接口连接的节点属于一个广播域。
7.1.3 以太网卡
网络接口卡 (Network Interface Card, NIC)也称为“网卡”,是计算机、交换机、路由器等网络设备与外部网络世界相连的关键部件。


网络接口:简称“网口”或“接口”或“端口”。
网卡:每个网口都有一块网卡与之对应。计算机或交换机通过网卡来转发数据。
7.2 以太网帧介绍
7.2.1 以太网帧格式
以太网技术所使用的帧称为以太网帧 (Ethernet Frame),或简称以太帧。在以太网中,数据通信的基本单位是以太网帧 ( Frame )。
以太帧的格式有两个标准:Ethernet_II格式和IEEE 802.3格式,因此协议规定以太网帧的数据格式如图所示。

7.2.1.1 Ethernet Ⅱ以太帧
- DMAC:6字节,目的MAC地址,IPV4为6字节,该字段标识帧的接收者。
- SMAC:6字节,源MAC地址,IPV4为6字节,该字段标识帧的发送者。
- Type:2字节,协议类型。常见值:
- 0x0800:Internet Protocol Version 4 (IPv4) ;
- 0x0806:Address Resolution Protocol (ARP) 。
7.2.1.2 IEEE 802.3 LLC以太帧
逻辑链路控制LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。
- DSAP:1字节,目的服务访问点,若后面类型为IP值设为0x06。服务访问点的功能类似于Ethernet II帧中的Type字段或TCP/UDP传输协议中的端口号。
- SSAP:1字节,源服务访问点,若后面类型为IP值设为0x06。
- Ctrl:1字节,该字段值通常设为0x03,表示无连接服务的IEEE 802.2无编号数据格式。
SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型(Type)字段组成。
- Org Code三个字节都为0。
- Type字段的含义与Ethernet_II帧中的Type字段相同。
7.2.2 数据帧的总长度为64-1518字节,这样设计的原因是什么?
(另外,以太网口的最大传输单元是1500字节,即MTU=1500B。)
以太网中,最小帧长为64字节,这是由最大传输距离和CSMA/CD机制共同决定的。
规定最小帧长是为了避免这种情况发生:A站点已经将一个数据包的最后一个Bit发送完毕,但这个报文的第一个Bit还没有传送到距离很远的B站点。B站点认为线路空闲继续发送数据,导致冲突。
高层协议必须保证Data域至少包含46字节,这样加上以太网帧头的14字节和帧尾的4字节校验码正好满足64字节的最小帧长,如果实际数据不足46个字节,则高层协议必须填充一些数据单元。
而出于对传输效率和传输可靠性的折中考虑,使得以太网帧的最大长度为1518字节,对应IP数据包就是1500字节。
较大的帧长度,数据的有效传输效率会更高;但是数据帧过长,传输时会占用共享链路过多的时间,对时延敏感应用造成极大的影响。
因此最终选择了一个折中的长度:1518字节的数据帧长,对应1500字节的IP数据包长度,这就是最大传输单元MTU的由来。
7.2.3 MAC地址
7.2.3.1 什么是MAC地址?
MAC (Medium Access Control)地址在网络中唯一标识一个网卡,每个网卡都需要并拥有有唯一的一个MAC地址。
一块网卡的MAC地址是具有全球唯一性的。

如同每个人都有身份证号码来标识自己一样,每块网卡也拥有一个用来标识自己的号码,即MAC地址。
7.2.3.2 IP地址 vs MAC地址
每个以太网设备在出厂时都有一个唯一的MAC地址,那为什么还需要为每台主机再分配一个IP地址呢?或者说每台主机都分配唯一的IP地址了,为什么还要在网络设备 (如:网卡) 生产时内嵌一个唯一的MAC地址呢?

主要原因有:
- IP地址是根据网络的拓朴结构分配的,MAC地址是根据制造商分配的,若路由选择建立在设备制造商的基础上,这种方案是不可行的。
- 当存在两层地址寻址时,设备更灵活,易于移动和维修。
- 例如,如果一个以太网卡坏了,可以被更换,而无须更换一个新的IP地址;如果一个IP主机从一个网络移到另一个网络,可以给它一个新的IP地址,而无须换一个新的网卡。
总结:
IP地址的作用是唯一标识网络中的一个节点,可以通过IP地址进行不同网段的数据访问。
MAC地址的作用是唯一标识一个网卡,可以通过MAC地址进行同网段的数据访问。
7.2.3.3 MAC地址表示
一个MAC地址有48 bit,6 Byte。
MAC地址通常采用“十六进制”+“-”表示。

7.2.3.4 MAC地址构成
一个制造商在生产制造网卡之前,必须先向IEEE注册,以获取一个长度为24bit (3字节)的厂商代码,也称为OUI。
后24bit由厂商自行分派,是各个厂商制造的所有网卡的唯一编号。

7.2.3.5 MAC地址分类

MAC地址可以分为3种类型:
1、单播MAC地址:也称物理MAC地址,这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址。
- 单播MAC地址用于标识链路上的一个单一节点。
- 目的MAC地址为单播MAC地址的帧发往一个单一的节点。
- 单播MAC地址可以作为源或目的地址。
注意:单播MAC地址具有全球唯一性,当一个二层网络中接入了两台具有相同MAC地址的终端时(例如误操作等),将会引发通信故障(例如这两台终端无法相互通信),且其他设备与它们之间的通信也会存在问题。
2、广播MAC地址:全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示局域网上的所有终端设备。
- 广播MAC地址可以理解为一种特殊的组播MAC地址。
- 其具体格式为:FFFF-FFFF-FFFF。
- 目的MAC地址为广播MAC地址的帧发往链路上的所有节点。
3、组播MAC地址:除广播地址外,第7bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表局域网上的一组终端。
- 组播MAC地址用于标识链路上的一组节点。
- 目的MAC地址为组播MAC地址的帧发往一组节点。
- 组播MAC地址不能作为源地址,只能作为目的地址。
7.2.4 以太网帧类型
局域网上的帧可以通过三种方式发送。
7.2.4.1 单播以太帧
第一种是单播,指从单一的源端发送到单一的目的端。

- 每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。
- 在同一广播域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧。
7.2.4.2 广播以太帧
第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。

- 广播帧的目的MAC地址为十六进制的FF-FF-FF-FF-FF-FF,所有收到该广播帧的主机都要接收并处理这个帧。
- 广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。
- 当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。
7.2.4.3 组播以太帧
第三种发送方式为组播,组播比广播更加高效。

组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧。
组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1。
当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式。
7.3 以太网交换机介绍
7.3.1 园区网典型架构
一个典型的园区数据网络由路由器、交换机、防火墙等设备构成,通常会采用多层架构,包括:接入层、汇聚层、核心层和出口层。

7.3.2 以太网交换机
以太网二层交换机:

- 在园区网络中,交换机一般来说是距离终端用户最近的设备,用于终端接入园区网,接入层的交换机一般为二层交换机。
- 二层交换设备工作在TCP/IP对等模型的第二层,即数据链路层,它对数据包的转发是建立在MAC(Media Access Control )地址基础之上的。
以太网三层交换机:
不同局域网之间的网络互通由需要由路由器来完成。
随着数据通信网络范围的不断扩大,网络业务的不断丰富,网络间互访的需求越来越大,而路由器由于自身成本高、转发性能低、接口数量少等特点无法很好的满足网络发展的需求。
因此出现了三层交换机这样一种能实现高速三层转发的设备。
7.3.3 交换机的工作原理

二层交换机工作在数据链路层,它对数据帧的转发是建立在MAC地址基础之上的。
交换机不同的接口发送和接收数据是独立的,各接口属于不同的冲突域,因此有效地隔离了网络中的冲突域。
二层交换设备通过学习以太网数据帧的源MAC地址来维护MAC地址与接口的对应关系(保存MAC与接口对应关系的表称为MAC地址表),通过其目的MAC地址来查找MAC地址表决定向哪个接口转发。
7.3.3.1 MAC地址表
每台交换机中都有一个MAC地址表,存放了MAC地址与交换机端口编号之间的映射关系。

MAC地址表记录了交换机学习到的其他设备的MAC地址与接口的对应关系。
交换机在转发数据帧时,根据数据帧的目的MAC地址查询MAC地址表。如果MAC地址表中包含与该帧目的MAC地址对应的表项,则直接通过该表项中的出接口转发该报文;如果MAC地址表中没有包含该帧目的MAC地址对应的表项时,交换机将采取泛洪方式在除接收接口外的所有接口发送该报文。
7.3.3.2 交换机的3种数据帧处理行为
交换机会通过传输介质进入其端口的每一个帧都进行转发操作,交换机的基本作用就是用来转发数据帧。
交换机对帧的处理行为一共有三种:泛洪(Flooding),转发(Forwarding),丢弃(Discarding)。
- 泛洪:交换机把从某一端口进来的帧通过所有其它的端口转发出去(注意,“所有其它的端口”是指除了这个帧进入交换机的那个端口以外的所有端口)。
- 转发:交换机把从某一端口进来的帧通过另一个端口转发出去(注意,“另一个端口”不能是这个帧进入交换机的那个端口)。
- 丢弃:交换机把从某一端口进来的帧直接丢弃。

泛洪
- 如果从传输介质进入交换机的某个端口的帧是一个单播帧,交换机会去MAC表查这个帧的目的MAC地址。如果查不到这个MAC地址,则交换机将对该单播帧执行泛洪操作。
- 如果从传输介质进入交换机的某个端口的帧是一个广播帧,交换机不会去查MAC地址表,而是直接对该广播帧执行泛洪操作。

如图所示:
场景一:主机1想要访问主机2,发送单播数据帧,交换机收到后,若MAC地址表中查不到对应的表项,则会泛洪该数据帧。
场景二:主机1想要访问主机2,但不知道对应的MAC地址,则会发送ARP请求报文,该报文为广播数据帧,交换机收到后,则会泛洪该数据帧。
转发
如果从传输介质进入交换机的某个端口的帧是一个单播帧,则交换机会去MAC表查这个帧的目的MAC地址。
如果查到了这个MAC地址表,则比较这个MAC地址在MAC地址表中对应的端口编号是不是这个帧从传输介质进入交换机的那个端口的端口编号。如果不是,则交换机执行转发操作(将该帧送至该帧目的MAC地址在MAC地址表中对应的那个端口,并从那个端口发送出去)。

如图所示:
主机1想要访问主机2,发送单播数据帧,交换机收到后,在MAC地址表中查到了对应的表项,则会点对点转发该数据帧。
丢弃
如果从传输介质进入交换机的某个端口的帧是一个单播帧,则交换机会去MAC表查这个帧的目的MAC地址。
如果查到了这个MAC地址表,则比较这个MAC地址在MAC地址表中对应的端口编号是不是这个帧从传输介质进入交换机的那个端口的端口编号。如果是,则交换机将对该帧执行丢弃操作。

如图所示:
主机1想要访问主机2,发送单播数据帧,交换机1收到后,若MAC地址表中查不到对应的表项,则会泛洪该数据帧。
交换机2收到该数据帧后,发现目的MAC地址对应的端口就是接收数据帧的端口,则会丢弃该数据帧。
7.3.3.3 交换机的MAC地址学习
1、初始状态下,交换机并不知道所连接主机的MAC地址,所以MAC地址表为空。

2、主机1想要发送数据给主机2(假设已知对端的IP地址和MAC地址),会封装数据帧,包含自己的源IP地址和源MAC地址。
交换机收到后会查自己的MAC地址表,发现没有对应表项,则收到的数据帧是“未知单播帧” 。

3、由于收到的数据帧是“未知单播帧”,因此交换机会泛洪该数据帧。同时,交换机将收到的数据帧的源MAC地址和对应端口编号记录到MAC地址表中。

注意:MAC地址表中动态学习的表项并非永远有效,每一条表项都有一个生存周期,到达生存周期仍得不到更新的表项将被删除,这个生存周期被称作老化时间。例如华为S系列交换机的老化时间缺省值是300秒。
4、广播网络中的所有主机均会收到该数据帧,但是只有主机2会处理(因为目的MAC地址是主机2)。
主机2会回复数据帧给主机1,也是单播数据帧。

5、交换机收到该单播数据帧后,会查看自己的MAC地址表,发现有对应的表项,则将数据从对应的端口转发出去。

同时,交换机将收到的数据帧的源MAC地址和对应端口编号记录到MAC地址表中。
7.4 同网段数据通信全过程

场景描述:
任务:主机1想要访问主机2
主机:初始化状态,仅知道本机IP地址和MAC地址(假设已获取对端IP地址)
交换机:刚上电,初始化状态
1、主机1在发送数据报文前,需要先进行报文封装,包括源目IP地址、源目MAC地址等。

2、初始状态
主机1为了进行报文封装,会查本地的ARP缓存表。初始状态下,主机1的ARP缓存是空的。
而刚上电的交换机,初始状态下,交换机的MAC地址表也是空的。

3、泛洪数据帧
主机1发送ARP请求报文,请求目的MAC地址。
交换机收到的数据帧后查MAC地址表,发现没有对应表项,则向所有非接收端口,泛洪该数据帧。

4、学习MAC地址

交换机将收到的数据帧的源MAC地址和对应端口记录到MAC地址表中。
5、目标主机回复
主机2收到ARP请求报文后,会进行相应的处理,并发送ARP响应报文,回复主机1。
交换机收到的数据帧后查MAC地址表,发现有对应表项,则向对应端口转发该数据帧;并且交换机将收到的数据帧的源MAC地址和对应端口记录到MAC地址表中。
最终,主机1收到主机2的ARP响应报文后,就会将对应的IP地址和MAC地址记录到自己的ARP缓存中,并封装自己的报文,访问主机2。


浙公网安备 33010602011771号