网络以太网之(1)基础概念
Author: Once Day Date: 2024年4月1日
一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦…
漫漫长路,有人对你微笑过嘛…
全系列文档可参考专栏:通信网络技术_Once-Day的博客-CSDN博客。
参考文章:
- 《TCP/IP详解卷一》
文章目录
- 网络以太网之(1)基础概念
- 1.引言
- 2. 以太网的标准
- 3. CSMA/CD 协议
- 4. 以太网的MAC地址
- 5. 以太网的冲突域和广播域
- 6. 以太网帧格式
- 6.1 帧间隙和前导码
- 7.以太网自协商
- 8.以太网流控制
- 9.网桥和二层交换机
- 10. IEEE保留特殊MAC地址
1.引言
局域网是一种使用广播信道的数据链路层网络,以太网是其最典型的代表。
具有以下特点:
- 具有广播功能
- 便于系统的扩展和逐渐演变
- 提高了系统的可靠性、可用性。生存性。
以太网是一种共享介质的局域网技术,多个站点链接到同一个共享介质上,同一时间只能有一个站点发送数据,这种链路连接着多个终端,就是多路访问。
冲突域是连接到同一个导线的所有节点的集合:所有的节点都共享带宽,就会发生冲突,且一个节点发出的报文(无论是单播、组播、广播)其余节点都可以收到。
广播域:网络中能接收任一设备发出的广播帧的所有设备的集合。简单的说如果站点发出一个广播信号,所有能接收收到这个信号的设备范围称为一个广播域。传统的二层交换机所有端口都属于一个广播域。
以太网包含以下三种帧:
- 单播帧(unicast),一对一,收到帧的MAC地址与本站硬件地址相同。
- 广播帧(broadcast),一对全体,发送给本局域网上所有站点的帧,地址全1。
- 多播帧(multicast),一对多,发送给本局域网上一部分站点的帧。
以太网适配器借助集线器进行组网,有以下三种形式:
- 星形网,集线器在中间,其它设备都连上。
- 环形网,设备连在一个圆上。
- 总线网,所有设备连在一个线上,总线两端匹配电阻可吸收能量。
集线器工作在物理层,只是简单的转发比特,不进行碰撞检测。
以太网需要考虑如何共享信道,有以下两种大类:
- 静态划分信道,如FDMA、CDMA、TDMA。
- 动态媒体接入控制,如随机接入和受控接入。
随机接入包含MA、CSMA、CSMA/CD、CSMA/CA。
受控接入包含预约、轮询、令牌传递。
信道划分协议代价高昂,不适合局域网使用。
轮询协议中要求其中一个结点为主节点,然后以循环的方式遍历整个网络,优点是提高了效率,缺点是引入了轮询时延,且主节点一旦故障,网络将失去瘫痪。
令牌传递协议,协议中没有主节点,一个令牌的特殊帧在节点之间以某种固定的次序进行交换。
随机接入协议,每个节点能以信道的全部速率进行发送,当碰撞时 ,每个节点反复的重发它的帧,直到改帧通过为止。最常用的有ALOHA协议(检测到冲突不会停止发送)和载波监听多点接入(CSMA)协议。
以太网使用的是CSMA/CD协议,但新的以太网由于引入了以太网交换机,已经不共享信道了,也就不要碰撞检测了。
2. 以太网的标准
1982年的DIX Ethernet V2是第一个正式以太网标准。第一个是1983年IEEE 802委员会定义的IEEE 802.3标准。两者的帧有些许不同,但大致算兼容。
IEEE 802委员会曾把局域网的数据链路层拆分成逻辑链路控制LLC子层和媒体接入控制MAC子层。
但LLC子层逐渐已经被废弃了。对于这种结构,物理层的内容都放在MAC子层了,即MAC子层以下对LLC子层是完全透明的。
3. CSMA/CD 协议
最早的以太网把所有的站点连到一根总线上:
- 采用无连接的模式,不对帧编号,也不用确认。提供尽最大服务的交付,如果收到校验错误帧,就直接丢弃帧。
- 同一时间只允许一台计算机发送数据。
以太网使用曼彻斯特编码,因而无需提供长度信息。
协议全称:载波监听多点接入/碰撞检测。
- 多点接入,说明这是总线型网络。
- 载波监听,不停检测信道是否空闲。
- 碰撞检测,边发送边监听,如果信号电压服务超过了门限值,可以认为总线上至少有两个站在发送数据。
电磁波在总线上以有限的速率传播,在1km电缆的传播时延约为5us。
将总线上单程端到端传播时延即为e。
那么A站点至少需要2e的时间知道自己数据与B站点发送的数据有无冲突。即A数据到达B站点时,B站点也发出了数据,然后到达A站点。
实际情况时,要按最坏的情况考虑 ,即最远的两个端点。
CSMA/CD协议不支持同时发送和接收,所以工作在双向交替通信(半双工通信)。
在A站点发送数据的到B站点前,即0-e时间内:
- B站可能发送数据,因为它检测到信道空闲。
- 检测到A站数据后,B站停止发送数据。
- 最迟2e时,A站知道B站也发了数据,此时已发送的数据无效。
- 2e后,A站未检测到碰撞,则数据可以放心发送。
因此,0-2e这段时间也叫争用期(碰撞窗口)。
当检测到碰撞时,使用截断二进制指数退避算法确定重发时机:
- 规定基本争用期为2e。
- 从离散集合[0,(2^k-1)]中随机选出一个整数,记录为r,重传推后的时间就是r*e。当重传次数不超过10次时,k=重传次数。超过10次重传,k=10。
- 当重传到达16次时,还不能成功,就丢弃该帧,并向高层报告。
如果帧很短,发送时间小于2e,那么很有可能在发送完成后,发生碰撞,但又无法检测到,那么该帧就丢失了。
因此,以太网规定了一个最短帧长64字节。
对于10 Mbit/s以太网,发送512 bit需要51.2us,所以争用期可以固定为51.2us:
- 检测到碰撞就会停止发送,因此小于64字节的帧都是异常中止的无效帧,应丢弃。
- e=51.2/2=25.6us,则以太网端到端长度最大约为25.6us/5us*1km=5km。
因此,实用的以太网都能在争用期51.2us内检测到可能发生的碰撞。
此外还有强化碰撞信号,让其他用户能知道现在已经发生了碰撞。
一般发送32比特或48比特的人为干扰信号。
接收成功之后,还需等待一个帧间最小间隔9.6us(96bit),使刚接收到数据帧的站点的接收缓存来得及清理。
当总线式以太网的利用率达到30%时,就已经处于重载情况了,此时很多网络容量被碰撞消耗掉了。
CSMA/CD发送数据帧流程图:
4. 以太网的MAC地址
-
OUI: Organizationally unique identifier,代表网络硬件制造商编号,他由IEEE统一分配
-
24位address:代表该制造商所制造的某个网络产品(如网卡)的系列号,它由网络制造商分别并保证每个序列号唯一。
-
在OUI中,其中第一字节的最低位(I/G)表示此地址是单播地址还是组播地址,如果第一字节的最低位(LSB)=0,表示此地址为单播地址,如果为1,表示此地址为组播地址。第一字节的第二位(U/G)表示此地址由IEEE维护的全局地址还是局域性地址,U/G=0,表示IEEE全局维护地址,U/G=1,表示局域性维护地址。
几种MAC地址类型:
-
广播地址:FFFF:FFFF:FFFF
-
组播地址:0100:5E01:0101
-
单播地址:00D0:0011:2233
在数据帧帧中,目的MAC地址可以为上面三种类型的任意一种,但是源MAC地址只能为单播地址,并且IEEE规定,设备接收到源MAC地址不为单播的地址需要丢弃。
5. 以太网的冲突域和广播域
冲突域:
-
【定义】在同一个冲突域中的每一个节点都能收到所有被发送的帧。简单的说就是同一时间内只能有一台设备发送信息的范围。
-
【分层】基于OSI的第一层(数据链路层)物理层
-
【设备】第二层设备能隔离冲突域,比如Switch。交换机能缩小冲突域的范围,交换接的每一个端口就是一个冲突域。
广播域:
-
【定义】网络中能接收任一设备发出的广播帧的所有设备的集合。简单的说如果站点发出一个广播信号,所有能接收收到这个信号的设备范围称为一个广播域。
-
【分层】基于OSI的第二层(物理层) 数据链路层
-
【设备】第三层设备才能隔离广播域,比如Router。路由器能隔离广播域,其每一个端口就是一个广播域。
6. 以太网帧格式
-
每个以太网帧发送时都是以8个字节的前导码开始,Preamble是1和0交替(1 0 1 0 1 0…….)的7个字节数据,该部分的作用是通知接收方有数据帧到来,使其与输入的时钟保持同步,56bit 模式容许站点在帧的开始可以丢弃一些bit。SFD是一个字10101011,最后使用11,来通知接收方下一字段就是目的主机的地址了。实际上前导码都是在物理层加进去的,并不是帧的一部分。
-
Type/Length:2字节,根据数值的不同代表2种不同的封装格式,如果字段值在0x0000-0x05DC范围内,则表示该字段为Length,该帧为802.3 raw封装。如果字段值0x0600-0xFFFF范围内,则表示该字段为Type字段,该帧为Ethernet II封装,0x05DD-0x05FF保留没有使用。
-
PayLoad:上层协议有效载荷,最小为46字节,最大为1500字节,对于Type封装格式,上层协议必须保证该字段的值大于46字节,对于Length封装,对于有效载荷不够46字节的报文链路层必须进行填充。因为CSMA/CD协议要求最小比特为512,即64字节。
-
FCS:4字节的校验和。
为什么Ethernet II 帧不需要长度?
那么Ethernet II为什么不需要Length呢?因为当时DIX联盟只跑了三种协议 –0x0600 XNS(施乐),0x0800 IP(Internet协议), 0x6003 DECNET。而这些协议都有自己的长度字段。所以不用在以太网头里面再指定Length,只需表明Type即可。
为什么IEEE接收Type后一切都这么顺利?
因为之前DIX公司分配的以太网Type的值,最小的是0x0600 = 1536. 这个值大于1500. 所以这个值≤1500,代表的是长度,≥1536代表的是类型。
为什么最大帧是1518字节?
这个是链路层的MTU决定的,早期由于设备缓存及CPU处理能力的限制,无法处理巨型帧,所以规定IP MTU为1500. 其实目前的交换机等都可以传送巨型帧(9000字节以上)。
6.1 帧间隙和前导码
在以太网(Ethernet)传输中,前导码(Preamble)和帧间隙(Interframe Gap)是两个重要的概念。
-
前导码(Preamble),前导码是一个特定的比特模式,它用于告诉接收设备有一个帧开始传输。在以太网帧开始的部分,有一个7字节的前导码,它由交替的1和0组成,形成了一个"10101010…“的模式。这个模式为接收设备提供了一个"唤醒"信号,让它知道有一个帧正在开始。在前导码之后,还有一个1字节的起始帧定界符(SFD),其模式为"10101011”,标志着数据帧的开始。
-
帧间隙(Interframe Gap),帧间隙是两个连续的以太网帧之间的间隔时间。在以太网中,发送设备在发送完一个帧之后,必须等待一段时间(帧间隙)才能发送下一个帧。这个间隔是为了确保网络上的其他设备有足够的时间来检测到网络已空闲,然后开始传输他们自己的帧。
在以太网规范中,帧间隙的时间是9.6微秒,这个时间长度等价于传输96位的时间。这个间隔时间是在以太网的载波侦听多路访问/碰撞检测(CSMA/CD)机制基础之上设定的,用于避免在网络上的设备之间发生碰撞。
总结一下,前导码和帧间隙是以太网帧格式和以太网传输机制的两个重要组成部分。前导码是用于标识帧的开始,而帧间隙则是在连续的帧之间提供了一段必要的间隔时间。因此一个以太网报文在最小64字节上,还需要额外加上20字节的大小,这样就挤占了全部的带宽。
10G以太网(10 Gigabit Ethernet)及以上的速度规格,如40G以太网,100G以太网,不再使用CSMA/CD(载波侦听多路访问/碰撞检测)协议。
CSMA/CD是在原始的以太网和快速以太网(10 Mbps 和 100 Mbps)中使用的,当多个设备共享同一条通信线路时,它们使用CSMA/CD协议来避免数据发送的冲突。然而,随着网络设备的发展,人们开始使用交换机(switch)和全双工模式来增加网络的带宽和效率。
当以太网开始运行在1Gbps时,就已经完全迁移到了全双工模式,并且不再使用CSMA/CD。在全双工模式下,发送和接收数据是同时进行的,所以不存在数据冲突的问题。因此,10G以太网和更高速率的以太网也都是使用全双工模式,不再需要CSMA/CD。
所以,现在的高速以太网,包括10G以太网,40G以太网,100G以太网,都是使用全双工模式,并且不再使用CSMA/CD协议。
在高速以太网(如10G以太网和更高速度)中,前导码和帧间隙仍然存在,但是它们的具体实现细节可能会有所不同。
前导码(Preamble):前导码的主要功能是为接收端提供一个同步的机会,让它能够正确地解析接下来的数据帧。在所有类型的以太网中,包括高速以太网,前导码仍然是帧结构的一部分。
帧间隙(Interframe Gap):在原始的以太网和快速以太网(使用CSMA/CD协议)中,帧间隙的主要功能是为了减少数据帧的冲突。然而,在全双工的高速以太网中,由于发送和接收是同时进行的,不存在数据冲突的问题。尽管如此,帧间隙仍然被保留了下来,但它的主要功能已经变成了给网络设备处理和缓冲数据帧提供一点额外的时间,而不再是为了减少数据冲突。
总的来说,虽然高速以太网不再使用CSMA/CD协议,但是前导码和帧间隙仍然是以太网帧结构的一部分,只是它们的具体功能和实现细节可能会随着以太网速度的提升而有所不同。
7.以太网自协商
自协商功能允许一个网络设备能够将自己所支持的工作模式信息传达给网络上的对端,并接收对方可能传递过来的相应信息。
对于两端处于自协商工作方式的设备,最终协商的结果是采用二者技术能力域中优先级低的网口提供的工作方式工作。协商级别一般为1000Mfull,1000Mhalf,100Mfull ,100Mhalf,10Mfull,10Mhalf。
支持自协商(Autonegotiation)的以太网接口则在链路UP之前发送FLP(Fast Link Pulse),FLP实际上是一组LTP和数据脉冲的组合,它们表明一种含义:例如我支持100M全双工。
千兆设备几乎没有半双工的情况(虽然可以协商),所以很多双工的问题都不存在了。
自动协商允许设备用一种方式“讨论”可能的传输速率,然后选择双方可接受的最佳速率。它们使用叫做快速链路脉冲的FLP交换各自传输能力的通告。FLP可以让对端知道源端的传输能力是怎样的。当交换FLP时,两个站点根据以下从高到低的优先级侦测双方共有的最佳方式。
1000BASE-T全双工、1000BASE-T、100BASE-T2 全双工、100BASE-TX 全双工、100BASE-T2、100BASE-T4、100BASE-TX、10BASE-T 全双工、10BASE-T。
例如,A和B正在自动协商,并且A具有10/100/1000全半双工的能力,但是B只有10/100全半双工的能力,这样双方共有的最高链路能力为100,全双工。一旦双方进行自动协商,链路就会运行在双方能够支持的最佳能力下。
由于自动协商功能是IEEE后续制定的标准,存在的问题是部分站点不支持协商,为了支持这种情况,须要支持协商的站点具有BYPASS功能,即主动认为自己为半双工。这是为了避免双工不匹配。
8.以太网流控制
在网络中,可能发送端具有较高的处理能力,而接收端处理能力较低,为了避免数据在以太网中传输的过程中由于拥塞导致的数据丢失,引入flow control概念
-
半双工模式下,以太网利用CSMA/CD机制处理冲突和链路使用问题。根据CSMA/CD机制,半双工的模式下,采取的流控方式为Backpressure,即背压。该种方法有两种实现,一个是数据接收者有意制造一次冲突,数据发送者检测到冲突采取Backoff,这样就延缓了数据的发送;另外一个方法是制造载波信号,使数据发送者感觉到接收者要发送数据,从而通过检测到载波而进行延时传输。
-
在全双工模式下,接收者通过发送一种特殊的数据帧来通知发送者,停止发送报文,这种特殊的数据帧称为PAUSE帧。
以太网Pause帧格式:
-
PAUSE帧的长度固定为64字节(包括CRC)
-
PAUSE帧的目的MAC为组播MAC :0180-c200-0001
-
源MAC为发送PAUSE帧的节点的MAC
-
LENTH/TYPE字段固定为0x8808
-
MAC 控制参数域字段表示要求发送者暂停发送流量的时间,数值有效范围为0-65535, 单位为512bit time(bit time指链路上传输1bit需要的时间,如100M链路bit time为10ns)。如果数据报文的接收者在发送PAUSE帧后,在PAUSE帧发送的等待时间超时之前可以处理数据报文,则再发送一个等待时间为0的PAUSE帧通知数据发送者开始发送数据。
-
PAUSE的接收者(也是数据报文的发送者),收到PAUSE帧后会根据PAUSE帧中的等待时间停止发送报文,等待时间超时后继续发送报文。
9.网桥和二层交换机
共享式以太网具有的弊端:
-
冲突严重
-
广播泛滥
-
无任何安全性
网桥(Bridge) :用于桥接LAN网络中的各种不同的网络设备。
主要构成:
- MAC转发单元
- 至少两个的通信端口。
主要功能:
- 收帧
- 输入规则检查
- 拓扑检查
- 输出规则检查
- 输出排队
- 分队传输帧
- 优先级重映射
- 确定输出帧格式
- 重建FCS
- 发送帧
网桥的基本操作:
-
转发、过滤帧
-
维持转发、过滤过程中所应用的到信息
我们所说的交换机可以认为是多端口网桥。
网桥和交换机主要不同
-
多端口网桥:交换机工作时,实际上允许许多组端口间的通道同时工作。所以,交换机的功能体现出不仅仅是一个网桥的功能,而是多个网桥功能的集合。即网桥一般分有两个端口,而交换机通常具有高密度的端口。
-
传输速率的区别:交换机与网桥数据信息的传输速率相比,交换机要快于网桥。
-
数据帧转发方式的区别:网桥在发送数据帧前,通常要接收到完整的数据帧并执行帧检测序列fcs后,才开始转发该数据帧。交换机具有存储转发和直接转发两种帧转发方式。直接转发方式在发送数据以前,不需要在接收完整个数据帧和经过32bit循环冗余校验码crc的计算检查后的等待时间。
10. IEEE保留特殊MAC地址
IEEE 802.1Q 是一个网络标准,定义了以太网帧的 VLAN 标签。在这个标准中,定义了一些特殊的 MAC 地址,用于特定的功能。这些 MAC 地址的前三个字节(组织唯一标识符,OUI)通常是 01-80-C2
。
以下是一些 IEEE 802.1Q 定义的保留地址:
-
01-80-C2-00-00-00
到01-80-C2-00-00-0F
:这些地址被保留用于 Bridge Protocol Data Unit (BPDU) 或其他与桥接相关的控制协议。例如,01-80-C2-00-00-00
是 Spanning Tree Protocol (STP) 的地址,01-80-C2-00-00-02
是 Multicast Listener Discovery (MLD) 协议的地址。 -
01-80-C2-00-00-10
到01-80-C2-00-00-1F
:这些地址被保留用于 VLAN Bridge Protocol(VBP)。 -
01-80-C2-00-00-20
到01-80-C2-00-00-2F
:这些地址被保留用于应用于提供者桥的协议。 -
01-80-C2-00-00-30
到01-80-C2-00-00-3F
:这些地址被保留用于应用于 MAC 保护的协议。 -
01-80-C2-00-00-40
到01-80-C2-FF-FF-FF
:这些地址被保留用于未来的标准化工作。
Once Day
也信美人终作土,不堪幽梦太匆匆......
如果这篇文章为您带来了帮助或启发,不妨点个赞👍和关注,再加上一个小小的收藏⭐!
(。◕‿◕。)感谢您的阅读与支持~~~