1 以太网协议
以太网是当今现有局域网(Local Area Network,LAN)采用的最通用的通信协议标准,该标准定义了在局域网中采用的电缆类型和信号处理方法。
以太网是建立在CSMA/CD(Carrier Sense Multiple Access/Collision Detection,载波监听多路访问/冲突检测)机制上的广播型网络。

1.1 冲突域
冲突域是指连接在同一共享介质上的所有节点的集合,冲突域内所有节点竞争同一带宽,一个节点发出的报文(单播、组播、广播),其余节点都可以收到。

CSMA/CD技术相当于HUB的连接,当前HUB已被淘汰,使用交换机代替。
传统以太网:
在传统的以太网中,同一介质上的多个节点共享链路带宽,争用链路的使用权,这样就会发生冲突。
同一介质上的节点越多,冲突发生的概率越大。
交换机组网:
交换机不同接口发送和接收数据独立,各接口属于不同的冲突域,因此有效隔离了网络中物理层冲突域,使通过它互连的主机(或网络)之间不必再担心流量大小对于数据发送冲突的影响。
1.2 广播域
广播报文所能到达的整个访问范围称为二层广播域,简称广播域,同一广播域内的主机都能收到广播报文。

传统以太网:
在传统的以太网中,同一介质上的多个节点共享链路,一台设备发出的广播报文,所有设备均会收到。
交换机组网:
交换机对广播报文会向所有的接口都转发,所以交换机的所有接口连接的节点属于一个广播域。
2 以太网帧
2.1 以太网帧格式
以太网技术所使用的帧称为以太网帧(EthernetFrame),或简称以太帧。
以太帧的格式有两个标准:Ethernet_II格式和IEEE 802.3格式。

2.2 MAC地址
MAC(Media Access Control)地址在网络中唯一标识一个网卡,每个网卡都需要并拥有唯一的一个MAC地址。
一块网卡的MAC地址是具有全球唯一性的。
关于十六进制:19、AF(A代表10、B代表11、C代表12、D代表13、E代表14、F代表15)

2.2.1 IP地址与MAC地址
每个以太网设备出厂时都有唯一的MAC地址,但在设备接入网络时,会同时为每台主机再分配一个IP地址。

IP地址的特点:
IP地址是唯一的
IP地址可变
基于网络拓扑进行IP地址分配
MAC地址的特点:
MAC地址是唯一的
MAC地址不可变
基于制造商进行MAC地址分配
2.2.2 MAC地址表示
一个MAC地址有48bit,6Byte。
MAC地址通常采用”十六进制” + “-“表示。

2.2.3 MAC地址构成及分类
OUl (Organizationally Unique Identifier):厂商代码,由IEEE分配,3 Byte, 24 bit。

1.单播以太帧
简称:单播帧
目的MAC地址为单播MAC地址的帧

2.广播以太帧
简称:广播帧
目的MAC地址为广播MAC地址的帧

3.组播以太帧
简称:组播帧
目的MAC地址为组播MAC地址的帧

3 以太网二层交换机
以太网二层交换机转发数据的端口都是以太网口,并且只能够针对数据的二层头部(以太网数据帧头)中的MAC地址进行寻址并转发数据。

3.1 交换机的转发方式
交换机有以下3种转发方式。
1.直通转发
数据帧的结构如下图所示。直通转发是指交换机只要看到目的 MAC 地址就开始执行转发过程,它不检测错误,而是直接转发数据帧。
直通转发的优点是不需要存储,延迟非常小、交换特别快;缺点是因为数据包内容并没有被以太网交换机保存下来,所以无法检查传输的数据包是否有误。

2.存储转发
存储转发是指交换机在接收到完整的数据帧后才开始转发过程,其优点是会进行CRC检查,发现错误数据包将会丢弃;缺点是在处理时延时较长。
3.碎片隔离
碎片隔离是指交换机接收完数据包的前64字节后根据帧头信息查表进行转发。此转发模式结合了直通转发和存储转发的优点。与直通转发一样,碎片隔离不用等待接收完全部数据帧就可以转发,会先检查数据包的长度是否够64字节(512比特),如果小于64字节、说明是假包(或者残帧),则丢弃该数据包;如果大于64字节,则进行转发。碎片隔离同存储转发一样,可以提供错误检测,能够检测前64字节的帧是否存在错误,并丢弃错误帧。优点是可以避免假包的转发,缺点是不提供数据校验。
华为交换机的转发方式默认为存储转发。
3.2 交换机工作原理

1.基于源MAC地址学习
2.基于目的MAC地址转发
主机1发出的数据帧:
源MAC:MAC1、 目的MAC:MAC2、源IP:IP1、目的IP:IP2、载荷
在收到数据帧后,交换机学习帧的源MAC地址,然后在MAC地址表中查询该帧的目的MAC地址(本例中MAC2:0050-5600-0002),并将帧从对应的端口转发出去。
交换机MAC地址表:
每台交换机中都有一个MAC地址表,存放了MAC地址与交换机端口编号之间的映射关系。

交换机的MAC地址学习:
1.初始情况,交换机的MAC地址表是空的
初始状态下,交换机并不知道所连接主机的 MAC 地址,所以 MAC 地址表是空的。交换机(SWA)为初始状态,在收到主机1发送的数据帧之前,MAC地址表中没有任何表项。

2.主机1发送数据帧给主机2,交换机GE0/0/1口接收到数据帧后,在MAC地址表中查询该帧的目的MAC地址,发现没有对应表项,则收到的数据帧是未知单播帧。

3.交换机在MAC地址表中没有查到对应表项,则交换机对该单播帧执行泛洪操作。同时,交换机学习该数据帧的源MAC地址,并创建对应的MAC地址表项,与接收口GE0/0/1关联。
基于源MAC地址学习:
主机1向主机2发送数据时,一般会先发送 ARP请求帧来获取主机2的MAC地址,此ARP请求帧中的目的MAC地址是广播地址,源 MAC 地址是主机1的MAC地址。SWA接收到该帧后,会将源 MAC 地址与接收接口的映射关系添加到MAC地址表中。默认情况下,交换机学习到的MAC地址表项的老化时间为300s。如果在老化时间内再次收到主机1发送的数据帧,则SWA中保存的主机1的MAC地址与 GE0/0/1 接口的映射的老化时间将会被刷新。此后,如果交换机接收到目标 MAC 地址为0050-5600-0001的数据帧时,都将通过 GE0/0/1 接口转发。
管理员手工添加的MAC地址表项不会被老化刷新。

4.交换机其他端口连接的主机,也会收到该数据帧,但是会丢弃。主机2收到并处理该数据帧,向主机1回复,将数据帧发往交换机。

如下图所示,SWA把主机A的MAC地址记录到自己的MAC地址表后,查看到数据帧的MAC地址为FF-FF-FF-FF-FF-FF,它便向除了源接口GE0/0/1外的所有接口进行转发,所以主机B和主机C都会接收该数据帧。

5.交换机在MAC地址表中查到了对应表项,则交换机对该单播帧执行转发操作,将数据帧从GE0/0/1口转发出去。同时,交换机学习该数据帧的源MAC地址,并创建对应的MAC地址表项,与接收口GE0/0/2关联。
基于目的MAC地址转发:
所有主机接收到数据帧后,都会查看该数据帧。发现目的地址不是自己的主机不会回复该数据帧,而主机2会发送ARP回复数据帧,此回复数据帧的目的MAC地址为主机1的MAC地址,源MAC地址为主机2的MAC地址。SWA在收到回复数据帧时,会将该帧的源 MAC 地址和接口的映射关系添加到 MAC地址表中。如果此映射关系在MAC地址表中已经存在,则会被刷新。然后SWA查询MAC地址表,根据帧的目的MAC地址找到对应的转发接口后,从GE0/0/1接口转发此数据帧。

3.3 交换机的数据帧处理
交换机会对通过传输介质进人其接口的每一个帧都进行转发操作,基本作用就是用来转发数据帧。
交换机对数据帧的处理行为有三种:泛洪(Flooding)、转发(Forwarding)和套弃(Discarding)。

3.2.1 泛洪
泛洪是指交换机把从某一接口进人的帧通过其他所有接口转发出去。其他所有接口是指除了该帧进人交换机的接口以外的所有接口。
主机1想要访问主机2,发送单播数据帧,交换机从GE0/0/1接口接收到数据帧后,发现在MAC地址表中查不到对应的表项,则会泛洪该数据帧,即把它从GE002接口和GE0/0/3接口发送出去。
1.接收的是未知单播帧:
交换机在MAC地址表中查不到这个帧的目的MAC地址,则交换机对该单播帧执行泛洪操作。
2.接收的是广播帧:
交换机不会去查MAC地址表,直接对该广播帧执行泛洪操作。

3.2.2 转发
转发是指交换机把从某一接口进人的帧通过另一个接口转发出去,另一个接口不能是这个帧进人交换机的接口。
主机1想要访问主机2,发送单播数据帧,交换机从GE0/0/1接口接收到数据帧后,在 MAC地址表中查到了对应的表项,就会点对点地转发该数据帧,把数据帧从GE0/0/2接口发送出去。
接收的是已知的单播帧:
交换机在MAC地址表中查到了这个帧的目的MAC地址,并且表中对应的端口编号不是这个帧从传输介质进入交换机的那个端口编号,则交换机对该单播帧执行转发操作。

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