版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于网络的远程温度检测系统设计摘要远程温度检测系统是一种不需人员到达现场就能完成远程温度监控的系统,它可以有效地解决传统人工检测存在的诸如效率低、成本高、错误率高的问题。远程温度检测系统中最重要的部分就是数据传输方法的选择,根据现有的几种数据传输方法的优缺点,本文提出了一种基于以太网传输数据的远程温度检测系统方案。以太网具有不需单独布线,兼容性强,技术支持广泛的优点,采用以太网作为传输方法的远程温度检测系统有良好的发展前景。而且随着网络应用的普及,本方案只需要经过小量修改,则可应用到其他网络通信设计。具有较强的示范意义。本系统分为三大模块,分别为数据采集模块,数据传输模块和上位机软件。数据采集
2、模块通过8 位单片机ATmega32采集温度数据,将其储存到外围串行EEPROM中,防止意外断电造成数据丢失。数据传输模块分为以太网接口和ATmega32上的TCP/IP协议栈两部分。以太网接口硬件部分主要由ATmega32,以太网卡芯片Enc28j60组成,由于8 位单片机资源有限,ATmega32上的TCP / IP 协议栈只包含ARP,ICMP, IP, TCP 和UDP 协议,并且根据本系统需要实现的功能,这些协议经过了相应简化,例如,在ICMP 协议中仅实现了Ping 应答功能;在护协议中去掉了路由和数据报分片功能,仅实现数据报的发送和接收;在TCP 协议简化了状态机,滑动窗口和定时
3、重传机制,减少了连接数。上位机软件利用VC+ 的SOCKET编程实现,具有测试连接,显示即时数据的功能。经过测试,本系统可以实现实时显示数据,与上位机进行通信,以及在上位机上实时查询数据的基本功能。关键词:远程温度检测系统,以太网,TCP/IP协议AbstractThe remote temperature reading system is a new mode in which temperature data can be read without people on the spot. It can effectively solve the problems such as low
4、efficiency ,high cost and high error rate.The data transmission is the most important part in a remote temperature reading system ,based on advantages and disadvantages of current data transmission methods, a remote temperature reading system in which data is transmitted based on Ethernet is present
5、ed. For Ethernet technology has many advantages such as good compatibility、 extensive technical support ,and the research in this field is significative.This system consists of three main modules : data collection module.data transmission module and software on the computer. In data collection modul
6、e, the 8-bit MCU ATmega32 is used to collect data and stored in EEPROM to avoid data lost cased by accidental power off.the data transmission module consists of the Ethernet interface and simple TCP/IP protocol stack on ATmega32.The hardware part of the Ethernet interface is made up of ATmega32, Eth
7、ernet controller Enc28j60. For the limited resource of 8-bit MCU, TCP/IP protocol stack on ATmega32 only has protocols including ARP, ICMP, IP, TCP and UDP. In addition, these protocols are simple according to the functions this system need to have. In ICMP protocol, only Ping function is reserved.
8、In IP protocol, the routing and packet segment function is cancelled, only packet send and receive function is reserved. In TCP protocol, the state machine, slip window mechanism and timing to retransmit mechanism are simple, and the number of connection is reduced. Software on the computer is reali
9、zed in the environment of VC+, it has functions including connection test and instant data display. The testing result shows that this system has basic functions of temperature reading and data transmission.Keywords: remote temperature reading system; Ethernet; TCP/IP protocols摘要IAbstractII1 引言12 网络
10、开发环境介绍22.1控制芯片ATmega3222.2 网络芯片Enc28j6032.3开发软件63 TCP/IP协议的简介与分析73.1 TCP/IP协议及实现原理73.1.1 TCP/IP 协议简介73.1.2 TCP/IP协议组分层73.1.3 TCP/PI协议的封装93.1.4 TCP/IP协议的分用103.2以太网协议分析103.2.1以太网首部结构103.2.2 网络接口层功能及关系图113.2.3 ARP 协议的分析 ARP协议说明 ARP 数据报分组格式 ARP 协议的高速缓存133.2.4 IP 协议的分析
11、 IP 协议说明 IP数据报格式143.2.5 ICMP协议的分析 ICMP协议说明 ICMP 数据报格式153.2.6 UDP 协议的分析153.2.7 TCP 协议分析 TCP 协议说明 TCP数据报格式173.3本章小结184 TCP/IP协议的实现194.1单片机下TCP/IP协议栈中协议的选择194.2 ARP协议的实现204.2.1 ARP首部数据结构204.3 IP协议的实现224.3.1IP协议的简化224.3.2 IP首部的数据结构234.3.3 IP首部校验和234.3.4 IP协议的
12、实现244.4 ICMP协议的实现254.4.1 ICMP首部数据结构254.4.2ICMP协议首部校验和264.4.3 Ping命令的函数实现264.5 UDP协议的实现274.5.1 UDP数据报首部274.5.2 UDP首部校验和284.5.3 UDP协议的函数实现284.6 TCP协议的实现304.6.1 TCP协议的简化304.6.2 TCP报头数据结构314.6.3 TCP校验和314.6.4 TCP协议的函数实现314.7本章小结335实际应用温度远程检测系统345.1温度传感器DS18B20345.1.1 DS18B20介绍345.1.2 DS18B20温度检测355.2 远程
13、温度监控系统的设计375.2.1设计思想385.2.2 下位机具体软件实现:395.2.3上位机的具体实现445.3 监控系统实现情况466总结51致谢52参考文献531 引言当今时代,以 Internet 为代表的计算机网络的迅速发展及相关技术的日益完善,突破了传统通信方式的时空限制和地域障碍,使更大范围内的通信变得十分容易,Internet 拥有的硬件和软件资源正控制、高档测量仪器设备资源的远程实时调用,远程设备故障诊断等等。与此同时,高性能、高可靠性、低成本的网关、路由器、中继器及网络接口芯片等网络互联设备的不断进步,又方便了 Internet、不同类型测控网络、企业网络间的互联。利用现
14、有 Internet 资源而不需建立专门的拓扑网络,使组建测控网络、企业内部网络以及它们与 Internet 的互联都十分方便,这就为测控网络的普遍建立和广泛应用铺平了道路。网络技术的出现,正在极大地改变着人们生活的各个方面。具体到计量测试、测控技术及仪器仪表领域,微机化仪器的联网,高档测量仪器设备以及测量信息的地区性、全国性乃至全球性资源共享,各等级计量标准跨地域实施直接的数字化溯源比对,远程数据采集与测控,远程设备故障诊断,电、水、燃气、热能等的自动抄表等等,都是网络技术进步并全面介入其中发挥关键作用的必然结果,所以很有必要对它进行研究。本文主要研究内容: 利用AVR单片机(ATmega3
15、2L)和Enc28j60芯片来实现一个微型的网络通信节点,并通过DS18B20温度检测芯片组成一个远程温度检测系统。与Internet 的无缝连接,用户通过上位机可以实时监控现场温度,并且可以获取选定节点的历史数据。 2 网络开发环境介绍本设计主要用到两个芯片,一个是作为控制芯片的ATmega32,另外一个是作为通信的Enc28j60。ATmega32是高档8位芯片,具有运算速度快,可靠性高的优先,配套AD接口和标准串口,方便组合成一个检测单元,而且具有低功耗模式,适合分散检测现场使用。Enc28j60是串行SPI接口网络通信芯片,内部支持802.3标准,10M网络速度。具有成本低,通信方便等
16、优点。由这两个芯片组成的网络节点,实用性非常强。 2.1控制芯片ATmega32AVR 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。ATmega32有如下特点:32K 字节的系统内可编程Flash(具有同时读写的能力,即RWW),1024 字节 EEPROM, 2K 字节 SRAM,32 个通用I/O 口线,32 个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的
17、灵活的定时器/ 计数器(T/C), 片内/ 外中断,可编程串行USART,面向字节的两线串行接口, 8 路10 位具有可选差分输入级可编程增益(TQFP 封装) 的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。 工作于空闲模式时CPU 停止工作,而USART、两线接口、A/D 转换器、SRAM、T/C、SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态; ADC 噪声抑制模式时终止CPU 和除
18、了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声; Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby 模式下则允许振荡器和异步定时器继续工作。本芯片是以Atmel 高密度非易失性存储器技术生产的。片内ISP Flash 允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(Applicationlash Memory)。在更新应用Flash存储区时引导F
19、lash区(Boot Flash Memory)的程序继续运行,实现了RWW 操作。 通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内, ATmega32 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。2.2 网络芯片Enc28j60ENC28J60 是带有行业标准串行外设接口(SerialPeripheral Interface,SPI)的独立以太网控制器。 它可作为任何配备有SPI 的控制器的以太网接口。ENC28J60 符合IEEE 802.3 的全部规范,采用了一系列数据包过滤机制以对传入数据包进行限制。它还提供了一个内部DMA
20、模块,以实现快速数据吞吐和硬件支持的IP校验和计算。 与主控制器的通信通过两个中断引脚和SPI 实现,数据传输速率高达10 Mb/s。两个专用的引脚用于连接LED,进行网络活动状态指示。图1-1所示为ENC28J60的简化框图。 图1-2所示为使用该器件的典型应用电路。 要将单片机连接到速率为10 Mbps 的以太网,只需ENC28J60、两个脉冲变压器和一些无源元件即可。ENC28J60 由七个主要功能模块组成:1. SPI 接口充当主控制器和ENC28J60 之间通信通道。2. 控制寄存器用于控制和监视ENC28J60。3. 双端口RAM缓冲器用于接收和发送数据包。4. 判优器当DMA、发
21、送和接收模块发出请求时对RAM 缓冲器的访问进行控制。5. 总线接口对通过SPI 接收的数据和命令进行解析。6. MAC (Medium Access Control)模块实现符合IEEE 802.3 标准的MAC 逻辑。7. PHY(物理层)模块对双绞线上的模拟数据进行编码和译码。该器件还包括其他支持模块,诸如振荡器、片内稳压器、电平变换器(提供可以接受5V 电压的I/O 引脚)和系统控制逻辑。从上文可以看出,由Enc28j60和ATmega32可以很方便地组成一个网络模块,并且实现了物理层和数据链路层,上位机主要实现TCP/IP协议就可以与网络进行通信。具体连接见附录系统原理图。在使用EN
22、C28J60 发送和接收数据包前,必须对器件进行初始化设置。 根据应用的不同,一些配置选项可能需要更改。 通常初始化任务会在复位后立即完成,并且不再需要更改。主要的初始化有:接收缓冲器在接收数据包前,必须编程ERXST 和ERXND 指针来对接收缓冲器进行初始化。ERXST 和ERXND 之间的存储空间(包括这两个地址)专供接收硬件使用。 建议用偶地址编程ERXST 指针。使用大量数据并经常交换数据包的应用可能希望把大部分存储空间分配为接收缓冲器。 需要保存已发数据或有一些数据包需要发送的应用应分配较少的接收存储空间。当编程ERXST 指针时,会用相同的值自动更新ERXWRPT寄存器。 接收硬
23、件将从ERXWRPT中的地址开始写入已收到的数据。为跟踪接收的数据,ERXRDPT寄存器也需要用相同的值编程。 要编程ERXRDPT,主控制器必须首先写入ERXRDPTL,然后写入ERXRDPTH。发送缓冲器所有未被用作接收缓冲器的存储空间都作为发送缓冲器。 要发送的数据应写入未使用的空间。 但在发送完一个数据包后,硬件会在存储器中数据包最后一个字节后写入一个7 字节的状态向量。 因此主控制器应在接收缓冲器的开始和每个包之间预留至少7 个字节。 不需要对发送缓冲器进行特定的初始化。接收过滤器应通过写ERXFCON寄存器使能或禁止相应的接收过滤器。等待OST如果在上电复位后立即执行初始化,应查询
24、ESTAT.CLKRDY 位,确保在开始修改MAC 和PHY 寄存器前已经过足够的时间。2.3开发软件本设计使用ICCAVR作为开发软件,自ATMEL公司的AT90系列单片机诞生以来有很多第三方厂商为AT90系列开发了用于程序开发的C语言工具,ICCAVR就是ATMEL公司推荐的第三方C编译器之一。ICCAVR是一种符合ANSI标准的C语言来开发MCU程序的一个工具,功能合适、使用方便、技术支持好,它主要有以下几个特点:1.ICCAVR是一个综合了编辑器和工程管理器的集成工作环境(IDE);2.源文件全部被组织到工程之中,文件的编辑和工程的构筑也在这个环境中完成,错误显示在状态窗口中,并且当你
25、点击编译错误时,光标自动跳转到错误的那一行;3.工程管理器还能直接生成可以直接使用的INTEL HEX格式文件,该格式的文件可被大多数编程器所支持,用于下载到芯片中;4.ICCAVR是一个32位的程序支持长文件名。3 TCP/IP协议的简介与分析3.1 TCP/IP协议及实现原理3.1.1 TCP/IP 协议简介一个互连网是由许多种异种网络互连而成的,因此这个互连系统中的各个计算机必须遵循同一组通信规程时才能在异种网络之间相互通信。Internet之所以能产生、存在并蓬勃发展的最主要原因是它是基于一组开放体系的通用协议。在70 年代中期,美国国防部为了确保其网络上的异种机之间进行联接通讯以支持
26、国防科研项目的研究,制定了一套开放的通讯标准,以提供不同网络上节点计算机之间的通讯,这就是闻名全球的TCP/IP协议。TCP/IP协议不是一个单一的协议,而是一系列通讯协议所组成,通常被认为是一个四层协议系统,每一层分别负责不同的通信功能,所以又叫TCP/IP协议族。有了TCP/IP协议,我们就可以把互连网看成一个单独的虚拟网络,所有计算机都与它相连而不考虑实际的物理连接。TCP/IP协议有一些重要的特点,以确保在特定的时刻能满足一种重要的需求,即世界范围的数据通信。其特点包括:1、开放式的协议标准。可免费使用,且与具体的计算机硬件或操作系统无关。由于它受到如此广泛的支持,因而即使不通过Int
27、ernet通信,利用TCP / IP 来统一不同的硬件和软件也是很理想的。、与物理网络硬件无关。这就允许TCP / IP 可以将很多不同类型的网络集成在一起,它可以适用于以太网、令牌环网、拨号线、X . 25 网络以及任何其它类型的物理传输介质。3 、通用的寻址方案。该方案允许TCP / IP 设备唯一地寻址整个网络中的任何其它设备,该网络甚至可以像全球Internet 那样大。4 、各种标准化的高级协议。可广泛而持续地提供多种用户服务。123.1.2 TCP/IP协议组分层在Internet内部,计算机之间互相发送信息包进行通信,TCP/IP协议对这种信息包的传输方式作了具体的规定。TCP/
28、IP分层模型(TCP/IP Layening Model)被称作因特网分层模型(Internet Layering Model)、因特网参考模型(Internet Reference Model)。下图表示了TCP/IP分层模型的四层及其相关协议。在TCP/IP 协议集中包含了若干完成不同功能的协议。其中包括:DNS(Domain Name service )域名服务器FTP (File Tranfser Protocol )文件传送协议NVP ( Network Voico Protocol )网络语音协议TELNET (Telecommun Network)远程终端录入通信协议SMTP (
29、Simple Mail Transfer Protocol)简单邮件传送协议TCP ( Transmission Control Message Protocol )可靠流传输协议UDP (User Datagram Protocol )用户资料报协议ICMP(Internet control Message Protocol )互联网控制报文协议IP (Internet Protocol )资料报服务协议ARP (Adress Resolution Protoco ) IP 位元源址向物理位元源址的转换协议RARP ( Reverse Address Resolution Protocol)
30、物理位元源址向IP 位址的转换协议TCP/IP 网络协议族通常在四个不同的协议层上进行开发,每一层分别负责不同的通信功能,并且每一层都是多个协议的组合。每一层负责实现不同的功能:第一层网络接口层 网络接口层包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。 第二层网间层 网间层对应OSI七层参考模型的网络层。本层包含IP协议、RIP协议(Routing Informat
31、ion Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。 第三层传输层 传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。 第四层应用层 应用层对应于OSI七层参考模型的应用层和表达层。因特网的应用层协议包括Finger、Whois、FTP(文件传输协议
32、)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等。4其中TCP,IP ,UDP ,ARP,ICMP,这五个是最基础的协议,实现最基础的网络通信所必备。这也是接下来的重点。3.1.3 TCP/PI协议的封装协议的封装是指当应用程序使用TCP 协议或UDP 协议传送数据时,数据被送入TCP/IP协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图所示。图中,TCP 传给IP的数据单元称作TCP 报文段或
33、简称为TCP 段。IP 传给网络接口层的数据单元称作IP 数据报。通过以太网传输的比特流称作帧。应用层的数据要想在以太网进行传输,就必须按照以太网的帧格式进行封装,而且这是一个逐级封装的过程,这是因为:1 、UDP 、TCP 、ICMP 等协议都可以向网络层的IP 协议传送数据,因此IP 数据报中必须对IP 的上层协议进行标识。2 、网络层的IP 协议,以及地址解析协议ARP即都可以向链路层传送数据,因此也必须在以太网的帧首部中加入指明数据来源的类型域。3.1.4 TCP/IP协议的分用上图实际上也是TCP/IP协议接收数据处理示意图,体现了以太网数据分用的思想。这种数据分用的过程可以概括如下
34、:1 、ARP协议和RARP 协议提供逻辑地址和物理地址之间的动态转换。IP 数据报必须封装成帧才能在以太网中进行传输,这就表示发送站必须有接收站的物理地址。2 、链路层的以太网驱动程序负责接收以太网数据帧,剥离以太网数据帧的首部信息,形成IP 数据报或ARP、RARP 分组。根据以太网数据帧的下层协议类型并分别交付给下一层。如果是IP 数据报,则被送交网络层。3 、网络层在接收以太网驱动程序送到的IP 数据后,按照IP 数据帧中的协议种类对数据进行处理,去掉于首部数据,形成TCP 或UDP 或ICMP报文。如果得到TCP 或UDP 报文,则把数据报交付给运输层,否则对ICMP报文进行处理。4
35、 、运输层在得到UDP 报文后,按照UDP协议中的端口号分别送给不同的应用程序。若运输层得到TCP 报文,则要根据TCP 的状态进行处理。3.2以太网协议分析3.2.1以太网首部结构以太网协议有两种:IEEE802.2/EE802.3 和以太网的封装格式。现代的操作系统均能同时支持这两种类型的协议格式,因此对我们来说只需要实现其中的一种就可以了。对于单片机来说,由于资源及处理能力有限,不可能支持太多的协议格式。这里介绍以太网的封装格式。发送以太网数据的物理传输帧的封装格式如下:1 、前导:字节由芯片本身产生,用于同步收发两方的时钟,以及指定传输速率,我们不必理会。2 、目的地址:以太网数据帧传
36、输的目的地址,为48 位(6 字节)二进制地址。如果数据全为1 ,则该目的地址是以太网上的所有网卡。3 、源地址:以太网数据帧传输的源地址48 位,表明该帧的数据的出发点,即发送端的网卡地址,为6 个字节。4 、帧格式:类型字段,表明该帧数据的类型。不同协议的类型字段不同,例如:IP包的数据类型为0800H , ARP 包的数据类型为0806H。 5 、数据段:以太网规定整个数据包的最大长度不能超过1514 字节,因此该段数据不能超过1500 字节。6 、校验及填充位。以太网规定数据包必须大于60 字节,因此除去必需的DA 、SA 和TYPE 14字节外,还必须传输46 字节的数据。当数据段的
37、数据不足46 字节时,可以填允任何数值己补足46 字节。7 、另外以太网的冲突退避算法由硬件自动执行,也无须我们了解。因此,由以上介绍可知,真正需要我们要处理的数据段只有目的地址,源地址,帧类型,以及数据段四个段,最小为60 字节,最大为1 514 字节。对网络芯片进行物理地址的设置后,它可以接收三种地址的数据:发给自已地址的数据;广播地址的数据;多播地址的数据。在发送数据包时,必须将数据按照以太网的帧格式进行封装,前导序列和以太网数据帧后的校验和由芯片自动添加。3.2.2 网络接口层功能及关系图网络接口层的核心是以太网驱动程序,以太网驱动程序可以认为是TCP/IP协议栈与底层物理设备的接口,
38、以太网驱动程序隐藏了复杂的物理细节,TCP/IP协议只要调用以太网驱动程序即可完成以太网数据的接收和发送。以太网驱动程序主要包括接收数据的函数和发送数据函数,以及底层设备的初始化,物理地址设定等函数。网络接口层以及以太网驱动程序函数关系图如下:3.2.3 ARP 协议的分析 ARP协议说明ARP( Address Resofution Protocol)完成IP地址到物理地址之间的动态映射,要求这种映射是高效的。因为TCP/IP协议是为了互联不同种类计算机而发明的,它的体系结构是分层的。ARP 协议提供的逻辑地址到物理地址的映射是为了保证层和层之间的独立性,使得改变物理层的实现不
39、会影响到网络层。在任何时候,当主机或路由器有数据报要发送给另一个主机或路时,它必须有接收站的逻辑地址即IP地址 。但IP 数据报最终是要在以太网的物理网络中传输的,因此IP 数据报必须封装成以太网帧格式,同时也必须知道接收站的物理地址。ARP协议即可完成网络地址到物理地址的映射。实质上是找一个映射方法f ,使得“物理地址=f (网络地址)”。 ARP 数据报分组格式ARP 数据报内容共有28 字节,加上以太网的首部14 字节,总共42 字节,因为最小的以太网数据帧的大小为60 字节,因此ARP 数据报都需要再添加任意的数据以补足60 字节。1、类型字段指发送者本机网络接口类型
40、(1 代表以太网)。2、协议类型字段指发送者所提供请求的高级协议地址类型(0x0800 代表IP 协议)。3、硬件地址长度为6 字节。4、协议地址长度为4 字节。5 、操作字段指出本报文的类型(l 为ARP请求,2 为ARP响应,3 为RARP请求,4 为RARP响应)。 ARP 协议的高速缓存发送站往往有不止一个的护数据报要发送给对方,如果发送站主机A 每次向接收站主机B 发送分组之前都要使用ARP协议,那么通信的效率将大大降低。使用高速缓存表就可以解决这个问题,在使用过ARP 协议的主机上保留一个高速缓存,存放最近获得的企地址到物理地址的绑定,所以不必重复使用ARP 协议。当
41、一台主机收到一个应答时,就在它的高速缓存中保存发送方的IP 地址及对应的物理地址,便于以后直询。在发送分组时,主机在发出一个ARP请求之前总是先到缓存中寻找所需的绑定。如果主机在它的ARP 缓存中找到了所要的绑定,它就不需要重新使用ARP 协议。ARP高速缓存可以保证以太网通信的高效进行,由于测控系统中的嵌入式设备通常只和上位机进行通信,所以我们只需要设计一个简单的ARP缓存即可满足需要。3.2.4 IP 协议的分析 IP 协议说明IP协议是TCP /IP协议族中最为核心地协议,所有TCP 、UDP 、ICMP 数据都是以IP 数据报地格式传输。IP协议提供了一种不可靠的、无连接
42、的服务,即IP 不提供差错检验和跟踪,只是尽最大可能发送数据。不可靠(Unreliable )的意思是不能保证IP 数据报能完全正确地到达目的地。IP 仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP协议有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP 消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP ) . 无连接的意思是IP协议不维护任何关于后续数据报的状态信息。因为每个数据报的处理都是相互独立的,可以不按发送顺序接收。如果一信源向相同的目的地发送两个连续的数据报(先是A ,然后是B ) ,每个数据报都是独立地进行路径选择,可能选择不同的路线,
43、因此B 可能在A 到达之前先到达。 IP数据报格式1、版本(VER ):协议版本为4 。2、首部长度(HLEN ) :首部长度指首部占32bit字的数目。3、总长度:总长度以字节为单位,表示整个IP 数据报长度,包括首部长度在内。根据总长度和首部长度可得到上层协议来的数据长度,即数据长度总长度一首部长度。该字段是16 位的,因此IP 数据报的总长度为65535 字节,其中首部长度占2 0个 字节。4 、标识是数据包的ID 号,用于识别不同的护数据包。5 、生存时间(TTL ) :该字段设置了数据报可以经过的最多路由器数。一般每经过路由器时减一,因此通过TTL 可以算出数据包到达目
44、的地所经过的路由器个数。6 、协议:因为许多高层协议(如TCP 、UDP 、IC 加企、IG 入IP 等)都需要使用IP 数据报,因此该字段表示创建该数据包的高级协议类型。IP协议对从不同高层协议来的数据进行复用和分用。如0x0l 表示ICMP协议,0x06 表示TCP 协议,0x11 表示UDP 协议等。3.2.5 ICMP协议的分析 ICMP协议说明在Internet中,IP 协议被用作主机到主机的数据报服务。网络连接设备称为网关。这些网关同过网关到网关协议(GCP )相互交换用于控制的信息。通常,网关或目的主机将和源主机通信,例如,为报告在数据报过程中的错误。为了这个目的才
45、使用了ICMP ,它使用IP协议,好象它是一个高层协议,而实际。它是IP协议的一部分,必须由其它IP模块实现。ICMP消息在以下几种情况下发送:当数据报不能到达目的地时,当网关的己经失去缓存功能,当网关能够引导主机在更短路由上发送。IP 协议并非设计为设计为绝对可靠,这个协议的目的是为了当网络出现问题的时候返回控制信息,而不是使护协议变得绝对可靠,并不保证数据报或控制信息能够返回。一些数据报仍将在没有任何报告的情况下丢失。上层协议必须使用自己的差错控制程序来判断通信是否正确。ICMP信息通常报告在处理数据报过程中的错误。若要避免信息无限制地返回,对于ICMP 消息不会单独成包发送,而且ICMP
46、信息只在处理数据报偏移量0时发送。 ICMP 数据报格式ICMP数据报格式,在此仅给出最常见的回应请求与应答报文格式,用户命令ping 便是利用此报文来测试目标机的可到达性。报文格式如下图所示:1、 类型:8代表回送消息,0代表回送响应2、 代码03、校验码:16 位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零。这些零在以后会被校验码取代。4、标识符:如果代码=0,帮助匹配回送和回送响应的代码可以为0 。5 、序列码:如果代码=0 ,帮助匹配回送和回送响应的序列码可以为0 。说明:回送消息中接收到的消息应该在回送响应消息中返回。标识符和序列码由回送
47、发送者使用帮助匹配回送请求的响应。代码:从主机或网关接收0。73.2.6 UDP 协议的分析UDP 协议是定义用来在互连网络环境中提供包交换的计算机通信的协议。此协议默认认为网路协议(IP )是其下层协议。此协议提供了向另一用户程序发送信息的最简便的协议机制。此协议是面向操作的,未提供提交和复制保护。如果应用程序要求可靠的数据传送应该使用传输控制协议(TCP )。UDP数据报格式如下:1、源端口是可选域,当其有意义时,它指的是发送进程的端口,这也就假定了在没有其它信息的情况下,返回信息应该向什么地方发送如果不使用它,则在此域中填0 。2、目的端口在有特定的目的网络地址时有意义。3、长度指的是此
48、用户数据报长度的16进制表示。 4 、校验码有16 位,是对伪报头,UDP报头和数据取反之和再取反得到的12此协议的最主要的用途是网际名称服务器(DNS)和小文件传输协议。3.2.7 TCP 协议分析 TCP 协议说明TCP 协议主要为了在主机间实现高可靠性的交换传输协议。TCP 是面向连接的端到端的可靠协议。它支持多种网络应用程序。TCP 对下层服务没有多少要求,它假定下层只能提供不可靠的数据报服务,它可以在多种硬件构成的网络上运行。TCP 的上面就是应用程序,下面是IP协议,上层接口包括一系列类似于操作系统中断的调用。对于上层应用程序来说,TCP 应该能够异步传送数据。下层接
49、口我们假定为IP 协议接口。为了在并不可靠的网络上实现面向连接的可靠的传送数据,IP协议必须解决可靠性,流量控制的问题,必须能够为上层应用程序提供多个接口,同时为多个应用程序提供数据,同时TCP 必须解决连接问题,这样TCP能称得上是面向连接的,最后,TCP 也必须能够解决通信安全性的问题。进程为了传送数据会调用TCP ,将数据和相应的参数传送给TCP ,于是TCP 会将数据传送到目的TCP 那里当然这是通过将TCP包打包在IP包内在网络上传送达到的。接收方TCP 在接收到数据后会通信上层应用程序,TCP 会保证接收数据顺序的正确性。虽然下层协议可能不会保证顺序是正确的。这里需要说明的是网关在
50、接收到这个包后,会将包解开,看看是不是己经到目的地了,如果没有到,应该走什么路由达到目的地,在决定后,网关会根据下一个网络内的协议情况再次将TCP 包打包传送,如果需要,还要把这个包再次分成几段再传送。这个落地检查的过程是一个耗时的过程。从上面,我们可以看出TCP 传送的基本过程,当然具体过程可能要复杂得多。在实现TCP 的主机上,TCP 可以被看成是一个模块,和文件系统区别不大,TCP 也可以调用一些操作系统的功能,TCP 不直接和网络打交道,控制网络的任务由专门的设备驱动模块完成。TCP 只是调用IP接口,IP向TCP提供所有TCP 需要的服务。上面已经说过了,TCP 连接是可靠的,而且保
51、证了传送数据包的顺序,保证顺序是用一个序号来保证的。响应包内也包括一个序列号,表示接收方准备好这个序号的包。在TCP 传送一个数据包时,它同时把这个数据包放入重发队列中,同时启动记数器,如果受到了这个包的确认信号,将这个包从队列中删除,如果计时超时,则从新发送此包。从TCP返回的确认信息并不保证最终接收者接收到数据,这个责任由接收方负责。每个用于传送TCP 的通道都有一个端口标记,因为这个标记是由每个TCP终端确定的,因此TCP 可能不唯一,为了保证这个数值的唯一,要使用网络地址和端口号的组合达到唯一标识的目的,我们称这个为了套接字(Socket ) ,一个连接由连接两端的套接字标识,本地的套
52、接字可能和不同的外部套接字通信,这种通信是全双工的。通过向本地端口发送命令与外部套接字参数建立连接,TCP 返回一个标记这个连接的名称,以后如果用户需要使用这个名称标记这个连接。为了保存这个连接的信息,我们假设有一个称为传输控制块的东西来保存。OPEN 命令还指定这个连接的建立是主动请求还是被动等待请求。下面我们要涉及具体的功能了,TCP 段以Internet 数据报的形式传送。IP 包头传送不同的信息域,包括源地址和目的地址TCP报头跟在Internet报头后面,提供了一些专用于TCP协议的信息。 TCP数据报格式1、每个TCP 段都包含源端和日的端的端口号,用于寻找发端可
53、收端的应用进程这两个值加上IP 首部中的源端地址和目的端护地址,唯一确定一个TCP 连接。2、序号用来标识从发端向TCP 收端及送的数据字节流,它表示在这个报文段中的第一个数据字节,如果将字节流看作两个应用程序间的单向流动,则TCP 用序号对每个字节进行计数。3、既然每个传输的字节都被计数,确认序号包含发送确认的一端所期望收到的下一个序号。因此,确认序号应当是上次己成功受到数据字节序号加1 。4、首部长度给出首部32bit 字的数目,需要这个值是因为任选字段的长度是可变的。这个字段占4bit ,因此TCP 最多有60 字节的首部。然而没有任选字段,正常的长度是20 字节。5、在TCP 首部中有
54、6 个标志位。它们中的多个可同时被设置为1 ,具体含义如下:UGR :紧急指针有效ACK :确认序号有效PSH :接受方应尽快将这个报文段交给应用层RST :重建连接SYN :同步序号用来发一个连接FIN :发端完成发送任务6、TCP 的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接受的字节。7、校验和覆盖了整个TCP 报文段:TCP 首部、伪首部和TCP 数据。这是一个强制性的字段,一定是由发端计算和存储并由收端进行验证。8、只有当URG 标志置1 时紧急指针有效。紧急指针时一个正的偏移量,和序号字段中的值相加表示紧急数据
55、最后一个字节的序号。TCP 的紧急方式是发送端向另一发送端发送紧急数据的一种方式口9、最常见的可选字段是最长报文大小,又称为MSS。每个连接方通常都在通信的第一个报文段中指明这个选项。它指明本端所能接收的最大长度的报文端。10、TCP 报文段中的数据部分是可选的。如果一方没有数据要发送,也就没有任何数据.3.3本章小结本章首先对TCP/IP 协议进行了原理性说明,重点介绍了TCP/IP 协议的分层、封装、分用原理,这是软件实现TCP/IP协议的大方向,因为封装过程对应着以太网数据的发送流程,分用过程对应着以太网数据的接收流程。另外,对以太网数据的物理传输帧的封装、网络接口层功能以及ARP 协议
56、、IP 协议、ICMP协议、UDP 协议、TCP 协议的功能与封装了简明、扼要的阐述。4 TCP/IP协议的实现4.1单片机下TCP/IP协议栈中协议的选择标准 TCP/IP协议是一个较大的协议簇,因为没有足够的代码空间来支持这些协议,在单片机中实现TCP/IP协议时要对TCP/IP协议种类进行选择。1. 链路层协议的选择链路层协议里包含ARP(地址解析)协议和RARP(逆地址解析)协议。链路层主要作用是为其上层协议发送和接收数据包,根据物理层的不同,可以有多种协议选择。在本系统中采用的是以太网,遵循IEEE802.3所规定的CSMA/CD(载波监听多路访问及冲突监测)协议。由于以太网上数据的传输是采用网络的MAC地址来进行识别的,这就要求系统有实现IP地址到MAC地址的转换的功能,即ARP地址解析)协议.ARP协议可以细分为ARP请求协议和ARP响应协议两种,系统要同其它计算机通信,就必须要实现ARP响应协议。ARP请求协议在本地建立了一个IP地址到MAC地址的映射,保证了对外通信的有的放矢.如果嵌入式系统的资源有限,可使用以太网广播帧发送数据分组,这样就可以不需维护IP地址到MAC地址的映射对33。这种通信方式虽然对网络造成一定的压力,但可以大大节约嵌入式系统的宝贵资源.RARP(逆地址解析)协议主要用于解
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度美容院员工社会保险缴纳合同样本4篇
- 课题申报参考:面向2035年高等教育布局结构研究
- 民政局2025年离婚协议书起草与备案流程指导4篇
- 2025年度门头房屋租赁合同含租赁用途及经营方向限制4篇
- 河南省周口中英文学校高三上学期期中考试语文试题(含答案)
- 2025年度个人二手房交易反担保合同规范2篇
- 2025年度个人汽车货运风险分担合同范本
- 2025年度门禁监控设备生产与销售合同8篇
- 2025年度水电工程合同履约监管承包协议4篇
- 2025年度木结构建筑绿色施工与环保验收合同4篇
- 2025年中国文玩电商行业发展现状调查、竞争格局分析及未来前景预测报告
- 2024文旅古街元旦沉浸式体验国风游园会(古巷十二时辰主题)活动方案活动-46正式版
- 英语-2025广西柳州高三二模试卷和答案
- 电工中级工练习题库(含参考答案)
- 学校帮扶工作计划
- 期末综合试卷(试题)2024-2025学年人教版数学五年级上册(含答案)
- UL2034标准中文版-2017一氧化碳报警器UL中文版标准
- 感恩的心培训资料
- 《精密板料矫平机 第3部分:精度》
- (完整版)水利部考试历年真题-水利基础知识试题集
- 浙江省杭州市2024-2025学年高三上学期一模英语试题(含解析无听力原文及音频)
评论
0/150
提交评论