admin管理员组

文章数量:1536365

2024年3月12日发(作者:)

网卡基本结构

一、什么是网卡?

网卡现在已经上成为了目前电脑里的标准配置之一。小小的网卡,究竟蕴涵

着多少秘密呢?让我们一起来看。

我们最常用的网络设备当属网卡了。网卡本身是LAN(局域网)的设备,通

过网关、路由器等设备就可以把这个局域网挂接到Internet上。而Internet

本身就是无数个这样的局域网组成的。

网卡有许多种,按照数据链路层控制来分有以太网卡,令牌环网卡,ATM网

卡等;按照物理层来分类有无线网卡,RJ-45网卡,同轴电缆网卡,光线网卡等

等。它们的数据链路控制、寻址、帧结构等不同;物理上的连接方式不同、数据

的编码、信号传输的介质、电平等不同。

以太网采用的CSMA/CD(载波侦听多路访问/冲突检测)的控制技术。他主要定

义了物理层和数据链路层的工作方式。数据链路层和物理层各自实现自己的功

能,相互之间不关心对方如何操作。二者之间有标准的接口(例如MII,GMII等)

来传递数据和控制。

以太网卡的物理层可以包含很多种技术,常见的有RJ45,光线,无线等,

它们的区别在于传送信号的物理介质和媒质不同。这些都在IEEE的802协议族

中有详细的定义。

这次我们主要讨论的RJ45的网卡属于IEEE802.3定义的范围。

二、网卡的组成

1.网卡的基本结构

一块以太网网卡包括OSI(开方系统互联)模型的两个层。物理层和数据链

路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、

数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址

机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口

等功能。

以太网卡中数据链路层的芯片一般简称之为MAC控制器,物理层的芯片我们

简称之为PHY。许多网卡的芯片把MAC和PHY的功能做到了一颗芯片中,比如

Intel 82559网卡的和3COM 3C905网卡。但是MAC和PHY的机制还是单独存在

的,只是外观的表现形式是一颗单芯片。当然也有很多网卡的MAC和PHY是分开

做的,比如D-LINK的DFE-530TX等。

图一:MAC和PHY分开的以太网卡(点击放大)

图二:MAC和PHY集成在一颗芯片的以太网卡(点击放大)

①RJ-45接口 ②Transformer(隔离变压器) ③PHY芯片

④MAC芯片 ⑤EEPROM ⑥BOOTROM插槽

⑦WOL接头 ⑧晶振 ⑨电压转换芯片

⑩LED指示灯

2.什么是MAC?

首先我们来说说以太网卡的MAC芯片的功能。以太网数据链路层其实包含

MAC(介质访问控制)子层和LLC(逻辑链路控制)子层。一块以太网卡MAC芯

片的作用不但要实现MAC子层和LLC子层的功能,还要提供符合规范的PCI界面

以实现和主机的数据交换。

MAC从PCI总线收到IP数据包(或者其他网络层协议的数据包)后,将之

拆分并重新打包成最大1518Byte,最小64Byte的帧。这个帧里面包括了目标MAC

地址、自己的源MAC地址和数据包里面的协议类型(比如IP数据包的类型用80

表示)。最后还有一个DWORD(4Byte)的CRC码。

可是目标的MAC地址是哪里来的呢?这牵扯到一个ARP协议(介乎于网络层

和数据链路层的一个协议)。第一次传送某个目的IP地址的数据的时候,先会

发出一个ARP包,其MAC的目标地址是广播地址,里面说到:"谁是

这个IP地址的主人?"因为是广播包,所有这个局域网的主机

都收到了这个ARP请求。收到请求的主机将这个IP地址和自己的相比较,如果

不相同就不予理会,如果相同就发出ARP响应包。这个IP地址的主机收到这个

ARP请求包后回复的ARP响应里说到:"我是这个IP地址的主人"。这个包里面

就包括了他的MAC地址。以后的给这个IP地址的帧的目标MAC地址就被确定了。

(其它的协议如IPX/SPX也有相应的协议完成这些操作。)

IP地址和MAC地址之间的关联关系保存在主机系统里面,叫做ARP表,由

驱动程序和操作系统完成。在Microsoft的系统里面可以用 arp -a 的命令查看

ARP表。收到数据帧的时候也是一样,做完CRC以后,如果没有CRC效验错误,

就把帧头去掉,把数据包拿出来通过标准的借口传递给驱动和上层的协议客栈,

最终正确的达到我们的应用程序。还有一些控制帧,例如流控帧也需要MAC直接

识别并执行相应的行为。

以太网MAC芯片的一端接计算机PCI总线,另外一端就接到PHY芯片上。以

太网的物理层又包括MII/GMII(介质独立接口)子层、PCS(物理编码子层)、

PMA(物理介质附加)子层、PMD(物理介质相关)子层、MDI子层。而PHY芯片

是实现物理层的重要功能器件之一,实现了前面物理层的所有的子层的功能。

3.网络传输的流程

PHY在发送数据的时候,收到MAC过来的数据(对PHY来说,没有帧的概念,

对它来说,都是数据而不管什么地址,数据还是CRC),每4bit就增加1bit的

检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则

(10Based-T的NRZ编码或100based-T的曼彻斯特编码)把数据编码,再变为

模拟信号把数据送出去。(注:关于网线上数据是数字的还是模拟的比较不容易

理解清楚。最后我再说)接收数据时的流程反之。

PHY还有个重要的功能就是实现CSMA/CD的部分功能。它可以检测到网络上

是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待

一个随机时间后将送数据出去。如果两块网卡碰巧同时送出了数据,那样必将造

成冲突,这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重

新发送数据。

这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机

时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二

次冲突。

许多网友在接入Internt宽带时,喜欢使用"抢线"强的网卡,就是因为不同

的PHY碰撞后计算随机时间的方法设计上不同,使得有些网卡比较"占便宜"。不

过,抢线只对广播域的网络而言的,对于交换网络和ADSL这样点到点连接到局

端设备的接入方式没什么意义。而且"抢线"也只是相对而言的,不会有质的变化。

4.关于网络间的冲突

现在交换机的普及使得交换网络的普及,使得冲突域网络少了很多,极大地

提高了网络的带宽。但是如果用HUB,或者共享带宽接入Internet的时候还是

属于冲突域网络,有冲突碰撞的。交换机和HUB最大的区别就是:一个是构建点

到点网络的局域网交换设备,一个是构建冲突域网络的局域网互连设备。

我们的PHY还提供了和对端设备连接的重要功能并通过LED灯显示出自己目

前的连接的状态和工作状态让我们知道。当我们给网卡接入网线的时候,PHY不

断发出的脉冲信号检测到对端有设备,它们通过标准的"语言"交流,互相协商并

却定连接速度、双工模式、是否采用流控等。

通常情况下,协商的结果是两个设备中能同时支持的最大速度和最好的双工

模式。这个技术被称为Auto Negotiation或者NWAY,它们是一个意思--自动协

商。

的输出部分

现在来了解PHY的输出后面部分。一颗CMOS制程的芯片工作的时候产生的

信号电平总是大于0V的(这取决于芯片的制程和设计需求),但是这样的信号

送到100米甚至更长的地方会有很大的直流分量的损失。而且如果外部网现直接

和芯片相连的话,电磁感应(打雷)和静电,很容易造成芯片的损坏。

再就是设备接地方法不同,电网环境不同会导致双方的0V电平不一致,这

样信号从A传到B,由于A设备的0V电平和B点的0V电平不一样,这样会导致

很大的电流从电势高的设备流向电势低的设备。我们如何解决这个问题呢?

这时就出现了Transformer(隔离变压器)这个器件。它把PHY送出来的差

分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到连

接网线的另外一端。这样不但使网线和PHY之间没有物理上的连接而换传递了信

号,隔断了信号中的直流分量,还可以在不同0V电平的设备中传送数据。

隔离变压器本身就是设计为耐2KV~3KV的电压的。也起到了防雷感应(我个

人认为这里用防雷击不合适)保护的作用。有些朋友的网络设备在雷雨天气时容

易被烧坏,大都是PCB设计不合理造成的,而且大都烧毁了设备的接口,很少有

芯片被烧毁的,就是隔离变压器起到了保护作用。

6.关于传输介质

隔离变压器本身是个被动元件,只是把PHY的信号耦合了到网线上,并没有

起到功率放大的作用。那么一张网卡信号的传输的最长距离是谁决定的呢?

一张网卡的传输最大距离和与对端设备连接的兼容性主要是PHY决定的。但是可

以将信号送的超过100米的PHY其输出的功率也比较大,更容易产生EMI的问题。

这时候就需要合适的Transformer与之配合。作PHY的老大公司Marvell的PHY,

常常可以传送180~200米的距离,远远超过IEEE的100米的标准。

RJ-45的接头实现了网卡和网线的连接。它里面有8个铜片可以和网线中的4对

双绞(8根)线对应连接。其中100M的网络中1、2是传送数据的,3、6是接收

数据的。1、2之间是一对差分信号,也就是说它们的波形一样,但是相位相差

180度,同一时刻的电压幅度互为正负。这样的信号可以传递的更远,抗干扰能

力强。同样的,3、6也一样是差分信号。

网线中的8根线,每两根扭在一起成为一对。我们制作网线的时候,一定要

注意要让1、2在其中的一对,3、6在一对。否则长距离情况下使用这根网线的

时候会导致无法连接或连接很不稳定。

现在新的PHY支持AUTO MDI-X功能(也需要Transformer支持)。它可以实

现RJ-45接口的1、2上的传送信号线和3、6上的接收信号线的功能自动互相交

换。有的PHY甚至支持一对线中的正信号和负信号的功能自动交换。这样我们就

不必为了到底连接某个设备需要使用直通网线还是交叉网线而费心了。这项技术

已经被广泛的应用在交换机和SOHO路由器上。

在1000Basd-T网络中,其中最普遍的一种传输方式是使用网线中所有的4

对双绞线,其中增加了4、5和7、8来共同传送接收数据。由于1000Based-T

网络的规范包含了AUTO MDI-X功能,因此不能严格确定它们的传出或接收的关

系,要看双方的具体的协商结果。

7.PHY和MAC之间如何进行沟通

下面继续让我们来关心一下PHY和MAC之间是如何传送数据和相互沟通的。

通过IEEE定义的标准的MII/GigaMII(Media Independed Interfade,介质独

立界面)界面连接MAC和PHY。这个界面是IEEE定义的。MII界面传递了网络的

所有数据和数据的控制。

而MAC对PHY的工作状态的确定和对PHY的控制则是使用SMI(Serial

Management Interface)界面通过读写PHY的寄存器来完成的。PHY里面的部分

寄存器也是IEEE定义的,这样PHY把自己的目前的状态反映到寄存器里面,MAC

通过SMI总线不断的读取PHY的状态寄存器以得知目前PHY的状态,例如连接速

度,双工的能力等。当然也可以通过SMI设置PHY的寄存器达到控制的目的,例

如流控的打开关闭,自协商模式还是强制模式等。

我们看到了,不论是物理连接的MII界面和SMI总线还是PHY的状态寄存器

和控制寄存器都是有IEEE的规范的,因此不同公司的MAC和PHY一样可以协调

工作。当然为了配合不同公司的PHY的自己特有的一些功能,驱动需要做相应的

修改。

一片网卡主要功能的实现就基本上是上面这些器件了。

其他的,还有一颗EEPROM芯片,通常是一颗93C46。里面记录了网卡芯片

的供应商ID、子系统供应商ID、网卡的MAC地址、网卡的一些配置,如SMI总

线上PHY的地址,BOOTROM的容量,是否启用BOOTROM引导系统等东西。

很多网卡上还有BOOTROM这个东西。它是用于无盘工作站引导操作系统的。既然

无盘,一些引导用必需用到的程序和协议栈就放到里面了,例如RPL、PXE等。

实际上它就是一个标准的PCI ROM。所以才会有一些硬盘写保护卡可以通过烧写

网卡的BootRom来实现。其实PCI设备的ROM是可以放到主板BIOS里面的。启

动电脑的时候一样可以检测到这个ROM并且正确识别它是什么设备的。AGP在配

置上和PCI很多地方一样,所以很多显卡的BIOS也可以放到主板BIOS里面。这

就是为什么板载的网卡我们从来没有看到过BOOTROM的原因。

8.网卡的供电

最后就是电源部分了。大多数网卡现在都使用3.3V或更低的电压。有的是

双电压的。因此需要电源转换电路。

而且网卡为了实现Wake on line功能,必须保证全部的PHY和MAC的极少

一部分始终处于有电的状态,这需要把主板上的5V Standby电压转换为PHY工

作电压的电路。在主机开机后,PHY的工作电压应该被从5V转出来的电压替代

以节省5V Standby的消耗。(许多劣质网卡没有这么做)。

有Wake on line功能的网卡一般还有一个WOL的接口。那是因为PCI2.1

以前没有PCI设备唤醒主机的功能,所以需要着一根线通过主板上的WOL的接口

连到南桥里面以实现WOL的功能。

新的主板合网卡一般支持PCI2.2/2.3,扩展了PME#信号功能,不需要那个

接口而通过PCI总线就可以实现唤醒功能。

结语

一块以太网卡就是这些部分组成。它们紧密地配合并且相互协调,供给我们

一个稳定而告诉的网络接入。网络的普及不但极大地增加了工作效率,而且使我

们可以自由的驰骋在Internet的海洋中!

注解:

网线上的到底是模拟信号还是数字信号呢?

答案是模拟信号。因为它传出和接收是采用的模拟的技术。虽然它传送的信

息是数字的,并不是传送的信息是数字的,信号就可以叫做数字信号。

简单的例子:我们知道电话是模拟信号,但是当我们拨号上网的时候,电话

线里传送的是数字信息,但信号本身依旧是模拟的。然而ADSL同样是通过电话

线传送的,却是数字信号。这取决于它传出和接受采用的技术

本文标签: 网卡数据信号