LINUX CH2 直接网卡编程技术.ppt
《LINUX CH2 直接网卡编程技术.ppt》由会员分享,可在线阅读,更多相关《LINUX CH2 直接网卡编程技术.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二篇第二篇 网络编程方法与技术网络编程方法与技术网络编程技术概述网络编程技术概述:直接网卡编程(可编程芯片)基于packetdriver的编程技术基于NDIS的网络编程VPACKET,PACKET32Libpcap/WinpcapBerkeleySockets编程技术WinsockJAVA网络编程n在本篇介绍的网络编程方法中,直接网卡编程技术、基于网卡驱动程序的网络编程技术、基于NDIS的网络编程、VPACKET、PACKET32、Libpcap、Winpcap等方法处理(接收和发送)的是链路层数据包,一般用于网络协议分析、网络计费、网络监视与控制、防火墙系统、入侵检测系统等较底层的应用环境
2、;而Socket、Winsock、Java等方法处理的是网络层以上的数据包,如IP、TCP、UDP等,一般用于用户之间的通信。n对于高层的网络编程方法,如ASP、JSP、.NET等,这些方法学习起来比较简单,本书不做介绍。直接网卡编程技术简介直接网卡编程技术简介本章学习目的(1)了解网卡的基本工作原理;(2)为今后的产品开发做准备第第 2 章:章:直接网卡编程技术n在OSI模型中,物理层和数据链路层的主要功能一般由硬件-网络适配器(也叫网卡)来完成。n每个工作站都安装有一块或多块网卡,每个网卡都有自己的控制器,用以确定何时发送,何时从网络上接受数据,并负责执行802.3所规定的规程,如构成帧,
3、计算帧检验序列、执行编码译码转换等。2.1 2.1 网卡的基本工作原理网卡的基本工作原理2.1.1 Ethernet网络适配器的工作原理2.1.1 Ethernet网络适配器的工作原理n网络适配器(网卡)一般由可编程数据链路控制器、曼彻斯特编码/译码器、收发器接口(TRANSCEIVER INTERFACE)、控制电路和存储器等几部分组成,如图1所示。其中可编程数据链路控制器由微处理器和网络管理部分等组成。n最初这些组成部分分别由不同的集成电路来实现,如National公司的DP8390+8391+8392,INTEL公司的82501,82586(控制器)。目前已将它们集成到一个芯片内,如莲花
4、公司的UMC9008。n不同的网络芯片其编程方法稍有区别,但原理类似。图1 网络适配器的结构 1.LAN1.LAN管理部分和微处理器管理部分和微处理器nLAN的管理部分是网络适配器的核心,负责执行所有规程和数据处理。微处理器部分包括微处理器芯片、RAM芯片和ROM芯片。n当PC机有数据要发送时,便中断微处理器,并将数据传送并存储在微处理器部分的RAM芯片中,命令它发送数据。微处理器还将来自PC机的信号转换为LAN的帧格式,随后命令LAN管理部分将数据发送到网络上。微处理监视发送过程,以检查发送是否成功。n一旦PC机准备好从网络上接收帧,它便中断微处理器,并通知它进行帧的接收。微处理器通过命令L
5、AN管理部分开始接收帧来响应。微处理器对帧的接收过程进行监视。一旦接收的帧由LAN管理部分处理结束,微处理器便中断PC,将接收到的数据传给PC机。2.曼彻斯特编码/译码器n在LAN中,常用的编码方式有NRZ(不归零码)、曼彻斯特、差分曼彻斯特等。nIEEE802.3规定数据的传输必须用曼彻斯特编码进行。当PC机希望将数据发送到网络上时,总是以DMA方式逐字节地将数据传给LAN管理部分,LAN管理部分串行传给“不归零曼彻斯特编码器”,在这里进行曼彻斯特编码。3.发送和发送控制部分 发送和发送控制部分负责帧的发送。4.接收和接收控制部分 接收和接收控制部分负责帧的接收2.1.2 2.1.2 可编程
6、链路控制器可编程链路控制器1.DMA通道n网卡上的可编程控制器通过DMA来与PC机交换数据,网络适配器一共提供两个相互独立的DMA通道:LOCAL DMA和REMOTE DMA,如图2所示。Local DMA:本地缓冲区与FIFO之间的DMA通道 Remote DMA:本地缓冲区与计算机之间的DMA通道n其中,本地DMA通道负责本地缓冲区与FIFO之间的数据传输。当网络适配器发送帧时,由本地DMA负责将本地缓冲区中的帧数据以字节或字(通过编程指定)方式送往FIFO,然后发送到网络传输介质上。如果在发送过程中发生碰撞,本地DMA在主机CPU不介入的情况下自动重发,最大重发次数为15次。若超过15
7、次,表示本次发送失败,此时必须由主机CUP重新介入,再次启动本地DMA。n当网络适配器接收帧时,本地DMA自动完成由FIFO到本地缓冲区的以字节方式的数据传输,将接收到的数据缓存在本地接收缓冲区中,等到整个数据帧接收完后再通知主机取数。ISAEISAPCIbase+10h块数据转送系统地址64KBbuffermemory16-BYTEFIFO16-BYTEFIFOLOCALDMAREMOTEDMAControllerSYSTEMI/OPORTLOCALMICROPROCESSORMAINCPUMAINMEMORYSYSTEMDMACONTROLLER本地总线系统总线网络适配器计算机图2网络适配
8、器的DMA结构示意图网络数据握手信号FIFODATA1.DMA1.DMA通道通道n远程DMA负责在主机内存与本地缓冲区之间以字节(或字)的方式交换数据。n当主机有数据要发送时,它将已准备好的帧(不含同步序列和CRC校验和)通过远程DMA通道传给网络适配器,然后启动网络适配器发送;当网络适配器接收到完整的数据帧后,以中断方式,通知主机通过远程DMA将接收到的数据取走。1.DMA1.DMA通道通道n注:两个DMA通道都采用32位寻址方式和8位或16位的数据传输方式;NIC允许远程DMA和本地DMA同时交叉操作完成各自的任务。2.2.数据缓存数据缓存RAM n每个网络适配器上都配置有数据缓冲区RAM
9、,长度从16KB到64KB不等。n站地址寄存器固化在网卡上的PROM中,PROM的长度为32字节,其中6个字节的站地址占据了PROM的最低6个地址。nPROM和缓存RAM在网卡上统一编址,PROM处于低地址部分,缓存RAM处于高地址部分。FIFOFIFOCONTENTSLOCATION01234567LowerByteCountUpperByteCount0LastByteCRC1CRC2CRC3CRC4接收FIFOFIFOFIFOCONTENTSLOCATION01234567发送FIFOByteN-4ByteN-3(CRC1)Byte N-2(CRC2)ByteN-1(CRC3)ByteN
10、(CRC4)LowerByteCountUpperByteCount0 在网卡中,数据的发送和接收有相应的FIFO缓冲区,主要是对发送或接收数据进行字节计数和CRC校验。FIFO的结构如图3所示。图3网卡FIFO结构n本地DMA通道使用缓冲环结构来提供对接收数据的缓存。n该缓冲环由一系列固定长度的缓冲区组成,每一个缓冲区的长度为256字节,并将它称为一页。换句话说,将缓冲环划分为一系列的页,每页的容量为256字节,网络适配器将从网上接收到的数据帧存放在缓冲环中。n缓冲环使用时通过两个指针来指定其范围,其中指定页面开始位置的指针称为起始页(Page Start)寄存器,指定页面结束位置的指针称为
11、终止页(Page Stop)寄存器,如图4所示。图4 网络适配器接收缓冲环结构示意图 Buffer#1Buffer#2Buffer#3Buffer#4。Buffer#nPStartPStop123nn-1接收缓冲区接收缓冲环收发缓冲区 除了页面起始指针和页面终止指针外,编程时还要用到另外三个指针:(1)当前指针(CURR):网络适配器存放接收数据的指针 (2)边界指针(BNRY):网络适配器存放接收数据的截止指针 (3)下一包指针(Next_pkt):主机从网络适配器取数的指针。初始化:发送缓冲区首地址(高字节)=40h BNRY=PSTART=46h CURR=Next_pkt=Pstart
12、+1=47h Pstop=80h图5 NE2000网络适配器缓冲区的使用情况示意图 n图5指示的是NE2000中发送缓冲区和接收缓冲区及其指针的使用情况(总的缓冲区长度为16KB)。发送缓冲区发送缓冲区 接收缓冲区接收缓冲区空未取走的数据空发发缓缓首址首址40hPstart46h边边界界指指针针下下一一包包指指针针当当前前指指针针(初初始始值值等等于于47h)Pstop80h收发缓冲区n在图5中,发送缓冲区占用6个页面,地址范围为:4000h-4500h(6*256=1536字节)。n起始页面PSTART=46H,终止页面PSTOP=80H,即接收缓冲区的地址范围为:4600h-8000h。n
13、同时规定:BNRY=CURR时表示接收缓冲环满,BNRY=CURR-1时表示接收缓冲环空。2.2 网卡寄存器2.2.1 NIC内部寄存器1.网卡寄存器的管理网络适配器上的控制器是一个可编程芯片,通过其上面的一组内部寄存器来控制。这些寄存器:(1)分读和写两种不同操作(2)分页管理分为4个页来管理,每页16个内部寄存器,只占用16个I/O地址(0F),4页中地址偏移为0的寄存器为命令寄存器。对于同一地址,到底选中的是哪一个寄存器,由命令寄存器中的PS0和PS1两个比特位来控制。2.网卡寄存器的分类 (1)地址寄存器 网络MAC地址 (2)配置寄存器(4个)3.I/O地址 PC机的读写操作分为存储
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LINUX CH2 直接网卡编程技术 直接 网卡 编程 技术
限制150内