一文读懂以太网

前言

前阶段学习了UCOSIII,源码学完之后,我打算做点应用,鉴于我在网络互联方面的基础比较薄弱,所以我打算做一些网络相关的应用。某宝上买了一块基于W5500的以太网模块,W5500是一个搭载硬件TCP/IP协议栈的芯片,适用于嵌入式开发。

在学习如何使用这个模块的过程中,我回忆起曾经学过的计算机网络中的OSI协议栈模型,按道理来说这个模块应该是属于这个协议栈模型中的某些层,但我还是不能说清楚模块中硬件与协议栈的对应关系。为了搞清楚这些关系,我特地做了一些调查研究,特此总结一下。

文章大概分为如下几个部分:

  • 网络协协议栈介绍
  • IEEE802.3与以太网的关系
  • 以太网协议栈介绍
  • 结合网卡硬件具体分析

网络协议栈介绍

先来介绍一下计算机网络的网络协议栈

最左边是OSI标准定义的协议栈分层方式,最右边是实际使用过程中定义的分层方式,也就是因特网的分层方式,中间是它们的对应关系。

下面这张图展现了其基本工作原理

数据由发送机从应用层发出,经过一层一层打包,最终由物理层以某种物理介质为载体发送出去,接收机从物理介质接收到数据,经过一层层解包最终送给应用层使用。

IEEE802.3与以太网的关系

以太网从历史的角度看有两个,第一个是由三家公司开发的DIX以太网标准。这个标准有两个版本,分别是1980年9月发布的1.0版本和1982年11月发布的2.0版本,这也是DIX的最后一个版本。在其后1985年IEEE在DIX以太网标准的基础上制定了IEEE 802.3标准。

DIX与IEEE 802.3从工作机制上是一致的。但实际上,DIX以太网标准与IEEE 802.3有一些区别,DIX是把定义的OSI参考模型中的物理层和数据链路层所完成的功能,包括在一起了。它把LLC SUBLAYER(子层)和MAC SUBLAYER 媒介访问控制子层划分成了数据链路层的两个子层。目的是为了数据侦传输独立与所用的物理介质和介质访问控制方法。而IEEE 802.3规定了物理层和数据链路层中媒介访问控制子层的MAC部分,它只包括了第二层的一部分功能,而IEEE 802.2定义了逻辑链路控制子层LLC的功能。MAC与介质访问控制方法密切相关,而LLC子层与所有介质访问方法无关。LLC的隔离作用,使得网络层仅针对LLC这种接口工作,不必关心下面的介质类型及介质访问方法。而IEEE 802.3是针对以太网的标准,而IEEE 802.2并不属于以太网。所以说DIX与IEEE 802.3只是包括的范围不同,相应它们两中协议的侦格式也有一些差异。我们也可以这样的理解。

通俗地说就是,以太网先出来,IEEE发现这个东西很有前途,就赶紧以它为原型制定了一个有线局域网标准叫做IEEE 802.3,这个标准与原始以太网基本一样,只有些许不同,所以我们常常不加区分地将二者等同。但鉴于本篇文章的目的就是为了搞清楚这些层次之间的关系,所以我们要严格地对二者进行区分,IEEE802.3和以太网是不一样的,前者只定义了物理层和链路层的MAC子层,后者包括链路和物理两层。

链路层分为LLC和MAC,其中LLC叫做802.2,MAC+PHY叫做802.3,所以有如下公式:802.3+802.2=以太网

以太网协议栈介绍

以太网协议栈在OSI模型中的位置,如下图

IEEE 802中定义的服务和协议限定在OSI模型的最低两层(即物理层和数据链路层)。事实上,IEEE 802将OSI的数据链路层分为两个子层,分别是逻辑链路控制(LLC, Logical Link Control)和介质访问控制(MAC, Media Access Control),如下所示:

从上面我们可以看出,以太网占了两层(物理层+完整链路层),而IEEE802.3占了一层(物理层+链路层中的MAC子层)。

了解了以太网和IEEE802.3在OSI模型中的位置以后,下面来看看以太网的层次划分

其实在MAC(介质访问控制子层)上面还有一个LLC(逻辑链路控制子层),这两个部分共同构成了链路层。链路层通过MII(或者其它一些升级版的接口,如GMII等)将数据传送到物理层,物理层对这些数据进行处理并以差分信号的形式发送出去,下面解释了图中物理层的一些缩略词的含义:

  • MII(media independent interface):MII的实例应用,就是一种协议,用来将数据从数据链路层传输到物理层。
  • PCS(physical coding sublayer):对要通过支撑体传送的信息进行编码。实际定义的子层有 4 个:100BASE-X、100BASE-T4、100BASE-T2 和 1000BASE-X。
  • PMA(physical media attachment):用于给定的介质类型。其功能是:数据传送、冲突侦测、时钟同步等。
  • PMD(physical medium dependent):就在 MDI 接口之前,用于为MDI和传送支撑体提供接口。
  • MDI(media dependent device):用于将收发器连接到发送支撑的插头的总称。它可以是 10BASE2 网络中的 BNC 插头,或者双绞线网络的 RJ-45 插头,或者光纤连接器。

上面看了那么多是不是有点蒙,下面我们会以网卡为例将抽象与实际关联。

结合网卡硬件具体分析

网卡的主要工作原理:发送数据时,计算机把要传输的数据并行写到网卡的缓存,网卡对要传输的数据进编码(10M以太网使用曼切斯特码,100M以太网使用差分曼切斯特码),串行发到传输介质上.接收数据时,则相反。对于网卡而言,每块网卡都有一个唯一的网络节点地址,它是网卡生产厂家在生产时烧入ROM(只读存储芯片)中的,我们把它叫做MAC地址(物理地址),且保证绝对不会重复。MAC为48bit,前24比特由IEEE分配,是需要钱买的,后24bit由网卡生产厂家自行分配。

网卡的功能主要有两个:

  • 将电脑的数据封装为帧,并通过网线(对无线网络来说就是电磁波)将数据发送到网络上去。
  • 是接收网络上其它设备传过来的帧,并将帧重新组合成数据,发送到所在的电脑中。

网卡能接收所有在网络上传输的信号,但正常情况下只接受发送到该电脑的帧和广播帧,将其余的帧丢弃。然后,传送到系统CPU做进一步处理。当电脑发送数据时,网卡等待合适的时间将分组插入到数据流中。接收系统通知电脑消息是否完整地到达,如果出现问题,将要求对方重新发送。

现在的网卡大多集成在主板上面了,不过为了说明结构组成,我们还是用上古时期的独立网卡来介绍其结构

以最常见的PCI接口的网卡为例,一块网卡主要由PCB线路板、主芯片、数据汞、金手指(总线插槽接口)、BOOTROM、EEPROM、晶振、RJ45接口、指示灯、固定片等等,以及一些二极管、电阻电容等组成。下面我们就来分别了解一下其中主要部件。

主芯片

主芯片有两大类,一种是集成了MAC和PHY的,另一种是只有MAC的,前者对应着数据链路层和物理层,后者只对应数据链路层,需要单独的芯片来构成物理层。在二者分离的情况下,主芯片与PHY芯片之间就需要MII来进行通信

网卡的主控制芯片是网卡的核心元件,一块网卡性能的好坏和功能的强弱多寡,主要就是看这块芯片的质量。

bootroom

BOOTROM插座也就是常说的无盘启动ROM接口,其是用来通过远程启动服务构造无盘工作站的。远程启动服务(Remoteboot,通常也叫RPL)使通过使用服务器硬盘上的软件来代替工作站硬盘引导一台网络上的工作站成为可能。网卡上必须装有一个RPL(Remote Program Load远程初始程序加载)ROM芯片才能实现无盘启动,每一种RPL ROM芯片都是为一类特定的网络接口卡而制作的,它们之间不能互换。带有RPL的网络接口卡发出引导记录请求的广播(broadcasts),服务器自动的建立一个连接来响应它,并加载MS-DOS启动文件到工作站的内存中。

此外,在BOOTROM插槽中心一般还有一颗93C46、93LC46或93c56的EEPROM芯片(93C56是128*16bit的EEPROM,而93C46是64*16bit的EEPROM),它相当于网卡的BIOS,里面记录了网卡芯片的供应商ID、子系统供应商ID、网卡的MAC地址、网卡的一些配置,如总线上PHY的地址,BOOTROM的容量,是否启用BOOTROM引导系统等内容。主板板载网卡的EEPROM信息一般集成在主板BIOS中。

LED指示灯

一般来讲,每块网卡都具有1个以上的LED(Light Emitting Diode发光二极管)指示灯,用来表示网卡的不同工作状态,以方便我们查看网卡是否工作正常。典型的LED指示灯有Link/Act、Full、Power等。Link/Act表示连接活动状态,Full表示是否全双工(Full Duplex),而Power是电源指示(主要用在USB或PCMCIA网卡上)等 。

数据汞

数据汞是消费级PCI网卡上都具备的设备,数据汞也被叫做网络变压器或可称为网络隔离变压器。它在一块网卡上所起的作用主要有两个,一是传输数据,它把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到不同电平的连接网线的另外一端;一是隔离网线连接的不同网络设备间的不同电平,以防止不同电压通过网线传输损坏设备。除此而外,数据汞还能对设备起到一定的防雷保护作用。

晶振

晶振是石英振荡器的简称,英文名为Crystal,它是时钟电路中最重要的部件,它的作用是向显卡、网卡、主板等配件的各分提供基准频率,它就像个标尺,工作频率不稳定会造成相关设备工作频率不稳定,自然容易出现问题。由于制造工艺不断提高,现在晶振的频率偏差、温度稳定性、老化率、密封性等重要技术指标都很好,已不容易出现故障,但在选用时仍可留意一下晶振的质量。

网线接口

对应着MDI

网卡上还剩一些组件,PMA,PCS和PMD没有提,自己去了解一下吧,而且并不是所有以太网解决方案都会包括完整的标准内容。

  • 14
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值