好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

软件工程师必须掌握的网卡知识.pdf

4页
  • 卖家[上传人]:E****
  • 文档编号:104736711
  • 上传时间:2019-10-10
  • 文档格式:PDF
  • 文档大小:122.83KB
  • / 4 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 一、 网卡、MAC 控制器和 MAC 地址 1. 一、 网卡、MAC 控制器和 MAC 地址 1. 网卡的分层 网卡的分层 网卡工作在 OSI 参考模型的数据链路层和网络层 o 物理层物理层定义了数据传送与接收所需要的电与光信号、线路状态、时 钟基准、 数据编码和电路等,并向数据链路层设备提供标准接口 物理层的芯片简称之为 PHYPHY o 数据链路层数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送 控制、向 网络层提供标准的数据接口等功能以太网卡中数据链 路层的芯片一般简称之为 MAC 控制器MAC 控制器 多网卡的芯片把 MAC 和 PHY 的功能做到了一颗芯片中,比如 Intel 82559 网卡的和 3COM3C905 网卡但是 MAC 和 PHY 的机制还是单独存在的,只 是外观的表现形式是一颗单 芯片当然也有很多网卡的 MAC 和 PHY 是分 开做的,比如 D-LINK 的 DFE-530TX 等 他们之间的关系是 PCI 总线接 MAC 总线,MAC 接 PHY,PHY 接网线(当然 也不是直接接上 的,还有一个变压装置) 通常提到的 MAC 指狭义的 MAC 地址,其实在网卡中,一块以太网卡 MAC 芯片的 作用不但要实现 MAC 子层和 LLC 子层的功能,还要提供符合规范 的 PCI 界面以实现和主机的数 据交换。

      以太网 MAC 芯片的一端接计算机 PCI 总线,另外一端就接到 PHY 芯片上MAC 从 PCI 总 线收到 IP 数据包 (或者其他网络层协议的数据包)后,将之拆分并重新打包成最大 1518Byte,最小 64Byte 的帧这个帧里面包括了目标 MAC 地址、自己的 源MAC地址和数据包 里面的协议类型 (比如IP数据包的类型用80表示) 最后还有一个 DWORD(4Byte)的 CRC 码 网卡上有一颗 EEPROM 芯片,通常是一颗 93C46里面记录了网卡芯片的 供应商 ID、子系 统供应商 ID、网卡的 MAC 地址、网卡的一些配置,如 SMI 总线上 PHY 的地址,BOOTROM 的容量, 是否启用 BOOTROM 引导系统等 东西 2.2. 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 的状态, Generated by Foxit PDF Creator © Foxit Software For evaluation only. 例如连接速度,双工的能力等当然也可以通过 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 的原因 3.3. 工作过程 工作过程 PHY 在发送数据的时候,收到 MAC 过来的数据(对 PHY 来说,没有帧的 概念,对它来说,都是数据而不管什么地址,数据还是 CRC),每 4bit 就 增加 1bit 的检错码,然后把并行数据转化为串行流数据,再按照物理层 的编码规则 (10Based-T 的 NRZ 编码或 100based-T 的曼彻斯特编码)把数 据编码,再变为模拟信号把数据 送出去收数据时的流程反之现在来 了解 PHY 的输出后面部分。

      一颗 CMOS 制程的芯片工作 的时候产生的信号 电平总是大于 0V 的(这取决于芯片的制程和设计需求),但是这样的信号 送到 100 米甚至更长的地方会有很大的直流分量的损失 而且如果外部网 现直接和芯片相连 的话,电磁感应(打雷)和静电,很容易造成芯片的损 坏 再就是设备接地方法不同,电网 环境不同会导致双方的 0V 电平不 一致,这样信号从 A 传到 B,由于 A 设备的 0V 电平和 B 点的 0V 电平不一 样,这样会导致很大的电流从电势高的设备流向电势低的设备我们如何 解决这 个问题呢?这时就出现了 Transformer(隔离变压器)这个器件 它把 PHY 送出来的差分信号 用差模耦合的线圈耦合滤波以增强信号,并 且通过电磁场的转换耦合到连接网线的另外一 端这样不但使网线和 PHY 之间没有物理上的连接而换传递了信号,隔断了信号中的直流分 量, 还可以在不同 0V 电平的设备中传送数据隔离变压器本身就是设计为耐 2KV~3KV 的电压 的也起到了防雷感应(我个人认为这里用防雷击不合适) 保护的作用 有些朋友的网络设 备在雷雨天气时容易被烧坏, 大都是 PCB 设计不合理造成的,而且大都烧毁了设备的接口, 很少有芯片被烧毁的, 就是隔离变压器起到了保护作用。

      Generated by Foxit PDF Creator © Foxit Software For evaluation only. 二、交换机、MAC 地址表和 MAC 地址学习 二、交换机、MAC 地址表和 MAC 地址学习 对于网络交换机来说,MAC 地址表是其能否正确转发数据包的关键,为此,协议 标准 RFC2285 和 RFC2889 中都对以太网交换机的 MAC 地址表深度和 MAC 地址学 习速度进行专门的描 述MAC 地址表显示了主机的 MAC 地址与以太网交换机端 口映射关系,指出数据帧去往目的 主机的方向当以太网交换机收到一个数据 帧时,将收到数据帧的目的 MAC 地址与 MAC 地址 表进行查找匹配如果在 MAC 地址表中没有相应的匹配项,则向除接收端口外的所有端口广 播该数据帧,有 人将这种操作翻译为泛洪(Flood,泛洪操作广播的是普通数据帧而不是广 播 帧)在我们测试过的交换机中,有的除了能够对广播帧的转发进行限制之外, 也能对 泛洪这种操作进行限制 而当 MAC 地址表中有匹配项时, 该匹配项指定的交换机端口与接收端口相同则表 明该数 据帧的目的主机和源主机在同一广播域中, 不通过交换机可以完成通信, 交换机将丢弃该 数据帧。

      否则,交换机将把该数据帧转发到相应的端口交换 机还将检查收到数据帧的源 MAC 地址,并查找 MAC 地址表中与之相匹配的项 如果没有,交换机将记录该 MAC 地址和接收 该数据帧的端口,并激活一个定时 器这个过程被称作地址学习这个定时器一般就是我 们在配置交换机时的 AgeTime 选项,一般我们都可以配置这一定时器的时间长度在定时器 到时的 时候,该项记录将从 MAC 地址表中删除而如果接收的数据帧的源 MAC 地址在 MAC 地址 表中有匹配项,交换机将复位该地址的定时器 三、IP 地址、MAC 地址和三层交换技术 三、IP 地址、MAC 地址和三层交换技术 一台计算机想要接入到网络中,必须要有两个地址一个是网卡的地址,也就是 MAC 地 址在以太网中,我们通过 MAC 地址来进行数据传送和数据交换在以 太网环境中,数据会 分帧传送,每一个数据帧都会包含自己的 MAC 和目的 MAC 地址信息;另外一个地址是平时所 说的 IP 地址,定义在网络层,每一台网络计 算机都会有一个或者多个 IP 地址,这是一个虚 拟的数据,并且可以随时更改 在硬件层次上进行的数据帧交换必须有正确的接口地址。

      但是,TCP/IP 有自己 的地址: 32 bit 的 IP 地址知道主机的 IP 地址并不能让内核发送一帧 数据 给主机内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据 ARP 的 功能是在 32 bit 的 IP 地址和采用不同网络技术的硬件地址之间提供动 态映射点对点链路 不使用 ARP当设置这些链路时(一般在引导过程进行), 必须告知内核链路每一端的 IP 地 址像以太网地址这样的硬件地址并不涉及 IP 地址和 MAC 地址是同时使用的,在数据传送过程中,一个完整的 TCP/IP 包需 要由以太 网进行数据封装,数据分帧,最后再通过物理层传输到目标计算机 在以太网封装上层的 TCP/IP 包的时候, 它需要知道源 MAC 地址和目的 MAC 地址, 但是我们只能给出一个对方的 IP 地址,这个时候就需要一个协议来支持 IP 到 MAC 的转换,这就是 ARP,Address Resolution Protocol. ARP 协议是介乎于网 Generated by Foxit PDF Creator © Foxit Software For evaluation only. 络层和数据链路层的一个协议。

      第一次传送某个目的 IP 地址 的数据的时候,先 会发出一个 ARP 包,其 MAC 的目标地址是广播地址,里面说到:“谁是 xxx.xxx.xxx.xxx 这个 IP 地址的主人?“因为是广播包,所有这个局域网的主机 都收到了这 个 ARP 请求 收到请求的主机将这个 IP 地址和自己的相比较,如果不相同就不予理会,如果 相同就发出 ARP 响应包这个 IP 地址的主机收到这个 ARP 请求包后回复的 ARP 响应里说到:“我是这个 IP 地址的主人“这个包里面就包括了他的 MAC 地址 以后的给这个 IP 地址的帧的目标 MAC 地址 就被确定了其它的协议如 IPX/SPX 也有相应的协议完成这些操作 IP 地址和 MAC 地址之间的关联关系保存在主机系统里面,叫做 ARP 表,由驱动 程序和操作系 统完成在 Microsoft 的系统里面可以用 arp -a 的命令查看 ARP 表收到数据帧的时候也是 一样,做完 CRC 以后,如果没有 CRC 效验错误,就 把帧头去掉,把数据包拿出来通过标准的 借口传递给驱动和上层的协议客栈, 最终正确的达到我们的应用程序还有一些控制帧, 例如流控帧也需要 MAC 直 接识别并执行相应的行为。

      三层交换机工作过程的简单概括:如果目的 IP 地址显示不是同一网段的,那么 A 要实现 和 B 的通讯,在流缓存条目中没有对应 MAC 地址条目,就将第一个正 常数据包发送。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.