以太网是当今现有局域网(Local Area Network, LAN)采用的最通用的通信协议标准,定义了局域网中采用的电缆类型和信号处理方法。
以太网是建立在CSMA/CD(Carrier Sense Multiple Access/Collision Detection,载波监听多路访问/冲突检测)机制上的广播型网络。
- 早期的以太网: 以太网是建立在CSMA/CD机制上的广播型网络。冲突的产生是限制以太网性能的重要因素,早期的以太网设备如集线器HUB是物理层设备,不能隔绝冲突扩散,限制了网络性能的提高。
- 交换机组网: 交换机做为一种能隔绝冲突的二层网络设备,极大的提高了以太网的性能,并替代HUB成为主流的以太网设备。但是交换机对网络中的广播数据流量不做任何限制,这也影响了网络的性能。
冲突域是指连接在同一共享介质上的所有节点的集合。 冲突域内所有节点竞争同一宽带,一个节点发出的报文(无论是单播、组播、广播),其余节点都可以收到。
在共享网络,以太网络使用CSMA/CD技术,避免冲突问题。CSMA/CD的基本工作过程如下:
- 终端设备不停的检测共享线路的状态。
- 如果线路空闲则发送数据。
- 如果线路不空闲则一直等待。
- 如果有另外一个设备同时发送数据,两个设备发送的数据必然产生冲突,导致线路上的信号不稳定。
- 终端设备检测到这种不稳定之后,马上停止发送自己的数据。
- 终端设备发送一连串干扰脉冲,然后等待一段时间之后再进行发送数据。发送干扰脉冲的目的是为了通知其他设备,特别是跟自己在同一个时刻发送数据的设备,线路上已经产生了冲突。
?> CSMA/CD的工作原理可简单总结为:先听后发,边发边听,冲突停发,随机延迟后重发。
广播报文所能到达的整个访问范围称为二层广播域,简称广播域。
- 早期以太网
同一介质上的多个节点共享链路,一台设备发出的广播报文,所有设备均会收到。
- 交换机组网
交换机对广播报文会向所有的接口都转发,所以交换机的所有接口连接的节点属于一个广播域。
💡 全1 MAC地址FF-FF-FF-FF-FF-FF为广播地址,所有节点都会处理目的地址为广播地址的数据帧,该数据帧所能到达的整个访问范围称为二层广播域,简称广播域。
网络接口卡(Network Interface Card, NIC)也称为“网卡”。
- 网络接口
简称“网口”或“接口”或“端口”。
- 网卡
每个网口都有一块网卡与之对应。
计算机或交换机通过网卡来转发数据。
交换机的每一个接口都是一块网卡。
以太网技术所使用的帧称为以太网帧(Ethernet Frame),或简称以太帧。 以太帧的格式有两个标准:Ethernet_II格式和IEEE 802.3格式。
Ethernet Ⅱ以太帧:
- DMAC:6字节,目的MAC地址,6字节,该字段标识帧的接收者。
- SMAC:6字节,源MAC地址,6字节,该字段标识帧的发送者。
- Type:2字节,协议类型。常见值:
- 0x0800:Internet Protocol Version 4 (IPv4) ;
- 0x0806:Address Resolution Protocol (ARP) 。
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字段相同。
💡 数据帧的总长度为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的由来。
MAC (Media Access Control)地址在网络中唯一标识一个网卡。 一块网卡的MAC地址是具有全球唯一性的。
IP地址的特点:
- IP地址是唯一的
- IP地址可变
- 基于网络拓扑进行IP地址分配
- 通过IP地址进行不同网段的数据访问 MAC地址的特点:
- MAC地址是唯一的
- MAC地址不可变
- 基于制造商进行MAC地址分配
- 通过MAC地址进行同网段的数据访问
MAC地址由48比特(6个字节)长,12位的16进制数字组成。
通常采用十六进制
+-
表示。
一个制造商在生产制造网卡之前,必须先向IEEE注册,以获取一个长度为24bit (3字节)的厂商代码,也称为OUI(Organizationally Unique Identifier)。 后24bit由厂商自行分派,是各个厂商制造的所有网卡的唯一编号。
- 单播MAC地址:也称物理MAC地址,这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址。
- 单播MAC地址用于标识链路上的一个单一节点。
- 目的MAC地址为单播MAC地址的帧发往一个单一的节点。
- 单播MAC地址可以作为源或目的地址。
- 注意:单播MAC地址具有全球唯一性,当一个二层网络中接入了两台具有相同MAC地址的终端时(例如误操作等),将会引发通信故障(例如这两台终端无法相互通信),且其他设备与它们之间的通信也会存在问题。
- 广播MAC地址:全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示局域网上的所有终端设备。
- 广播MAC地址可以理解为一种特殊的组播MAC地址。
- 其具体格式为:FFFF-FFFF-FFFF。
- 目的MAC地址为广播MAC地址的帧发往链路上的所有节点。
- 组播MAC地址:除广播地址外,第7bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表局域网上的一组终端。
- 组播MAC地址用于标识链路上的一组节点。
- 目的MAC地址为组播MAC地址的帧发往一组节点。
- 组播MAC地址不能作为源地址,只能作为目的地址。
根据目标地址判断,发送给单个目标
单播帧:
- 目的MAC地址为单播MAC地址的帧
- 每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端
根据目标地址判断,发送给所有目标
广播帧:
- 目的MAC地址为广播MAC地址的帧
- 广播帧的目的MAC地址为十六进制的FF-FF-FF-FF-FF-FF,所有收到该广播帧的主机都要接收并处理这个帧
- 广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能
- 当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式
根据目标地址判断,发送给一组目标
组播帧:
- 目的MAC地址为组播MAC地址的帧
- 组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧
- 组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1
- 当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式
以太网二层交换机转发数据的端口都是以太网口,并且只能够针对数据的二层头部(以太网数据帧头)中的MAC地址进行寻址并转发数据。
- 在园区网络中,交换机一般来说是距离终端用户最近的设备,用于终端接入园区网,接入层的交换机一般为二层交换机。
- 二层交换设备工作在TCP/IP对等模型的第二层,即数据链路层,它对数据包的转发是建立在MAC(Media Access Control )地址基础之上的。
二层交换机工作在数据链路层,它对数据帧的转发是建立在MAC地址基础之上的。交换机不同的接口发送和接收数据是独立的,各接口属于不同的冲突域,因此有效地隔离了网络中的冲突域。
二层交换设备通过学习以太网数据帧的源MAC地址来维护MAC地址与接口的对应关系(保存MAC与接口对应关系的表称为MAC地址表),通过其目的MAC地址来查找MAC地址表决定向哪个接口转发。
⼆层交换设备通过学习以太⽹数据帧的源MAC地址来维护MAC地址与接⼝的对应关系(保存MAC与接⼝对应关系的表称为MAC地址表),通过其⽬的MAC地址来查找MAC地址表决定向哪个接⼝转发。
交换机把从某⼀端⼝进来的帧通过所有其它的端⼝转发出去(注意,“所有其它的端⼝”是指除了这个帧进⼊交换机的那个端⼝以外的所有端⼝)。
交换机把从某⼀端⼝进来的帧通过另⼀个端⼝转发出去(注意,“另⼀个端⼝”不能是这个帧进⼊交换机的那个端⼝)。
交换机把从某⼀端⼝进来的帧直接丢弃。
- 任务:主机1想要访问主机2
- 主机:初始化状态,仅知道本机IP地址和MAC地址(假设已获取对端IP地址)
- 交换机:刚上电,初始化状态
以太网头部中需要封装:
- 源MAC地址
- 目的MAC地址
主机1为了进行报文封装,会查本地的ARP缓存表。初始状态下,主机1的ARP缓存是空的。 而刚上电的交换机,初始状态下,交换机的MAC地址表也是空的。
- 主机1的ARP缓存表
Host 1>arp-a
Internet Address Physical Address Type
-------------------------------------------
-------------------------------------------
- 交换机的MAC地址表
[Switch]display mac-address verbose
MAC address table of slot 0:
------------------------------------
MAC Address Port Type
------------------------------------
------------------------------------
[!cmd] display mac-address verbose
#查看交换机mac地址表
主机1发送ARP请求报文,请求目的MAC地址。 交换机收到的数据帧后查MAC地址表,发现没有对应表项,则向所有非接收端口,泛洪该数据帧。
- 主机1发出的ARP Request
- 交换机的MAC地址表
[Switch]display mac-address verbose
MAC address table of slot 0:
------------------------------------
MAC Address Port Type
------------------------------------
------------------------------------
交换机将收到的数据帧的源MAC地址和对应端口记录到MAC地址表中。
- 主机1发出的ARP Request
- 交换机的MAC地址表
[Switch]display mac-address verbose
MAC address table of slot 0:
------------------------------------
MAC Address Port Type
------------------------------------
0050-5600-0001 GE0/0/1 dynamic
------------------------------------
主机2收到ARP请求报文后,会进行相应的处理,并发送ARP响应报文,回复主机1。 交换机收到的数据帧后查MAC地址表,发现有对应表项,则向对应端口转发该数据帧;并且交换机将收到的数据帧的源MAC地址和对应端口记录到MAC地址表中。 最终,主机1收到主机2的ARP响应报文后,就会将对应的IP地址和MAC地址记录到自己的ARP缓存中,并封装自己的报文,访问主机2。
- 交换机的MAC地址表
[Switch]display mac-address verbose
MAC address table of slot 0:
------------------------------------
MAC Address Port Type
------------------------------------
0050-5600-0001 GE0/0/1 dynamic
0050-5600-0002 GE0/0/2 dynamic
------------------------------------
- 主机2发出的ARP Reply
- 半双工half-duplex:通信双方不能同时发送接收数据
- 全双工full-duplex:通信双方可以同时发送接收数据
- 速率Speed:接口两端连接时进行协商,协商失败无法正常通信
- 可以设置两端的通信模式默认是自动(选取两端设备的最低值)
- 网络速度无其他因素影响,但网速很慢可能是半双工模式
[!cmd] undo negotiation auto #取消自动协商(默认为自动协商)
speed speed-value #设置速率,单位为bit/s
duplex {full|half} #设置通信模式为全双工或半双工