基于DM9000A的TCP通信设计毕业论文.doc_第1页
基于DM9000A的TCP通信设计毕业论文.doc_第2页
基于DM9000A的TCP通信设计毕业论文.doc_第3页
基于DM9000A的TCP通信设计毕业论文.doc_第4页
基于DM9000A的TCP通信设计毕业论文.doc_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于DM9000A的TCP通信设计摘 要随着时代的发展,因特网的广泛普及,人们对智能化产品需求的增加, 许多应用领域纷纷与网络技术结合,出现了信息家电如PDA、可视电话 、移动电话 、机顶盒和数码相机等嵌入式设备,它们正逐渐走向网络化,以共享互联网中庞大的信息资源。本课题设计了一个基于DM9000A的TCP通信,以DM9000A以太网控制器为核心,TCP/IP协议为重点,采用软硬结合方式实现设计。课题系统的介绍了硬件网络控制器DM9000A的内部结构与特点,并编写了相应的程序代码及阐述了它的驱动原理,采用软件编程定义TCP/IP协议层的各帧结构, 通过分析协议的通信原理及具体实现过程,将简化的TCP/IP协议移植到ARM硬件平台。并利用协议的接口函数编写上层应用程序,最后在应层实现EM客户端与PC服务器端之间的数据传输。实验证明,本课题的设计能够成功的实现ARM平台上的移植,并完成数据的准确传输,这将为以后网络之间的通信提供了方便。关键词:DM9000A;以太网;TCP/IP协议 TCP communication design based on DM9000AAbstractWith the development of the times, the popularization of internet widespread, peoples demand on the increase of intelligent product , many application domains in abundance with networking union. Appeared information home appliances such as PDA, videophone, mobile telephone, set-top boxes and digital camera etc, they are gradually embedded equipment, to share internet towards network in the enormous information resources. This topic is TCP communication design based on DM9000A, takes the DM9000A Ethernet controller as the core, TCP/IP protocol for key point, and selects the soft and hard union method to realize the design. This topic systematically introduces the hardware network controller DM9000As internal structure and characteristics, and have compiled the corresponding procedure code and elaborated its actuation principle. Using software programming definition TCP/IP protocol layer each frame structure, and realizes the process specifically through the analysis agreements correspondence principle, will simplify the TCP/IP protocol transplanted to ARM hardware platform. And using agreement connection function compilation upper formation application procedure, finally in should the level realize between the EM client side and the PC server end data transmission. The experiment proved that this topics design can succeed realizes in the ARM platform transplant, and completes the data the accurate transmission, this will be for the communication between network and network and will provides convenient for every one after. Key word:DM9000A; etherne;TCP/IP protocol 目 录1 绪论11.1 TCP/IP协议的发展11.2 目前国内外TCP/IP协议的应用21.3 本课题的设计内容与结构22 以太网接口42.1 硬件平台描述42.2 DM9000A芯片的内部结构和工作原理52.3 DM9000A的驱动72.4 以太网接口设计123 TCP/IP通信协议的实现163.1 TCP/IP通信的设计思想163.1.1 TCP/IP协议的介绍163.1.2 数据报的封装173.1.3 主程序流程173.2 ARP协议及其实现193.3 IP协议及其实现233.3.1 IP协议帧数据结构233.3.2 IP协议的实现253.4 ICMP协议及其实现273.5 TCP协议及其实现293.5.1 TCP协议帧数据格式293.5.2 TCP协议端口及套接字313.5.3 TCP协议的通讯过程313.5.4 TCP协议的实现344 应用层的实现36结 论39致 谢40参考文献41附 录421 绪论1.1 TCP/IP协议的发展早在阿帕网(ARPR)产生运作之初,通过接口信号处理机实现互联的电脑并不多,大部分电脑相互之间不兼容,在一台电脑上完成的工作,很难拿到另一台电脑上去用,每一个电脑在各自的系里都运行良好,但却不能共享资源。面对这样的状况,科学家们提出这样一个理念:让所有电脑能够实现“资源共享”。这就得在这些系统的标准之上,建立一种大家共同都必须遵守的标准,让不同的电脑按照一定的规则进行“谈判”,并且在谈判之后能“握手”。随着接口信号处理机”(IMP)的研试及网络测评中心的建立,科学家们又提出用网络思想设计网络布局,网络测评系统的想法。然而考虑到如何让各种电脑都认可的信号来打开通信管道,并且数据通过后还要关闭通道的问题上,便引进了通信“协议”的概念。70年代,“包切换”理论为网络之间的联接方式提供了理论基础,建立一种对各种操作系统普适的协议,利用包交换技术实现网络之间的通信。这就产生了目前在开放系统下的所有网民和网管人员都在使用的“传输控制协议”和“因特网协议”即TCP/IP协议。通过制定详细定义的TCP/IP协议标准,第一次实现了将信息包通过点对点的卫星网络,再通过陆地电缆,再通过卫星网络,再由地面传输,贯串欧洲和美国,经过各种电脑系统,全程9.4万公里竟然没有丢失一个数据位,远距离的可靠数据传输。从而验证了TCP/IP的成功,使其得以发展1。TCP/IP的成功,给网络通信带来了很多方便,最初的TCP/IP是借助与因特网的密切关系才得以发展起来的。在网络中,TCP/IP提供了在两端计算机之间数据交换的环境,它的功能取决于两台计算机间进行的通信内容,即通过在两端计算机上运行的程序决定TCP/IP网络究竟能做些什么。TCP/IP协议具有可靠性与面向连接性,能使计算机之间直接交换数据,实现资源的共享。不管在商务还是在家庭中,把计算机与网络相连,利用TCP/IP协议通信获得全世界信息,推进了TCP/IP技术的增强。TCP/IP包含了所有网络综合技术,具备了涵盖所有类型网络的功能,目前大量的研究机构研究将它推向开放式的网络化协议。TCP/IP技术在与时俱进,不断增强,它已进入我们生活的方方面面。1.2 目前国内外TCP/IP协议的应用目前TCP/IP协议已成为占主导地位的通讯协议,它能使各种业务在不同的网上实现互联互通,从技术上为网络融合奠定了基础,是研究和应用现代网络必不可少的知识,也是从事网络设计与应用工作的基石。它之所以能够获得如此成就,是因为它具有如下的特点: 开放的协议标准,可以独立于特定计算机和操作系统的开放方式;独立于特定的物理网络硬件,可以运行在多种网络传输介质上;共同的地址规划方案,使得整个网络中的任何TCP/IP设备都具有一个唯一的地址;标准化的高层协议提供了多种可靠的用户服务。TCP/IP在诞生之初,主要以文字为中心进行信息交换,用于远程登录、电子邮件和文件传送等方面的应用。不久,它应用于万维网,实现了图像和声音、动画等在内的大量可视化信息的访问。随着因特网的的普及与发展,TCP/IP也广为人知,应用于介绍各种新闻、提供各种服务中,如传送影像和声音的服务,航天飞机升空实况转播,音乐会实况传播,讲演活动的介绍等。现在,TCP/IP已推广到因特网以外的网络领域,比如商店的收款机、银行的ATM自动取款机、测量仪器、机械设备的控制与监视、公司内部网络及家庭内的居室自动化等等,开展了各种网络应用2。随着人们对智能化产品需求的增加,未来的嵌入式产品,包括各种家电、通信、PDA、仪器仪表等设备正逐渐走向网络化,TCP/IP协议在嵌入式系统的研究也越来越有实际意义,因而基于TCP/IP协议使嵌入式设备的网络化开发也有广阔的市场前景。目前嵌入式系统作为新技术的发展方向,已广泛的应用在军事国防,消费电子,网络通信,工业控制等领域。随着因特网的普及,出现了信息家电,如PDA、可视电话 、移动电话 、机顶盒和数码相机等嵌入式设备,它们的市场需求也越来越大,正逐渐走向网络化,以共享互联网中庞大的信息资源 。TCP/IP协议已成为目前最为流行及广泛使用的以太网协议,TCP通信也将成为基于ARM的有线通信的的主要通信方式,实现远程图像监控系统、远程温度环境监控系统,网络通信等广泛的应用。1.3 本课题的设计内容与结构本课题是基于DM9000A的TCP通信设计,首先对以太网控制器DM9000A作了简要的说明,并阐述了它的驱动原理,编写了相应的程序代码,其次分析了TCP/IP协议的通信原理及实现过程,讲述了以太网层、传输层、网络层的具体处理过程,最后基于TCP协议进行网络通信,实现应用层的数据传输设计。本课题共分为四部分,内容安排如下:本课题第一部分为绪论,介绍了TCP的发展、应用背景及国内外发展前景,说明了TCP/IP应用的领域及网络通信的可靠性。本课题第二部分为以太网接口DM9000A。主要介绍了本课题的硬件平台,DM9000A的工作原理及驱动过程等。编写相关程序代码,实现数据的接收、发送处理,它为本课题的主要部分,实现了网络数据的传输。本课题第三部分为TCP/IP协议的实现。主要介绍了以太网层、传输层、网络层等各层中的协议及数据的接收、发送实现。针对TCP协议,更加系统的说明了它的具体通讯过程,如建立连接、数据传输、关闭连接等。这一部分对每个协议的实现过程都有概括的表述,做为基础,有利于一些的理解。本课题第四部分为应用层的实现。介绍应用层的协议功能,实现应用层客户端与服务器端之间的通信。2 以太网接口2.1 硬件平台描述ARM处理器FLASH网络接口SRAM串行口LCD接口USB接口网络驱动JTAG电源晶振USB接口图2.1 硬件平台本课题实现TCP/IP通信的硬件平台如图2.1所示。在这个开发平台上,ARM处理器选用S3C44B0X,与ARM连接的有JTAG接口,用于调试程序用的。电源晶振是给ARM提供电源,ARM才能进行正常工作,ARM的晶振最大为66MHZ。FLASH相当于ARM的ROM,用来储存程序,它的地址范围0X0000-00000X01C0-0000。SDRAM用来储存数据,它的地址范围为0X0C00-00000X0E00-0000。串行口用于跟外界连接,进行数据交换,如把控制命令下载到ARM中。LCD接口是连接LCD显示器的,可以用来显示ARM运行的结果,在调试仿真的时候很方便、直观。USB接口用于跟外界交换数据,如将数据从U盘中传入ARM中。网络驱动中用的网卡是DM9000A,用于S3C44B0X和网络间的数据接收和发送,DM9000A采用的晶振是25MHZ。本文的设计中将CMD引脚与处理器的地址线ADR2相连,网络控制器CMD引脚决定了处理器访问的是哪个端口寄存器:当CMD=0时,主机访问的是INDEX(地址)端口寄存器,它的地址为0X0600-0000;当CMD=1时,访问的是DATA(数据)端口寄存器,它的地址为0X0600-0004。通过这样一个ARM平台,就能很好地实现以太网通信。下文便是详细讲述在这个平台上是如何实现通信的。2.2 DM9000A芯片的内部结构和工作原理 1. 总体介绍DM9000A是一款完全集成的和符合成本效益单芯片快速以太网MAC控制器与一般处理接口,一个10/100M自适应的PHY和4K DWORD值的SRAM 。它的目的是在低功耗和高性能进程的3.3V与5V的支持宽容。DM9000A还提供了介质无关的接口,来连接所有提供支持介质无关接口功能的家用电话线网络设备或其他收发器。该DM9000A支持8位,16位接口访问内部存储器,以支持不同的处理器。DM9000A物理协议层接口完全支持使用10MBps下3类、4类、5类非屏蔽双绞线和100MBps下5类非屏蔽双绞线。这是完全符合IEEE 802.3u规格,它的自动协调功能将自动完成配置以最大限度地适合其线路带宽,还支持IEEE802.3x全双工流量控制。这个工作里面DM9000A是非常简单的,所以用户可以容易的移植任何系统下的端口驱动程序3。 2. 特点(1)支持处理器读写内部存储器的数据操作命令以字节/字/双字的长度进行 (2)集成10/100M自适应收发器 (3)支持介质无关接口 (4)支持背压模式半双工流量控制模式 (5)IEEE802.3x流量控制的全双工模式 (6)支持唤醒帧,链路状态改变和远程的唤醒 (7)支持自动加载EEPROM里面生产商ID和产品ID (8)支持4个通用输入输出口 (9)超低功耗模式,功率降低模式,电源故障模式 (10)支持100脚CMOS LQFP封装工艺 (11)兼容3.3v和5.0v输入输出电压 (12)支持4K双字SRAM (13)可选择1:1YL18-2050s YT37-1107S或5:4变压比例的变压器降低格外功率 3. DM9000A的硬件电路 网络驱动中用到的网卡DM9000A,其硬件电路如下 图2.2 DM9000A的硬件电路DM9000A的EECS引脚保持默认的悬空状态,数据线SD0-SD15直接与S3C44B0X、SST39VF1601、HY57V641620HG的数据线相连。DM9000A的IO读信号线IOR、写信号线IOW分别与处理器的读信号NOE和写信号NOW相连,片选信号CS与处理器的NGCS3端口相连,它的起始地址为0X0600-0000。读写信号与片选信号都是保持默认设置的低电平有效。在DM9000A中只有INDEX端口与DATA端口两个寄存器可以直接被CPU直接访问,其它所有内部控制和状态寄存器都是通过这两个端口寄存器间接访问的。本文的设计中将CMD引脚与处理器的地址线ADR2相连,网络控制器CMD引脚决定了处理器访问的是哪个端口寄存器:当CMD=0时,主机访问的是INDEX(地址)端口寄存器,它的地址为0X0600-0000;当CMD=1时,访问的是DATA(数据)端口寄存器,它的地址为0X0600-0004。实际中INDEX端口寄存器保存的是访问DATA端口寄存器的内部寄存器的地址,因此对DM9000A控制或状态寄存器访问的命令顺序是: (1)将要访问寄存器的地址写到INDEX端口; (2)通过DATA端口来读/写数据4。 4. 工作原理在系统上电时,处理器通过总线配置DM9000A内的网络控制寄存器(NCR)、中断寄存器(ISR)等,以完成DM9000A的初始化。随后,DM9000A进人数据收发等待状态,当DM9000A接收到外部网络送来的以太网数据时,首先检测数据帧的合法性,如果帧头标志有误或存在CRC校验错误,则将该帧数据丢弃,否则将数据帧缓存到内部RAM,并通过中断标志位通知处理器,处理器收到中断后将DM9000A接收RAM的数据读出进行处理。当处理器要向以太网发送数据帧时,先将数据打包成TCP或IP数据包,并通过8位或16位总线逐字节发送到DM9000A的数据发送缓存中,然后将数据长度等信息填充到DM9000A的相应寄存器内,随后发送使能命令,DM9000A将缓存的数据和数据帧信息进行MAC组帧,并发送出去5。2.3 DM9000A的驱动1. DM9000A按字节、半字、字方式读写数据#define DM9000_outb(d,P) ( *(volatile UINT8 *)p = d ) #define DM9000_outw(d,p) ( *(volatile UINT16*)p = d )#define DM9000_outl(d,p) (*(volatile UINT32 *)p = d )#define DM9000_inb(p) (*(volatile UINT8 *)p)#define DM9000_inw(p) (*(volatile UINT16 *)p)#define DM9000_inl(p) (*(volatile UINT32 *)p)其中*(volatile UINT8 *)p为强制类型转换,即将P转换为无符号八位,再将d赋给转换后的p,后面几个语句类似于此语句。2. DM9000A软件复位void DM9000_reset(void) dlyus(20);DM9000_iow(DM9000_NCR,0x03); dlyus(20); DM9000_iow(DM9000_NCR, 0x03); dlyus(20); DM9000_iow(DM9000_GPR,0x01); DM9000_iow(DM9000_GPR,0x00); dlyms(4);函数的功能是实现DM9000A的复位。即将寄存器NCR的第0位赋值为1,保持4ms,自动清零。 3. DM9000A寄存器读数据_inline UINT8 DM9000_ior(UINT8 reg) DM9000_outb(reg,DM9000_INDEX_PORT); return DM9000_inb(DM9000_DATA_PORT); 使用如上函数,实现DM9000A从寄存器中读取数据,首要对要访问的寄存器正确寻址,再将DM9000A的数据端口和地址端口复用,通过CMD引脚来选择端口。当CMD引脚拉高时,当前命令周期访问的是数据端口;当CMD引脚拉低时,当前命令周期访问的是地址端口。此程序首先是由INDEXPORT写入需要读取操作的寄存器地址,在由DATAPORT读取寄存器内的数据。4. DM9000A寄存器写数据 _inline void DM9000_iow(UINT8 reg,UINT8 value) DM9000_outb(reg,DM9000_INDEX_PORT); DM9000_outb(value,DM9000_DATA_PORT); 函数功能实现将数据写入寄存器中,首先由INDEXPORT写入需要写操作的寄存器地址 ,再由DATAPORT写入寄存器内数据。5. DM9000A检查PID与VID UINT32 DM9000_probe(void) UINT32 id_val; id_val = DM9000_ior(DM9000_VIDL); id val|= DM9000_ior(DM9000_VIDH) 8; id val|= DM9000_ior(DM9000_PIDL) 16; id_val |= DM9000_ior(DM9000_PIDH)7)&0x01) != DM9000_IO_MODE) return -1; DM9000_iow(DM9000_NCR, 0x00); DM9000_iow(DM9000_TCR, 0x00); DM9000_iow(DM9000_SMCR,0x00); DM9000_iow(DM9000_NSR, 0x2C); DM9000_iow(DM9000_ISR, 0x3f); DM9000_iow(DM9000_BPTR,0x3f); DM9000_iow(DM9000_FCTR,0x38); DM9000_iow(DM9000_FCR, 0x29); for (i = 0,oft = DM9000_PAR;i 6;i+,oft+) DM9000_iow(oft,maci); for (i = 0,oft = DM9000_MAR;i 8;i+,oft+) DM9000_iow(oft,0xff); DM9000_iow(DM9000_RCR,0x31); DM9000_iow(DM9000_IMR,17); #ifdef ETHERNET_DEBUG DbgPrintf(DM9000 init is succed!); #end if 对DM9000A的初始化,即填写、设置DM9000A的控制寄存器,首先调用复位函数,使GPIO默认0位为输出以激活内部PHY,寄存器NCR的第0位赋值为1,软件复位清零,以便设置正常的工作模式。 GPIO控制寄存器(GPCR),GPCR的1到3位表示GPIO的输入输出方向,1为输出,0为输入。4到6位为GPIO的固定output不可写,在本课题设计中,将其设置为0x01。 GPIO寄存器(GPR),它的第0位为0表示激活PHY,为1表示关闭PHY。它的1到3位表示GPIO的1到3位的端口映射位,4到6位表示GPIO的4到6位的端口映射位。在本课题将其设置为0x00,表示激活PHY。 网络控制寄存器(NCR),设置网络控制寄存器NCR的Bit0(RST位)为1,进行软件复位,设置网络控制寄存器NCR,进行网络工作模式设置。复位成功后,进行进一步初始化操作处理。 设置发送控制寄存器(TCR),本课题中将其置为0x00。它的Bit0代表发送请求,发送完成后自动清零该位;Bit1表示禁止为数据包指针1添加CRC校验;Bit2表示禁止为数据包指针1添加PAD;Bit3表示禁止为数据包指针2添加CRC校验;Bit4表示禁止为数据包指针2添加PAD;Bit5表示额外冲突模式控制,0代表当额外的冲突计数多于15则终止本次数据包,1代表始终尝试发发送本次数据包;Bit6表示Jabber传输使能,1代表使能Jabber传输定时器(2048字节),0代表禁止。本课题中将其设置为0x00。 特殊模式控制寄存器(SMCR)赋值为0x00,它的0位表示强制最短“Back-off”时间,第1位表示强制最长“Back-off”时间,第2位表示强制冲突延迟,3到6位保留,第7位表示特殊模式使能。 使用网络状态寄存器NSR清除各种状态标志位,将其置为0x2C,赋值中断状态寄存器(ISR)为0x3f,来清除所有中断标志位。它Bit0表示数据包接收;Bit1表示数据包传输;Bit2表示接收溢出;Bit3表示接收溢出计数器溢出;Bit4表示传输“Under-run”Bit5表示连接状态改变;Bit7表示处理器模式;0为16位模式,1为8位模式。 还用到了背压门限寄存器(BPTR),它的0到3位表示拥挤状态时间,默认为200us。0000为5us,0001为10us,0010为15us,0011为25us,0100为50us,0101为100us,0110为150us,0111为200us,1000为250us,1001为300us,1010为350us,1011为400us,1100为450us,1101为500us,1110为550us,1111为600us。它的4到7位表示背压门限最高值,当接收SRAM空闲空间低于该门限值,则MAC将产生一个拥挤状态,默认值为3H,即3K字节空闲空间,不要超过SRAM(16KB)大小。本课题将其赋值为0x3f。对于溢出控制门限寄存器(FCTR), 将其赋值为0x38,它的0到3位表示接收FIFO缓存溢出门限最低值。当接收SRAM空闲空间大于该门限值,则发送一个暂停时间(pause_time)为0000H的暂停包;当溢出门限最高值的暂停包发送之后,溢出门限最低值的暂停包才有效,默认值为8K字节,不要超过SRAM大小。4到7位表示接收FIFO缓存溢出门限最高值;当接收SRAM空闲空间小于该门限值,则发送一个暂停时间(pause_time)为FFFFH的暂停包;若该值为0, 则无接收空闲空间,默认值为3H,即3K字节空闲空间,不要超过SRAM大小。 对于接收/发送溢出控制寄存器(FCR),Bit0表示溢出控制使能,1设置使能溢出控制模式;Bit1表示接收暂停包当前状态;Bit2表示接收暂停包状态,只读清零允许;Bit3表示背压模式,该模式仅在半双工模式下有效,当接收SRAM超过BPHW并数据包DA匹配时,产生一个拥挤状态;Bit4表示背压模式,该模式仅在半双工模式下有效,当接收SRAM超过BPHW并且接收新数据包时,产生一个拥挤状态;Bit5表示强制发送暂停包使能,按溢出门限最高值使能发送暂停包;Bit6表示1发送暂停包,发送完成后自动清零,并设置TX暂停包时间为FFFFH;Bit7表示1发送暂停包,发送完成后自动清零,并设置TX暂停包时间为0000H。将其赋值为0x8。 还用到物理地址寄存器(PAR),多点发送地址寄存器(MAR)。接收控制寄存器(RCR),Bit0表示接收使能;Bit1表示混杂模式(Promiscuous Mode);Bit2表示忽略不完整的数据包;Bit3表示忽略所有多点传送;Bit4表示丢弃CRC校验错误的数据包;Bit5表示丢弃长数据包,1为丢弃数据包长度超过1522字节的数据包;Bit6表示看门狗定时器禁止,1禁止,0使能。赋值0x31。中断屏蔽寄存器(IMR),Bit0表示1使能数据包接收中断;Bit1表示1使能数据包传输终端;Bit2表示1使能接收溢出中断;Bit3表示1使能接收溢出计数器溢出中断;Bit4表示1使能传输“Underrun”中断;Bit5表示1使能连接状态改变中断;Bit7表示1使能指针自动跳回。当SRAM的读、写指针超过SRAM的大小时,指针自动跳回起始位置,需要驱动程序设置该位,若设置则MRRH将自动位0CH。本文将其赋值为0x807。2.4 以太网接口设计1. 以太网的MAC帧格式 目的端的 MAC地址发送端的MAC地址类型数 据FCS 帧的传输方向6624615004 图2.3 以太网帧格式 以太网的MAC帧格式比较简单,由5个字段组成。前两个分别为6字节的目的端地址与发送端地址字段。第三个为两字节的类型字段,标志上一层用的是什么协议,如上层使用的是IP数据报,则该类型字段值为ox0800。第四个是数据字段,其长度为46 1500字节之间。最后为4字节的帧检验序列FCS。MAC帧在物理层传输时还须在帧前面插入8个字节,它有两段组成,第一个字段为7个字节的前同步码,实现位同步。第二个字段是帧开始定界符,定义为10101011。 以太网帧结构体定义如下: struct ethernet_frame UINT8 destinationETH_ADDRESS_LEN;UINT8 sourceETH_ADDRESS_LEN;UINT16 frame_size;UINT16 protocol;UINT16 buf_index; ;2. 以太网的数据链路传输以太网基本上采用总线型的连接方式,在一条电缆上连接所有的计算机,当某台计算机发送数据时,其信号可以传输给连接在电缆上的所有计算机。每台计算机的网卡,可以接收传过来的数据,接收到数据后,网卡给CPU一个中断信号,告诉它应该接收数据了,收到中断请求的CPU就中断现在正在执行的处理,开始准备接收数据包。驱动软件则首先检查MAC地址,从而判断是否有自己应当接收的数据报。如果与自己主机NIC的MAC地址相同,就接着检查类型的字段,以及是否有自己应当接受的协议。当在自己可接受的协议情况下,就使用在内存中的可接纳数据帧长度的内存缓冲器,把NIC中的数据通过数据总线传送到内存,然后再交由上层的软件作进一步的处理。如果与自己主机NIC的MAC地址不同,没有可接收的数据,则删除数据报。3. DM9000A接收数据处理 DM9000A接收以太网数据具体实现函数为DM9000_ReceiveFrame,首先要判断数据帧的合法性,其具体过程是DM9000A从网络中接到一个数据包后,会在数据包前面加上4个字节,分别为01H、status、LENL、LENH。然后要读取这四个字节来确定数据包的状态,若第一个字节是01H表示接收的是有效数据包,若为00H则表示没有收到数据包,若为其它值则表示网卡没有正确初始化,需要重新进行初始化。当接收的数据包长度小于60字节时,DM9000A会自动为不足的字节补上0,使其达到60字节。同时,在接收到的数据包后DM9000还会自动添加4个CRC校验字节,可以不予处理。所以,接收到的数据包的最小长度会是64字节。接收到有效数据后,读取并保存以太网协议头,以太网协议头长度14字节,具体包括6个字节的以太网目的MAC地址,6个字节的以太网源MAC地址和2个字节的帧类型 8。接收处理过程如图2.4所示: 读取接收数据包的地址读取数据包第一个字节 接收有效数据开始 01H ?Y N 可接收的协议 类型?帧头CRC校验 正确?结束保存以太网协议头读取16位数据内部接收数据缓存区Y N YN 图2.4 DM9000A的接收处理的流程图4. DM9000A发送数据处理DM9000A发送处理具体实现函数为DM9000_SendFrame,其过程如图2.5所示,首先由DM9000_outb()函数写入数据命令,再由DM9000_outw()函数按照以太网协议的格式将16位数据写入,发送到DM9000A的数据发送缓存区中,然后将数据长度等信息填充到DM9000A的相应寄存器内,并写入发送数据的长度,发送使能命令,DM9000A将缓存的数据和数据帧信息进行MAC组帧,并发送出去,并设置一个发送完成后的清除标志。写入数据命令16位数据写入数据发送缓存区写入发送数据长度发送数据开始结束清除图2.5 DM9000A的发送处理流程图3 TCP/IP通信协议的实现3.1 TCP/IP通信的设计思想3.1.1 TCP/IP协议的介绍 TCPIP协议起源于20世纪60年代末美国政府资助的一个分组交换网络研究项目,到20世纪90年代已经发展成为计算机之间最常用的通信协议。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。TCPIP协议并不完全符合OSI的七层参考模型,它采用4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求,该模型的目的是使各种硬件在相同的层次上相互通信。TCP/IP协议代表了整个TCP/IP协议族,不仅包括TCP和IP两个协议,还包括ARP、ICMP、UDP等多个协议,是Internet上最基本的网络通信协议,是实现互联网连接性和互操作性的关键。 TCP/IP参考模型由数据链路层、网络层、传输层和应用层构成,它们是基于硬件层次的四个概念性层次。在这四个层次中,每一层都有特定的功能,上一层直接利用下一层提供的服务来实现本层的功能,下一层又通过相邻层之间的接口为上一层提供服务。通信的双方在相同层之间进行通话,通话规则和协定就是该层的协议。TCP/IP参考模型中的每一层都包含有一个或多个协议,而各个层次所包含的协议总和就构成了TCP/IP协议栈9。参考模型如表3.1:表3.1 TCP/IP协议参考模型应用层HTTP,Telnet,FTP,SMTP,SNMP传输层TCP,UDP网络层IP,ICMP,IGMP数据链路层Ethernet,X.25,SLIP,ARP,RARP 1.数据链路层,它是TCP/IP参考模型的最底层,它负责将IP分组封装成适合在物理网络上传输的帧格式进行传输,同时将物理网络上接收到的数据帧进行解封装,提取出IP分组交付给网络层。数据链路层的协议与网络的具体实现有关,通常包括网络设备的驱动程序和对应的网络的接口卡,它们一起处理与传输媒介有关的物理接口细节。 2.网络层,主要确定如何将分组从源端送达目的端。即确定是将数据链路层传输来的IP分组继续传给其他的网络节点,还是直接传给传输层;并对传输层发来的数据进行填充报头、路径选择和发送。IP协议是网络层的重要协议,它负责无连接的数据传送、数据报寻径和差错处理。网络层还定义了ARP、RARP、ICMP等协议,以完成地址解析、传递网络控制信息、提供差错报告等功能。 3.传输层,主要为源端口和目的端口的应用程序提供端到端的通信。传输层定义了两个端到端的传输层协议:一个是TCP传输控制协议,它是一个面向连接的协议,允许从一台机器发出的字节流无差错的到达另一台机器;另一个协议是UDP用户数据报协议,它是一个不可靠的、不面向连接的传输协议,用于不需要TCP排序和流量控制的应用中。 4.应用层,为用户提供特定的应用服务。常见的应用层协议有FTP文件传输协议、HTTP超文本传输协议、SMTP简单邮件传送协议、Telnet远程登录协议等10。3.1.2 数据报的封装 数据封装体现协议层次模型的重要特征。每层协议按照自己的方式进行数据的封装和拆封。数据发送时,各层在收到的上一层数据前面添加对应的头部信息,进行数据封装,然后传递到下一层。数据接收时,各层对数据进行解包,剥离出头部信息,进行适当的保存,然后将数据传递到上一层处理。如图3.1所示:以太网首部IP首部TCP首部应用数据IP首部TCP首部应用数据以太网驱动程序TCP首部应用数据APPL用户数据用户数据应用程序TCPIP图3.1 数据报的封装3.1.3 主程序流程 当以太网网卡接收到数据的时候,这些数据都是经过了哪些协议?应该做怎样的处理才能被正确的接收呢?应该如何编程实现呢?如图3.2主程序流程图所示,展示了本课题设计的总体思想。初始化是编程实现设计的必要步骤,如图所示以初始化设置为第一步,进入本课题的设计,它包括设置时钟初始化、I/O初始化、存储器CHCHE配置、使能CACHE及看门狗初始化、中断初始化和网络初始化。其中网络初始化包括本地的物理地址以及IP地址、时间的初始化、DM9000A的初始化、ARP、TCP和TCP协议应用层的初始化等。 开 始 接收以太网数据是ARP包?是IP包?是ICMP包?是TCP包?YN调用ARP协议处理调用ICMP协议处理初始化设置结束调用TCP协议处理调用TCP应用层侦听事件处理YYYNNN图3.2 主程序流程图 首先调用DM9000A驱动,获取数据,实现以太网的数据接收。具体的实现过程在2.4节做过详细说明。当以太网成功接收数据时,首先会分析是不是ARP包,是的话就调用ARP协议处理,不是的话就看看是不是IP数据包,如果不是的话就丢弃该帧。若是IP数据包,还要具体分析是哪种报文,因为ICMP、TCP报文都是用IP传送的。判断IP数据报传送的是哪种报文后,调用相应协议的处理程序处理数据,这样就完成了数据的接收了。 当接收处理完数据以后。再重新检测以太网网卡是否接收新的数据,如此一直循环下去,实现数据的接收和发送。以上各种协议的处理过程将在后文详细地描述。3.2 ARP协议及其实现1. ARP的分组帧格式地址解析协议(ARP)是联系IP协议和LAN协议的桥梁,该协议把节点的IP解析成对应的MAC地址(也叫物理地址),它可以在局域网内寻找IP所对应的MAC地址,并保存起来以供发送使用。这是由于以太网设备并不识别32位的网络地址,它是以48位的物理地址来传输以太网数据包的,因此IP驱动器必须把网络目的地址转换为物理目的地址。以太网目的地址帧类型硬件类型协议类型可选域发送端以太网地址目的以太网地址以太网源地址发送端IP地址硬件地址长度协议地址长度6612166222目的IP地址44以太网首部28字节ARP请求、应答图3.3 用于以太网的ARP请求或应答分组格式在以太网上解析IP地址时,ARP请求和应答分组的格式如图3.3所示。以太网报头中的目的地址为全1的特殊地址即广播地址,电缆上的所有以太网接口都要接收广播的数据帧。以太网帧类型表示后面数据的类型,对于ARP请求或应答来说,该字段的值为0x0806。形容词hardware(硬件)和protocol(协议)用来描述ARP分组中的各个字段。例如,一个ARP请求分组询问协议地址(这里是IP地址)对应的硬件地址(这里是以太网地址)。硬件类型字段表示硬件地址的类型,它存储的是以太网的MAC帧,则值为1。协议类型字段表示要映射的协议地址种类,它的值为0x0800即表示IP地址,它的值与包含IP数据报的以太网数据帧中的类型字段的值相同。如本课题设计,在以太网上使用IP协议进行通信,则硬件类型字段应为1,协议类型字段应存储0x0800。硬件地址长度和协议地址长度,分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4。可选域指出四种操作类型,它们是ARP请求(值为1)、ARP应答(值为2),这个字段是必需的,因为ARP请求和ARP应答的帧类型字段值是相同的。对于一个ARP请求来说,除了目的端硬件地址外的所有其他的字段都有填充值。当ARP请求包时,目的端硬件地址域中存储0;当系统收到一份目的端为本机的ARP请求报文后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论