LINUX CH2 直接网卡的编程技术.pptVIP

  • 2
  • 0
  • 约1.85千字
  • 约 48页
  • 2017-08-20 发布于浙江
  • 举报
LINUX CH2 直接网卡的编程技术

第二篇 网络编程方法与技术;在本篇介绍的网络编程方法中,直接网卡编程技术、基于网卡驱动程序的网络编程技术、基于NDIS的网络编程、VPACKET、PACKET32、Libpcap、Winpcap等方法处理(接收和发送)的是链路层数据包,一般用于网络协议分析、网络计费、网络监视与控制、防火墙系统、入侵检测系统等较底层的应用环境;而Socket、Winsock、Java等方法处理的是网络层以上的数据包,如IP、TCP、UDP等,一般用于用户之间的通信。 对于高层的网络编程方法,如ASP、JSP、.NET等,这些方法学习起来比较简单,本书不做介绍。 ; 直接网卡编程技术简介;在OSI模型中,物理层和数据链路层的主要功能一般由硬件网络适配器(也叫网卡)来完成。 每个工作站都安装有一块或多块网卡,每个网卡都有自己的控制器,用以确定何时发送,何时从网络上接受数据,并负责执行802.3所规定的规程, 如构成帧,计算帧检验序列、执行编码译码转换等。 ;2.1.1 Ethernet网络适配器的工作原理 ;图1 网络适配器的结构 ;1.LAN管理部分和微处理器;2. 曼彻斯特编码/译码器;3.发送和发送控制部分 发送和发送控制部分负责帧的发送。 4. 接收和接收控制部分 接收和接收控制部分负责帧的接收;2.1.2 可编程链路控制器;ISA EISA PCI;1.DMA通道;1.DMA通道;2. 数据缓存RAM ;FIFO FIFO CONTENTS LOCATION ;本地DMA通道使用缓冲环结构来提供对接收数据的缓存。 该缓冲环由一系列固定长度的缓冲区组成,每一个缓冲区的长度为256字节,并将它称为一页。换句话说,将缓冲环划分为一系列的页,每页的容量为256字节,网络适配器将从网上接收到的数据帧存放在缓冲环中。 缓冲环使用时通过两个指针来指定其范围,其中指定页面开始位置的指针称为起始页(Page Start)寄存器,指定页面结束位置的指针称为终止页(Page Stop)寄存器,如图4所示。 ;图4 网络适配器接收缓冲环结构示意图 ;收发缓冲区;图5 NE2000网络适配器缓冲区的使用情况示意图 ;收发缓冲区;2.2 网卡寄存器;2. 网卡寄存器的分类 (1)地址寄存器 网络MAC地址 (2)配置寄存器(4个) 3. I/O地址 PC机的读写操作分为存储器读写和I/O读写。 4. 硬中断号 一般PC机具有两个中断控制芯片(8259),总共有16个硬中断,可供网卡选用的有8个。;2.2.2 寄存器的定义 1. NIC DMA寄存器格式 NIC的本地DMA和远程DMA均有相应的寄存器,格式如图6所示;图6 NIC DMA寄存器格式 ;2. NIC内部寄存器 ;图7 NIC内部寄存器映射 ;命令寄存器中的PS0和PS1位用来确定访问那一页的寄存器,选择的对应关系为: 管脚RA0-RA3用来决定选择页内的那一个寄存器,共4位,最多能区分16个不同的寄存器。 选定寄存器后,到底是读操作还是写操作,由读写信号来决定,当读信号有效时表示读操作,写信号有效时为写操作。 当然,上述操作都必须在片选信号有效的情况下才有效。 ;NIC上的寄存器分为配置寄存器和控制寄存器。其中, (1)配置寄存器用于配置网络适配器的工作方式,其中常用的配置寄存器如表2-2(教材P76)所示。 (2)控制寄存器用于通过软件来控制网络适配器的工作,各个页面寄存器的定义如表2-2(教材P76)所示。;2.2.3 寄存器描述 1.配置寄存器 2.控制寄存器;类比:串口编程;2.3 NE2000(9008)编程要点 ;2.3.1 初始化 ;初始化;初始化;初始化;2.3.2 发送 ;发送 ;2.3.3 中断接收处理 ;中断接收处理;808x_type processors 68000-type processors ;中断接收处理;中断接收处理;中断接收处理;2.3.4 接收缓冲环溢出处理方法 ;接收缓冲环溢出处理方法;2.3.5 中断处理 1. 中断初始化 2. 中断处理;直接网卡编程实例(见WORD文档) 说明:该程序是用汇编语言编写的、针对UM9008网卡芯片的网络通信程序,主要功能包括网卡初始化、数据帧的发送和接收、接收缓冲环处理等。该程序已经在实际产品中使用。;Thanks!

文档评论(0)

1亿VIP精品文档

相关文档