以太网协议

以太网不是一种具体的网络,是一种技术规范。以太网是当今现有局域网采用的最通用的通信协议标准。该标准定义了在局域网(LAN)中采用的电缆类型和信号处理方法。以太网络是建立在CSMA/CD(载波监听多路访问/冲突检测)机制上的一种广播型网络。CSMA/CD的工作原理可简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发。

以太网协议定义了数据帧在以太网上的传输标准,了解以太网协议是充分理解数据链路层通信的基础。

以太网帧

以太帧格式:

以太网技术所使用的帧称为以太网帧,简称以太帧,以太帧有两种格式:IEEE802.3和Ethernet_Ⅱ

以太帧类型:
  1. 单播以太帧(目的mac地址为单播mac地址)
  2. 广播以太帧(目的mac地址为广播mac地址)
  3. 组播以太帧(目的mac地址为组播mac地址第一字节第8bit为1)
补充:MAC地址

MAC地址的作用是唯一标识一个网卡,可以通过MAC地址进行同网段的数据访问(不同网段使用IP地址)。MAC地址长48bit,通常采用16进制表示。前24bit为OUI(厂商代码),由IEEE分配给生产商,用以表示哪个厂家生产,后24bit由厂家自行分配。(一个VLAN是一个网段,一个网段是一个广播域)
MAC地址分为三类:

  1. 单播MAC地址:也称物理MAC地址,唯一的标识以太网上的一个终端,该地址为全球唯一的硬件地址,其第一字节第8bit为0。
  2. 广播MAC地址:全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示局域网上的所有终端设备。
  3. 组播MAC地址:除广播地址外,第8bit为1的MAC地址为组播MAC地址,用来代表局域网上的一组终端,不能作为源地址,只能作为目的地址。

以太网交换机

二层交换机一般用于接入层,工作在数据链路层,它对数据包的转发是建立在MAC地址基础之上。此外还有三层交换机,在此不做叙述,以下皆针对二层交换机

MAC地址表

每台交换机中都有一个MAC地址表,存放了MAC地址与交换机端口之间的映射关系。交换机在转发数据帧时,根据数据帧的目的MAC地址查询MAC地址表。如果MAC地址表中包含与该帧目的MAC地址对应的表项,则直接通过该表项中的出接口转发该报文;如果MAC地址表中没有包含该帧目的MAC地址对应的表项时,交换机将采取泛洪方式在除接收接口外的所有接口发送该报文。(mac地址表中,一个mac地址对应一个接口,一个接口可以对应多个mac地址)

交换机的三种数据帧处理行为

泛洪:交换机把从某一端口进来的帧通过所有其它的端口转发出去(两种情况:1、单播帧,交换机在MAC地址表中找不到目的MAC地址。----未知单播帧2、广播帧)注意与目的MAC地址未知,需查询arp缓存表的情况相区分
转发:交换机把从某一端口进来的帧通过另一个端口转发出去(单播帧:找到目的MAC地址,且对应端口不是该帧进入交换机的端口)
丢弃:交换机把从某一端口进来的帧直接丢弃(单播帧:找到目的MAC地址,但对应端口是该帧进入交换机的端口)

交换机的MAC地址学习

初始状态下,交换机MAC地址表为空,主机1想经由交换机转发数据帧到主机2.

  1. 主机1封装好自己的数据帧,交换机收到后查询MAC地址表,发现没有对应项,将该数据帧定义为未知单播帧。
  2. 交换机对该数据帧泛洪,与此同时,学习该数据帧的源MAC地址,与接收端口关联,在MAC地址表中建立对应表项。
  3. 广播域中的所有主机均会收到该数据帧,但只有主机2会响应,主机2回复单播数据帧给主机1。
  4. 由于MAC地址表中具备主机1的表项,交换机对来自主机2的数据帧执行转发,与此同时,学习主机2数据帧的源MAC地址,与接收端口关联,在MAC地址表中建立对应表项。

至此,MAC地址表学习完毕。

交换机的工作原理

交换机的基本作用就是用来转发数据帧,具体地说,在收到数据帧后,交换机学习帧的源MAC地址,关联对应端口,在MAC地址表中建立对应表项,与此同时,在MAC地址表中查询该帧的目的MAC地址,并将帧从对应的端口转发出去。

情景模拟

主机1希望访问主机2,arp缓存表、MAC地址表皆为空,主机1、2只知道本机MAC地址,双方IP地址,双方处于同一网段。

  1. 主机1进行报文封装,由于目的MAC地址未知,故查询本机arp缓存表,发现不存在目标IP对应的MAC信息,发送arp请求报文(广播形式,目的MAC地址全为1),请求目标MAC地址。
  2. 交换机收到后发现是广播数据帧,泛洪处理,同时学习源MAC地址记入本机MAC地址表中。
  3. 主机2收到arp请求报文后向主机1发送arp响应报文(单播),回复主机1,同时在arp缓存表中记录主机1MAC地址和IP地址的映射关系。
  4. 交换机在MAC地址表中查询到相应表项,将arp响应报文转发给主机1,同时学习主机2MAC地址。
  5. 主机1收到arp响应报文后,同样将对应的MAC地址和IP地址记录进arp缓存表中,并封装好自己的报文,发送给主机2