以太网的IP数据报文的封装格式由RFC894定义的格式

前言

以太网最早是指由DEC(Digital Equipment Corporation)、英特尔和施乐组成的DIX(DEC-Intel-Xerox)联盟于1982年发布的标准。经过长期的发展,以太网已成为最广泛使用的局域网,包括标准以太网(10 Mbit/s)、快速以太网(100 Mbit/s)、千兆以太网(1000 Mbit/s)和10千兆以太网(10 Gbit/s)等。IEEE 80 2.3规范基于以太网标准,兼容以太网标准。

在TCP/IP中,以太网IP数据报的封装格式由RFC894定义,IEEE802.3网络的IP数据报封装由RFC1042定义。目前最常用的封装格式是RFC894定义的格式,通常称为Ethernet_II或Ethernet DIX。

01 以太网基础知识

1.1 以太网网络层次结构

以太网使用被动媒体来广播信息。它规定了物理层和数据链路层的协议、物理层和数据链路层的接口、数据链路层和更高层的接口。

物理层

物理层指定以太网的基本物理属性,例如数据编码、时间戳和频率。

物理层位于 OSI 参考模型的底部。它直接面向实际进行数据传输的物理介质(即通信通道)。物理层的传输单位是位(bit),即二进制位(“0”或“1”)。实际的位传输必须依赖于传输设备和物理介质。 layer 不是指具体的物理设备,也不是指信号传输的物理介质,而是指物理介质之上的上层(数据链路层)提供传输原始比特流的物理连接。

数据链路层

数据链路层是 OSI 参考模型中的第二层,位于物理层和网络层之间。数据链路层基于物理层提供的服务向网络层提供服务。它最基本的服务就是将源设备的网络层转发的数据可靠地传输到相邻节点的目的设备的网络层。

由于以太网的物理层和数据链路层是相关的,因此需要提供一个特定的数据链路层来访问物理层的不同工作模式。这给设计和应用带来了一些不便。

为此,一些组织和制造商建议将数据链路层进一步分层为介质访问控制子层(MAC)和逻辑链路控制子层(LLC)。这样,不同的物理层对应不同的MAC子层,LLC子层可以完全独立。如图1-1所示。

图1-1 以太网链路层的分层结构

1.2 以太网电缆标准

从以太网诞生至今,成熟应用中使用的以太网物理层标准主要有以下几种:

在这些标准中,前面的10、100、1000、10G分别代表工作速率,中间的BASE表示发射信号为基带模式。

10M 以太网电缆标准

10M以太网电缆标准在IEEE802.3中定义,电缆类型如表1-1所示。

表 1-1 10M 以太网电缆标准

同轴电缆的致命缺陷是电缆上的设备是串联的,单点故障就可能导致整个网络瘫痪。 10BASE-2、10BASE-5 是同轴电缆的物理标准,现在基本上已经过时了。

100M 以太网电缆标准

100M以太网也称为Fast Ethernet FE(快速以太网)。在数据链路层与10M以太网没有区别,只是在物理层提高了传输速率。

表 1-2 列出了快速以太网电缆的类型。

表 1-2 快速以太网电缆标准

10BASE-T 和 100BASE-TX 都是在 5 类双绞线电缆上运行的以太网标准。不同之处在于线路上信号的传输速率不同。 10BASE-T只能工作在10M的速度,而100BASE-TX工作在100M的速度。

100BASE-T4 目前很少使用。

千兆以太网电缆标准

千兆以太网是 IEEE802.3 以太网标准的扩展。基于以太网协议,快速以太网的传输速率从100Mbit/s提升10倍至1Gbit/s。表 1-3 列出了千兆以太网电缆标准。

表 1-3 千兆以太网电缆标准

用户可以使用该技术将原来的快速以太网系统从 100Mbit/s 升级到 1000Mbit/s。

千兆以太网物理层使用 8B10B 编码。在传统的以太网传输技术中,数据链路层将8位数据组提交给物理层,物理层经过适当的变换后发送到物理链路进行传输。但是转换的结果还是8位。

在光纤千兆以太网上,情况并非如此。当数据链路层向物理层提交8位数据时,物理层将8位数据映射,转换成10位数据,发送出去。

10 Gb 以太网电缆标准

10 Gigabit Ethernet 目前使用附加标准 IEEE 802.3ae 进行说明,未来将合并到 IEEE 802.3 标准中。表 1-4 列出了 10 Gb 以太网电缆标准。

表 1-4 10 Gb 以太网电缆标准

100Gbps 以太网电缆标准

新的 40G/100G 以太网标准于 2010 年制定,目前使用附加标准 IEEE 802.3ba 进行说明。随着网络技术的发展,未来100Gbps以太网将会有大规模的应用。

1.3 CSMA/CD

CSMA/CD 的概念

根据以太网的最初设计目标,计算机和其他数字设备是通过共享的物理线连接的。以这种方式连接的计算机和数字设备必须使用半双工方式接入物理线路,还必须有碰撞检测和避免机制,避免多个设备同时抢占线路。该机制就是所谓的CSMA/CD(Carrier Sense Multiple Access/Collision Detection)。

CSMA/CD可以从以下三点来理解:

CSMA/CD的工作流程

CSMA/CD的工作流程如下:

1.4 最小帧长度

由于 CSMA/CD 算法的限制,以太网帧不得小于某个最小长度。在以太网中,最小帧长度为64字节,由最大传输距离和冲突检测机制决定。

为了避免这种情况,指定了最小帧长度:站点A已经发送了一个数据包的最后一位,但是数据包的第一位还没有传送到距离较远的站点B。 B站认为线路空闲,继续发送数据,导致冲突。

图1-2 Ethernet_II的帧结构

高层协议必须保证Data字段至少包含46字节,所以在帧尾加上14字节的以太网帧头和4字节的校验码刚好满足最小帧长64个字节,如图 1-2 所示。如果实际数据小于 46 字节,高层协议必须填充一些数据单元。

1.5 以太网双工

以太网的物理层有两种模式:半双工和全双工。

半双工

半双工工作模式:

HUB 工作在半双工模式。

全双工

L2交换机代替HUB形成以太网后,以太网由共享型变为交换型。另外,采用全双工代替半双工,数据帧传输效率大大提高,最大吞吐量翻倍。

全双工从根本上解决了以太网的冲突问题,以太网从此告别CSMA/CD。

全双工工作模式:

目前生产的网卡、二层设备、三层设备都支持全双工模式,HUB除外。

全双工的硬件保证:

1.5 以太网自动协商

自动协商的目的

最早的以太网是10M半双工的,所以需要CSMA/CD等一系列机制来保证系统的稳定性。随着技术的发展,出现了全双工,其次是100M,以太网的性能有了很大的提高。但接下来的问题是:如何保证原有以太网络与新以太网络的兼容性?

因此,自动协商技术被提出来解决这个矛盾。自协商的主要作用是使物理链路两端的设备通过信息交换自动选择相同的工作参数。自协商的内容主要包括双工模式、运行速率、流量控制等参数。一旦协商成功,链路两端的设备都被锁定在相同的双工模式和运行速度。

以太网速率双工自动协商在以下标准中定义:

自动协商原理

自动协商是在网络设备之间建立连接的一种方式。它允许网络设备将自己支持的工作模式的信息传递给网络上的对等体,并接受对等体可能传输的信息。设备双方根据对方工作模式信息的交集,按照双方支持的最优工作模式建立连接。

对于使用双绞线连接的以太网,如果没有数据传输,链路并不总是空闲的,而是每16ms发送一个高脉冲来维持链路层的连接。这个脉冲变成了 NLP(Normal Link Pulse)流。在 NLP 码流中插入一些更高频率的脉冲,可以用来传输更多的信息。这一系列脉冲成为 FLP(Fast Link Pulse)码流,如图 1-3 所示。自协商功能的基本机制是将协商信息封装到FLP码流中,以达到自协商的目的。

图1-3 脉冲插入示意图

网民工网民工聚焦IT技术领域,结合实战经验,分享网络技术、系统集成、网络工程等一线技术分析和实战案例等深度干货为你。希望我们可以一起享受科技,实现我们的梦想! 70个原创内容

公众号

对于光模块和光纤连接的以太网,与双绞线连接的以太网类似,也是通过发送码流进行自协商。这个码流称为C码流,也就是配置(Configuration)码流。与电口不同,光口一般不协商速率,一般工作在双工模式,所以自协商一般只用于协商流量控制。

如果协商通过,则网卡将链路置于激活状态,可以开始传输数据。如果不能通过,则链接无法使用。

如果一端不支持自协商,支持自协商的一端选择默认模式工作,一般为10M半双工模式。

自动协商完全由物理层芯片设计实现。 IEEE 802.3 规范要求在以下任一情况下启动自动协商:

此外,连接中的两方并不总是发送自动协商流。自动协商不使用专用数据包或引入任何更高级别的协议开销。

接口的自动协商规则

接口连接时,两端能否正常通信,取决于两端接口设置的工作模式是否匹配。

1.6 个冲突和广播域

碰撞域

在以粗同轴电缆作为传输介质的传统以太网中,同一介质上的多个节点共享链路的带宽并争夺链路的使用权,因此会发生冲突,CSMA/CD机制发生冲突时发生时,网络会回滚,回滚期间链路上不会有数据传输。而这种情况是不可避免的。同一介质上的节点越多,发生冲突的概率就越大。连接在同一条线上的所有节点的集合是一个冲突域。冲突域中的所有节点竞争相同的带宽,一个节点发送的数据包(无论是单播、多播还是广播)都可以被其他节点接收。

广播域

由于在网络中使用广播,会占用带宽,降低设备的处理效率,所以必须限制广播。例如,ARP 使用广播数据包从 IP 地址解析 MAC 地址。所有1个MAC地址FFFF-FFFF-FFFF都是广播地址,所有节点都会处理目的地址为广播地址的数据帧。一个节点发送其他节点可以接收的广播消息的这种节点集合就是广播域。传统网桥可以根据MAC表转发单播报文,将广播报文转发到所有接口,所以网桥所有接口连接的节点属于一个广播域,而每个接口又属于一个单独的冲突域。

02 以太网交换

2.1 二层交换原理

二层交换设备工作在OSI模型的第二层,即数据链路层,它对数据包的转发是基于MAC(Media Access Control)地址的。二层交换设备的不同接口独立收发数据,每个接口属于不同的冲突域,从而有效隔离了网络中的物理层冲突域,通过它互连的主机(或网络)不再需要相互连接。担心交通。大小对数据传输冲突的影响。

二层交换设备通过解析学习以太网帧的源MAC(存储MAC与接口对应关系的表称为MAC表)来维护MAC地址与接口的对应关系,并查找MAC通过其目的地 MAC 投票方向。转发哪个接口,基本流程如下:

二层交换设备接收到以太网帧,将源MAC与接收接口的对应关系写入MAC表,作为后续二层转发的依据。如果MAC表中存在相同的表项,则刷新表项的老化时间。 MAC表项采用一定的老化更新机制,在老化时间内未刷新的表项将被删除。设备判断目的MAC地址是否为广播地址:

如果目的MAC地址是广播地址,则将数据包转发到所有接口(数据包的入站接口除外)。

如果目的MAC地址不是广播地址,则根据以太网帧的目的MAC地址查找MAC表。如果可以找到匹配的条目,则将其转发到该条目所指示的相应接口。如果没有找到匹配的条目,则将其转发到所有接口上的转发(除了数据包的入站接口)。

从上面的过程可以看出,二层交换通过维护MAC表,基于目的MAC表转发,有效地利用了网络带宽,提高了网络性能。图 1-6 是第 2 层交换机的示例。

图1-6 二层交换示例

二层交换设备虽然可以隔离冲突域,但不能有效划分广播域。因为从上面介绍的二层交换设备的转发过程可以看出,广播报文和找不到目的MAC的报文都会被转发到除了报文的入接口之外的所有其他接口。当网络中的主机数量增加时,会消耗大量的网络带宽,并带来一系列安全方面的问题。当然,这是一种通过路由器隔离广播域的方法,但是由于路由器成本高,转发性能低,这种方法的应用受到限制。基于这些情况,VLAN技术出现在二层交换中。

2.2 三层交换原理

三层交换机的背景

在早期的网络中c语言实现二层交换机的工作原理,二层交换机一般用于构建局域网,而路由器用于不同局域网之间的通信。当时局域网内部的流量占绝大多数,网络之间的流量比较少,少量的路由器就足够应付了。

但是,随着数据通信网络范围的不断扩大和网络服务的不断丰富,网络间相互访问的需求越来越大,而路由器由于成本高、转发性能低而不能非常高效,和少量的接口。很好的满足了网络发展的需要。因此,出现了三层交换机,一种可以实现高速三层转发的设备。

当然,第 3 层交换机不能完全取代路由器。路由器丰富的接口类型、良好的流量服务等级控制、强大的路由能力,仍然是三层交换机的薄弱环节。

三层转发原理

目前的三层交换机一般通过VLAN来划分二层网络,实现二层交换。同时可以实现不同VLAN之间的三层IP互访。不同网络的主机相互访问的过程简述如下:

在发起通信之前,源主机将自己的 IP 与目的主机的 IP 进行比较。如果两者位于同一网段(使用网络掩码计算相同的网络号),则源主机直接与目的主机通信。发送ARP请求,收到目的主机的ARP回复后,获取对方的物理层(MAC)地址,然后将对方的MAC地址作为报文的目的MAC地址发送报文。当源主机确定目的主机与自己在不同网段时,会通过网关(Gateway)提交报文,即发送ARP请求获取网关IP地址对应的MAC,并使用得到网关的 ARP 响应后的网关 MAC。数据包作为数据包的目标 MAC 发送。此时发送数据包的源IP为源主机IP,目的IP仍为目的主机IP。

下面详细介绍三层切换过程。

如图1-7所示,通信的源主机和目的主机连接在同一个三层交换机上,但位于不同的VLAN(网段)。对于三层交换机来说,两台主机位于其直连网段,其IP地址对应的路由均为直连路由。

图1-7 三层转发原理网络示意图

图中显示了两台主机的MAC、IP地址、网关,三层交换机的MAC,以及配置在不同VLAN中的三层接口的IP。 PC A向PC B发起PING的过程如下:(假设三层交换机上没有建立硬件转发表项)

网民工网民工聚焦IT技术领域,结合实战经验,分享网络技术、系统集成、网络工程等一线技术分析和实战案例等深度干货为你。希望我们可以一起享受科技,实现我们的梦想! 70个原创内容

公众号

根据前面的描述,PC A首先检查出目的IP地址10.2.1.2(PC B)和自己不在同一个网段,所以发送网关地址请求 10.1.1.1对应MAC地址的ARP请求; L3 Switch收到PC A的ARP请求后,检查请求包,发现请求的IP是自己的三层接口IP。因此,它会发送一个 ARP 回复,并在其中包含自己的第 3 层接口 MAC(MAC 交换机)。同时它还会在自己的ARP表项中记录PC A的IP地址和MAC地址(10.1.1.2和MAC A)的关系(因为ARP请求消息中包含发送者的IP和MAC); PC A收到网关(L3 Switch)的ARP响应后c语言实现二层交换机的工作原理,组装并发送ICMP请求报文。消息的目的 MAC(即 DMAC)= MAC Switch,源 MAC(即 SMAC)= MAC A,源 IP(即 SIP)= 10.1.1.2、目的IP(即DIP)=10.2.1.2; L3 Switch收到报文后,首先根据报文的源MAC+VLAN ID更新MAC表。然后根据报文的目的MAC+VLAN ID查找MAC地址表,找到与自己三层接口MAC匹配的表项,表示需要三层转发,于是继续查找Layer 3.开关芯片入口;目的IP搜索其三层表项。由于之前没有创建表项,所以搜索失败,所以将数据包发送给CPU进行软件处理; CPU根据报文的目的IP查找自己的软件路由表,找到一个匹配的A直连网段(PC B对应的网段),于是继续查找自己的软件ARP表,但是查找的还是失败。

然后L3 Switch会在目的网段对应的VLAN 3的所有接口上发送MAC地址10.2.1.2对应的ARP请求; PC B 收到 L3 Switch 发送 ARP 请求后,检查请求的 IP 是自己的 IP,所以发送一个 ARP 回复,并在其中包含自己的 MAC(MAC B)。同时,在自己的ARP表中记录L3 Switch的IP和MAC(10.2.1.1和MAC Switch)的对应关系; L3 Switch收到PC B的ARP回复后,在自己的ARP表中记录其IP与MAC(10.2.1.2与MAC B)的对应关系,并上报PC A的ICMP请求向PC B发送报文,报文的目的MAC改成PC B的MAC(MAC B),源MAC改成自己的MAC(MAC Switch)。同时,根据刚刚得到的三层转发信息,在交换芯片的三层表项中增加一个表项(包括IP、MAC、出口VLAN、出口接口),以便后续PC A发送的报文到PC B可以直接通过硬件三层入口转发; PC B收到L3 Switch转发的ICMP请求报文后,向PC A回复ICMP响应。ICMP响应报文的转发过程与上一个类似,只是因为L3 Switch已经获取到了与PCA之间的对应关系。之前PC A的IP和MAC,也在交换机芯片中添加了相关的三层表项,这个数据包是交换机直接发送的。芯片硬件转发给PC A;这样后续的往返报文就直接由交换芯片通过查MAC表到查三层转发表的过程进行转发了。

从上面的流程可以看出,三层交换机充分利用了“一次性路由(第一个报文由CPU转发,建立了一个三层硬件入口)和多次交换的原则(后续数据包由芯片硬件转发)”。转发性能和三层交换的完美统一。

03以太网交换应用场景

如图1-8所示,某企业有IP电话、员工PC、网络打印机、移动终端、服务器等需要接入网络的设备。

图1-8 使用以太网技术构建企业网络示例

以太网技术可用于将众多终端设备连接到网络,从而实现员工上网、IP呼叫、员工PC访问服务器共享资源、通过网络远程打印等网络服务。由 IT 管理员统一管理。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论