如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
互联网构软件编程技术——网构软件分析与设计AnalysisandDesignofInternetSoftware网络编程技术概述网络编程技术¾直接网卡编程¾基于packetdriver的编程技术¾基于NDIS的网络编程¾VPACKET,PACKET32¾Libpcap/Winpcap¾BerkeleySockets编程技术¾Winsock¾JAVA网络编程直接网卡编程技术简介本章学习目的(1)了解网卡的基本工作原理;(2)为今后的产品开发做准备网适配器一般地,在OSI模型中,物理层和数据链路层的主要功能有硬件—网络适配器(也叫网卡)来完成。每个工作站都安装有一块或多块(网桥、路由器等多穴设备)。每个网卡都有自己的控制器,用以确定何时发送,何时从网络上接受数据,并负责执行802.3所规定的规程,如构成帧,计算帧检验序列、执行编码译码转换等。网适配器网络适配器(网卡)一般由可编程数据链路控制器、曼彻斯特编码/译码器、收发器接口(TRANSCEIVERINTERFACE)、控制电路和存储器等几部分组成,如图1所示。其中可编程数据链路控制器由微处理器和网络管理部分等组成。最初这些组成部分分别由不同的集成电路来实现,如National公司的DP8390+8391+8392,INTEL公司的82501,82586(控制器)。目前已将它们集成到一个芯片内,如莲花公司的UMC9008。图1网络适配器的结构网适配器当PC机有数据要发送时,便中断微处理器,并将数据传送并存储在微处理器部分的RAM芯片中,命令它发送数据。微处理器将来自PC机的数据转换为LAN的帧格式,随后将数据发送到网络上。微处理监视发送过程,以检查发送是否成功。一旦PC机准备好从网络上接收帧,微处理器便中断PC,将接收到的数据传给PC机。网适配器网卡上的可编程控制器通过DMA来与PC机交换数据,网络适配器一共提供两个相互独立的DMA通道:LOCALDMA和REMOTEDMA,如图3所示。LocalDMA:本地缓冲区与FIFO之间的DMA通道RemoteDMA:本地缓冲区与计算机之间的DMA通道其中,本地DMA通道负责本地缓冲区与FIFO之间的数据传输。当网络适配器发送帧时,由本地DMA负责将本地缓冲区中的帧数据以字节或字(通过编程指定)方式送往FIFO,然后发送到网络传输介质上。如果在发送过程中发生碰撞,本地DMA在主机CPU不介入的情况下自动重发,最大重发次数为15次。若超过15次,表示本次发送失败,此时必须由主机CUP重新介入,再次启动本地DMA。二、可编程数据链路控制器的结构、功能和编程MAINController64KBbufferCPUFIFODATAmemory网16-BYTEFIFO络数16-BYTEFIFO据LOCALDMA块数据转送MAINSYSTEMMEMORYREMOTEI/OPORTbase+10hDMA系统地址握手信号SYSTEMLOCALDMA本MICROCONTR地PROCESSOROLLER总ISA线系EISA网络适配器统PCI计算机总线图网络适配器的DMA结构示意图二、可编程数据链路控制器的结构、功能和编程当接收帧时,本地DMA自动完成由FIFO到本地缓冲区的以字节方式的数据传输,将接收到的数据缓存在本地接收缓冲区中,等到整个数据帧接收完后再通知主机取数。远程DMA负责在主机内存与本地缓冲区之间以字节(或字)的方式交换数据。当主机有数据要发送时,它将已准备好的帧(不含同步序列和CRC校验和)通过远程DMA通道传给网络适配器,然后启动网络适配器发送;当网络适配器接收到完整的数据帧后,以中断方式,通知主机通过远程DMA将接收到的数据取走。二、可编程数据链路控制器的结构、功能和编程注:①两个DMA通道都采用32位寻址方式和8位或16位的数据传输方式;②NIC允许远程DMA和本地DMA同时交叉操作完成各自的任务。FIFOFIFOFIFOCONTENTSFIFOFIFOCONTENTSLOCATIONLOCATION0LowerByteCountByteN-41UpperByteCount01ByteN-3(CRC1)2032ByteN-2(CRC2)LastByteByteN-1(CRC3)43CRC1ByteN(CRC4)54CRC2LowerByteCount65CRC3UpperByteCount76CRC470接收FIFO发送FIFO