当前位置:文档之家› 嵌入式TCPIP协议的与分析研究

嵌入式TCPIP协议的与分析研究

嵌入式TCP/IP协议的分析与研究摘要:嵌入式TCP/IP协议不同于应用在PC机上的TCP/IP协议,Internet上面的各种通信协议对于计算机存储器、运算速度等的要求比较高,而嵌入式系统中大量存在的是8位和16位MCU,支持TCP/IP等Internet协议将占用大量系统资源,或根本不可能。为了既实现相应的功能又节省系统资源,需要对协议进行有针对性的模块化裁剪,在单片机上嵌入TCP/IP协议簇的一个子集。文章根据各种MCU自身的特性,实现TCP/IP协议的方法和实现嵌入式Internet的方案及TCP协议的机制裁减方法,同时用设计实例证明了嵌入式TCP/IP的可行性。

关键词:嵌入式TCP/IP;嵌入式Internet;TCP协议的机制裁减

1绪论

在Internet日益普及,信息共享程度不断提高的今天,人们的工作和生活方式发生了根本性的变化。单片机或微控制器(MCU>已经在家庭和工业的各个领域得到了应用,通称嵌入式系统。但目前大多数嵌入式系统还处于单独应用的阶段,一般都是孤立于Internet以外。如果嵌入式系统能够连接到Internet上面,则可以方便、低廉地将信息传送到几乎世界上的任何一个地方。于是嵌入式Internet 技术就应运而生。

将嵌入式系统与Internet结合起来的想法其实很早以前就有了,主要的困难在于,Internet上面的各种通信协议对于计算机存储器、运算速度等的要求比较高,而嵌入式系统中大量存在的是8位和16位MCU,支持TCP/IP等Internet协议将占用大量系统资源,或根本不可能。为了既实现相应的功能又节省系统资源,需要对协议进行有针对性的模块化裁剪,在单片机上嵌入TCP/IP协议簇的一个子集。

2TCP/IP协议分析

TCP/IP通常被认为是一个四层协议系统, 分别为:链路层、网络层、传输层、应用层,每一层都有相应的协议集合来实现不同的功能,其层次结构和主要的网络协议如图 3.1所示。

2.1链路层协议分析

链路层的主要作用是为上层协议发送和接收数据包。链路层中重点分析的为ARP协议。以太网上数据报的传输是采用网络的MAC地址来进行识别的,这就要求系统有实现IP地址到MAC地址的转换的功能,即ARP(地址解读>协议。ARP协议可以分成ARP请求协议和ARP响应协议。系统要同其它计算机通信,就必须要实现ARP响应协议。ARP请求协议建立了一个IP地址到MAC地址的映射。如果嵌入式系统的资源有限,可使用以太网广播帧发送数据分组,也可以把数据分组发往固定的路由器,由路由器转发数据分组。

RARP(逆地址解读协议>主要用于无盘工作站中,嵌入式Internet中无须实现此协议。

图2.1 TCP/IP层次结构图

2.2网络层协议分析

网络层处理分组在网络中的活动。其协议包括IP协议<网际协议)、ICMP 协议

IP协议是TCP/IP族的核心协议,它使异构网络之间的通信成为可能。因此,如果嵌入式Internet,需要跨越不同的网络进行通信就必须要实现IP协议。所以IP协议需要完整实现。要特别注意IP包最大可以为65k,可以分段传输,而在嵌入式系统中根本无法容纳如此大的数据包,因此一般不支持分段。单片机一般采用发送小数据包的方式,以避免分段。

ICMP协议主要用来传递差错报文以及其他需要注意的信息。我们通常使用的应用程序Ping就是采用ICMP协议来测试网络的连通情况。对于普通的嵌入式Internet的应用而言,在ICMP协议中能够测试网络的连通情况即可,因此只需实现ICMP中类型号为0、代码为0的Ping应答协议即可。通常嵌入式Internet不考虑ICMP协议。

2.3 传输层协议分析

传输层主要为两台主机上的应用程序提供端到端的通信。传输层有两种不同的传输协议:面向连接的TCP(传输控制协议>和无连接的UDP(用户数据报协议>。

TCP是一种面向连接的协议,它提供高可靠性服务。TCP在传输前必须先通过“三重握手”在主机间建立TCP接入,它所传数据流采用了顺序号和应答措施,可以发现数据的丢失、段的失序和对传输错误的排除,所以TCP协议提供的是数据流的可靠传输。但相对于UDP,它的可靠性是以复杂性为代价的,需要复杂庞大的程序来实现。

UDP提供的是无连接的不可靠的服务,可能出现数据包的丢失、重复和连接失败等错误。但是正因为没有保证可靠性的机制,它可以实现高速发送,充分发挥物理传输设备的速度。UDP适合用在通信介质十分可靠的情况,例如以太网等。

传输层有两个可选择的协议,所以就应该考虑该用那个协议传输数据报。下面用例子来说明:对楼宇散布各处的温度和湿度传感器的每秒一次地集中监控来说,选用UDP或TCP都关系不大;而对独立的、又不太重要的传感器监控,选用UDP也够了。而进入数据库的传感器监控结果,因其可靠性要求,则需用TCP。另外,Web和Email也采用的是TCP。

2.4应用层协议分析

应用层协议是TCP/IP协议族中最大的一个子集,其种类非常繁多。最常用的有Telnet<远程登录协议)、FTP<文件传输协)、SMTP<简单邮件传送协议)、HTTP<超文本传输协议)等。在设计中用到哪个应用程序,主要是根据嵌入式系统的用途来确定。如果系统要求采用Email来发送信息,就需要针对SMTP协议来实现;如果系统要求通过浏览器的方式来访问,那么系统就应该实现嵌入式Web Server的相应协议。

3嵌入式TCP/IP协议概述

传输控制协议/网间协议

由于嵌入式系统没有一个多任务的操作系统,而且又是直接面对硬件,所以嵌入式TCP/IP协议在应用层上要求简单。同时,不同嵌入式系统对嵌入式Internet所采用的应用层协议要求不同,而且应用层的协议还要和链路层实现的协议相对应。因此,系统要根据自己的需要和链路层协议的实现来选择和简化应用层的协议。

传输层主要为两台主机上的应用程序提供端到端的通信。传输层有两种不同的传输协议:面向连接的TCP(传输控制协议>和无连接的UDP(用户数据报协议>。TCP是面向接入即传输前必须先通过“三重握手”在主机间建立TCP接入,它所传数据流采用了顺序号和应答措施,可以发现数据的丢失、段的失序和对传输错误的排除,所以TCP协议提供的是数据流的可靠传输。但相对于UDP,它的可靠性是以复杂性为代价的,需要复杂庞大的程序来实现。UDP提供的是无连接的不可靠的服务,可能出现数据包的丢失,重复和连接失败等错误。但是正因没有接入机制,它可以实现高速发送,充分发挥物理传输设备的速度。UDP适合用在通信介质十分可靠的情况,例如以太网等。

网络层处理分组在网络中的活动。其协议包括IP协议<网际协议)、ARP协议<地址解读协议)、ICMP协议

传递差错报文以及其他需要注意的信息。我们通常使用的应用程序PING就是采用ICMP协议来测试网络的连通情况。对于普通的嵌入式Internet的应用而言,在ICMP协议中能够测试网络的连通情况即可,因此只需实现ICMP中类型号为0、代码为0的PING应答协议即可。通常嵌入式Internet不考虑IGMP。

链路层主要作用是为其上层协议发送和接收数据包,根据物理层的不同,主要协议有以太网、令牌环网、FDDI<光纤分布式数据接口)及RS232串行线路协议等。可由选择的网络接口芯片完成。

4嵌入式Internet技术原理及方案

嵌入式Internet技术,也就是将嵌入式系统与Internet结合起来实现系统网络化,涉及的两个关键问题即传送信息的媒质和采用的协议。

与Internet相联接的途径可以是以太网或者电话线等媒介。而在大多数工作场地都配有以太网,电子装置通过集线器

4.1实现TCP/IP协议的方法

4.1.1高档MCU芯片

采用ARM内核的系列处理器或者386EX等高档MCU,其运算速度快,性能高,在芯片上可以运行实时操作系统(RTOS>,同时也可以嵌入完整的TCP/IP 协议。

4.1.2 32位MCU芯片

32位机也有足够的资源和能力运行TCP/IP协议和一些嵌入式操作系统。所以原则上讲,实现思路和高档机一样。

4.1.3 8/16位MCU芯片

由于8位和16位MCU的处理能力和存储问题,要实现TCP/IP协议是比较困难的。因此要根据其特点,对TCP/IP协议进行简化,保留其最基本的东西。同时,上层协议可不用或者简单实现。即将原来的TCP/IP协议转变成嵌入式TCP/IP协议,我们随后会具体介绍。

4.2 实现嵌入式Internet的方案

4.2.1通过专用的WEB服务器实现

在现有的嵌入式系统中大量使用的是8位或16位MCU,并不要求每个设备都直接连到Internet上,用户可以通过Internet接近设备,然后再用轻量级网络扩

展到多个设备上。如电力线、RS-485、RS-232、I2C等。专用WEB服务器作为子网设备路由器来转换和实现嵌入式系统与外部网的通信。比如EmWare公司专门为嵌入式微控制器设备设计的网络服务器。

4.2.2通过专用的嵌入式网关(emgateway>相联

即嵌入式系统使用轻网络通讯技术与专用嵌入式网关连接,运行TCP/IP协议,并提供TCP/IP到用户的轻型网络的连接和路由功能。

4.2.3把标准网络技术一直扩展到嵌入式设备

由嵌入式系统自身实现WEB服务器功能,每个设备都可与Internet相连。这种方法是目前最佳的解决方案,也是未来电器、设备的发展方向。

第三种方案的TCP/IP协议实现又分硬件固化和软件两种方式。硬件方式是指用网络芯片实现TCP/IP协议,形成独立于各种微控制器的专用芯片,通过其标准的输入输出口,可与绝大多数单片机相连。软件方式是把TCP/IP协议以软件方式嵌入到ROM中。在软件方式具体实现时,又有以下两种不同设计思想:第一种设计是针对高档MCU片上系统,如ARM7或386EX等,可运行嵌入式实时操作系统,实现较完整的TCP/IP协议。采用这种方式最灵活,能按用户需求实现很多复杂的功能,但是采用这种方式对开发人员的要求比较高,开发周期也较长。第二种设计是针对低档的8/16位MCU的嵌入式系统,考虑到其系统速度和内存的限制,不可能实现完整的TCP/IP协议,只能实现精简的TCP/IP协议。5TCP协议的机制裁减

在传统传感器中嵌入式WEB服务器,远程用户就可以对传感器实现远程监控,这就是通常所说的基于Internet的网络传感器,通常数据传输量很小。作为一种嵌入式Internet技术应用,在TCP之上实现有限的WEB服务,只需要一部分TCP服务机制,或者并不对TCP所有机制都有很高的要求。针对这个这个特点,我们可以从前面讨论的四个方面对TCP协议进行裁减:确认与超时重传机制、流量和拥塞控制、TCP连接状态和TCP运行状态机。

5.1确认与超时重传

5.1.1捎带确认机制

通信过程中,通信双方都必须对对方上一次发送来的数据给予确认。这是保证传输可靠性的基本方法。但是,如果接收方对每一个数据报文都返回独立的应答报文,会在很大程度上浪费带宽,造成通信效率的降低。我们可以让发送方发送数据时捎带对上一次接收到的数据确认。这样只需要在发送的TCP头部中设置一个应答标志位和一个确认序列号。这样做不会额外增加网络上的数据报流量,可以有效提高通信质量。

5.1.2应用层参与重传

如果发出的数据包在一定时间

5.2 流量控制和拥塞控制

由于网络传感器传输数据量很小,我们没有必要牺牲大量的存储空间实现滑动窗口机制换取对流量和拥塞的控制。我们可以采用停等协议,它是滑动取窗口协议的一个极限情况,只使用一个窗口。发送方每发送一个分组,都等待确认。收到确认后再发送下一个分组。这样做即能够保证传输的绝对可靠,在数据量不大的情况下,传输的实时性也不会有明显的折扣。更重要的是,化解了流量和拥塞问题。当然,如果只是用一个窗口,还要求对方也使用简单的确认机制。这可以通过设置TCP头部Windows字段来通知对方自己的接收缓冲区大小,避免对方连续发送大量数据造成接收缓冲区溢出,以至丢包。

5.3 同时支持少数TCP连接

每个TCP连接由套接字唯一标识。TCP初始化后处于端口侦听状态,当接到客户机建立TCP连接的请求时,除了发送“请求+应答”报文以外,还要记录该TCP的状态,包括源端IP地址、源端口号、目的IP地址、目的端口号、序列号等大量连接信息,以便对接收和发送的TCP段进行跟踪。经过简化TCP机制,去除滑动窗口协议,我们尽量使用较少的TCP状态数据,这样可以节省存储开销。

另外,远程检测需要多用户同时访问检测页面,所以,应该同时支持多个TCP连接。但是,如果同时处理多个连接的请求和应答,除了记录各个连接的状态信息之外,还要在不同状态之间切换,无疑会增加RAM的使用。所以,可以仅支持十个TCP连接同时存在,即最多有10个用户同时访问服务器。对于8位单片机来讲,这是合适的选择。

5.4 TCP状态机

TCP的面向连接和可靠性传输等特性决定了每一个标准的TCP协议连接都要经过三次握手建立和拆除连接,这个过程可以用状态图机描述。为了状态机的正常工作,即各种状态之间的正确切换,必须存储每种状态的相关信息。因此,状态机越复杂,TCP协议实现的规模越大,维护状态机的开销就越多,对处理器存储能力的要求也越高。

一个标准的状态机可以分为服务器和客户机两部分,服务器状态机又分为被动建立连接和主动拆除连接两部分,而拆除和客户机之间的连接过程很复杂。但是,服务器发送完数据,向客户机发送关闭连接请求后,客户机一般没有多余的数据要发送,所以当接收到服务器的关闭连接请求后客户机会直接发送

FIN+ACK,服务器接到应答后,回应ACK,并直接进入“计时等待”状态,等待关闭。这样服务器关闭TCP连接的过程就大大简化了。通过以上分析可以,作为一种嵌入式Internet技术,我们可以根据特定的应用不失一般性的裁减掉复杂和冗余的机制。这样,除去标准状态机中的客户端部分,简化服务器关闭连接过程<不失一般性),就得到图5.1的服务器状态机模型。图中CLOSED、LISTEN、SYN_RCVD、ESTABLISHED、FIN_WAIT、TIME_WAIT分别代表“已关闭”、“监听”、“接收到SYN”、“连接已建立”、“FIN等待1”、“计时等待”等状态。.

图5.1 简化的TCP状态机

6 设计实例

应用普通8/16位MCU形成嵌入式网关是最具发展潜力的一大热点。而应用TCP/IP协议的以太网已经成为最流行的分组交换局域网技术,整个网络只有一种底层通讯协议,同时也具有开放的TCP/IP网络技术。它可满足控制系统各个层次的要求。工业控制领域中常用的现场总线和串行通信可以通过嵌入式网关与以太网相连,从而方便的实现控制网络与Internet连接,目前基于以太网的工业控制网络已经成为未来的发展趋势。所以本设计采用在16位MCU中嵌入“裁

剪”后的TCP/IP协议栈及以太网控制芯片驱动程序,并通过以太网接入Internet 网络。

这种方案首先要求在链路层上,由于采用以太网的接人方式,系统必须要实现IEEE802.3标准,这可采用通用的以太网接口芯片RTL8019AS来完成。其次,为了保证系统在以太网的通信,系统还需实现ARP应答协议。在网络层上要实现IP协议,为了能够测试系统与网络的连接,系统需要实现ICMP协议中的ping应答协议。在传输层上我们选择UDP协议。应用层上单片机系统传递来自Ethernet和数据终端的数据,应用层只对大的数据报作打包拆报处理。

RTL8019AS是REALTEK公司生产的一种全双工以太网控制器,符合Ethernet II、IEEE802.3<10Base5、10Base2、10Base T)标准;与NE2000兼容;支持8位、16位数据总线;内置16KB的SRAM,用于收发缓冲,可降低对主处理器的速度要求。外部RAM使用PSD4135(512KB>,从而为数据处理提供了很大的缓存,同时它也有地址锁存和地址译码功能。使用E2PROM—93C46,可以将网卡物理地址和其他参数保存在里面。

这里的RTL8019AS就是处理以太网协议

80C196协议栈,由协议栈对数据包进行解读,得到原始请求信息。请求信息再经过80C196的处理,产生回复信息。回复信息到局域网的过程与上面正好相反。RJ45为此系统与局域网的接口。

数据段的个数可从46Byte-1500Byte,不足46Byte时用零补足;超过

1500Byte时,需要拆成多个帧传送。前导位、帧起始位和帧校验序列仅供控制器本身用,主处理器收到的数据帧的组成依次包括:接收状态、下一帧的页地址指针、目的地址、源地址、数据长度、数据段。IEEE802.3标准中的数据长度值小于或等于0x0600时,表示数据段的长度;反之,表示数据帧的类型。例如值为0x0800,表示数据段为IP包;值为0x0806,表示数据段为ARP包。

在选定硬件,完成各芯片间地址线、数据线及状态线连接后,开始软件设计。软件设计主要包括:芯片初始化程序、以太网控制器驱动程序、TCP/IP协议栈程序、系统网络配置程序。芯片初始化程序用于设置MCU工作模式及外围芯片选择;以太网控制器驱动程序用于设置以太网控制芯片的工作状态及工作方式,分配收发数据的缓冲区;系统网络配置程序用于给监测系统分配IP地址及域名。

当网络有数据时,RTL8019AS在接收和处理完以太网数据帧后传送给单片机,80C196对数据包进行分析,如果是ARP<物理地址解读)数据包,则程序转入ARP处理程序。如果是IP数据包且IP地址正确,则继续分析若是ICMP包,则调用ICMP处理程序。若是UDP数据包,则80C196对数据解包后,将数据部

分转存在PSD4135中或者通过串口输出。反之,当有数据要发送时,80C196将调用UDP打包程序来封装数据并送入RTL8019的缓存中去。具体流程为:数据放到UDP的数据段->生成UDP校验->建立IP头->生成Ethernet头->放到网卡发送缓冲区->发送

7嵌入式TCP/IP与UNIX中TCP/IP的区别

TCP/IP最先是在UNIX系统里实现的,后来的LINUX、DOS、WINDOWS 也实现了TCP/IP,随后TCP/IP协议也被移植到其它嵌入式的处理器上。由于嵌入式系统与PC机的差别很大,在嵌入式系统中实现TCP/IP协议与UNIX系统的实现有很大的不同,主要区别有以下几点:

7.1 操作系统

不论是WINDOWS、UNIX、LINUX,它们都有一个多任务操作系统,这使得代码编写简单化。嵌入式系统的TCP/IP是直接面对硬件,没有一个多任务操作系统平台,MCU中的程序结构一般是顺序执行和硬件中断相结合的方式,与高级操作系统中的多线程并发执行的方式截然不同。因此,对于程序执行结构,单片机要考虑更多。

7.2 内存分配

UNIX操作系统的存储管理策略能有效进行内存管理与分配,TCP/IP在实现时可以不考虑内存大小的问题,比如缓冲的处理上,mbuf、TCB等数据结构是一个存储链,这个链可以动态地增加和减小,根据需要随时分配,随时撤消。而在嵌入式统中存储空间一般只有几十KB。所以在设计时不但要考虑程序代码本身大小,还要仔细考虑缓冲区的设置。一个最大的以太网数据包有1500多个字节,而嵌入式系统只能提供几十K字节的空间,并要被各个协议所用,所以只能开辟1536个字节的缓冲区来存放接收到的数据,收到一包就处理一包,其存储地址是固定的,而不是动态分配的。

7.3 参数传递

在UNIX实现的TCP/IP源代码中,一般有很多的参数传递,而在单片机里允许传递的参数是有限的,同时参数传递的过程要浪费程序代码空间,也降低单片机的执行速度。所以在单片机的实现里,一般不要做太多的参数传递,而多使用公共的全局变量来实现调用的过程。

7.4 硬件接口

在UNIX里,对网卡驱动无一例外都是采用中断方式。而在单片机的应用中,大部分的方案都是查询式的。因为在单片机里处理一次中断、收取一个数据包一般要几毫秒的时间,这将封锁其它中断的产生。另外电脑往往采用即插即用方式来驱动网卡,从而有良好的兼容性。在单片机中,为了节省代码和I/O接口资源,网络接口控制芯片一般使用跳线方式,数据总线也采用8位DMA方式。

8结论

随着科技不断发展和人们对嵌入式系统之间进行互联的要求,嵌入式TCP/IP 协议也必将不断的应用于我们嵌入式系统中,来实现嵌入式系统与Internet之间

方便、低廉地进行信息的传递。但是,目前在嵌入式系统中实现TCP/IP协议

时,没有考虑安全性和地址自动配置等问题,而这些问题将是我们以后要考虑的重点问题。相信随着嵌入式Internet技术的发展,在不久的将来,这些问题会得

到解决。

(指导教师:同晓荣> 参考文献:

[1] 王峰,张宏伟等. 嵌入式Internet技术及其实现方案[J]. 微计算机信

息,2003,12(19>:23~26

[2] 王勇,陈抗生. 嵌入式Internet中的协议选择[J]. 电信科学,2002,4(2>:36~38

[3] 李明.康静秋. 嵌入式TCP/IP协议栈的研究与开发[J]. 计算机工程与应

用,2002,16(05>:56~60

[4] Kenneth D .Reed,3com公司译. TCP/IP基础[M]. 北京:电子工业出版社,2004

[5] Kenneth D .Reed,孙坦,张学锋等译. 协议分析[M]. 北京:电子工业出版社,2003

[6] 陶波,丁汉等. 基于嵌入式Internet的工业控制[J]. 测控技术,2002,20(8>:42~46

[7] 万静华,丁亚军. 以太网控制器的嵌入式设备网络互连[J]. 单片机与嵌入式系统应

用,2001,12(5>:12~16

[8] 周明天,汪文勇. TCP/IP网络原理与技术[M]. 北京:清华大学出版社,1993

[9] J.Benthem著,陈向群译. TCP/IP Lean:嵌入式系统WEB服务器[M]. 北京:机械工业出版

社,2003

[10] 李金梁,景博. 一种嵌入式WEB服务器的设计及在SAW压力传感器中的应用[J]. 第五

届全国嵌入式系统大会论文集,2004,9(12>:78~90

The Analysis and Research of Embedded TCP/IP Protocol

Abstract:The embedded TCP / IP protocol used in PC-different from the TCP / IP protocol, above all Internet communication protocols for computer memory, such as the requirements of computing speed is relatively high, and there are a lot of embedded system is 8 and 16 - bit MCU, and supports TCP / IP and other Internet protocol will take up much of system resources, or impossible. In order to achieve both savings and the corresponding function of system resources, the need for agreement targeted modular tailoring, in the SCM embedded TCP / IP protocol subset of a cluster. According to various articles MCU's characteristics and realize the TCP / IP protocol and implementation of the programme and embedded Internet protocol TCP reduction mechanism, at the same time using design proof of embedded TCP / IP feasibility.

Key words:The embedded TCP/IP。The embedded Internet。TCP protocol mechanism reduction

l

网络通信协议分析与应用试题集6828(1)

解答: 1. OSI标准中,采用的是三级抽象:体系结构,服务定义,协议说明。 2. TCP/IP协议族中,使用了三个不同层次的地址,主机网络层或网络接口层使用了:物理地址(MAC地址)。 3. TCP/IP协议族中,使用了三个不同层次的地址,传输层使用了:端口地址。 4. TCP/IP协议族中,使用了三个不同层次的地址,网络层使用了:逻辑地址(IP地址)。 5. 根据所提供的服务方式的不同,端口又可分为TCP协议端口和UDP协议端口两种。 6. 从端口的性质来分,通常可以分为以下三类,注册端口(Registered Ports)松散地绑 定于一些服务。 7. 从端口的性质来分,通常可以分为三类,FTP和HTTP服务需要使用:公认端口(Well Kno wn Ports)类型。 8. 从端口的性质来分,通常可以分为三类,动态或私有端口(Dynamic and/or Private Po rts)容易被黑客和木马程序利用。 9. 接口是同一结点内相邻层之间交换信息的连接点。 10. CCITT与ISO的工作领域是不同的:CCITT 主要是考虑通信标准的制定。 11. CCITT与ISO的工作领域是不同的:ISO主要是考虑信息处理与网络体系结构。 12. OSI参考模型和TCP/IP参考模型只是描述了一些概念,用来协调进程间通信标准的制定。 13. 通信服务可以分为两大类:面向连接服务(connect-oriented service)和无连接服 务(connectless service)。 14. 网络数据传输的可靠性一般通过确认和重传机制保证。 15. 通信协议包括:面向连接与确认服务;面向连接与不确认服务;无连接与确认服务;无连接与不确认服务四种类型。 16. IP协议是无连接的、提供“尽力而为”服务的网络层协议。 17. 17. INTERNET使用了不同类型的地址概念,应用层使用了域名(DNS)、电子邮件址、URL等地址。 18. 网络协议是由程序和进程来完成的。 19. B类IP地址中的一个私有网络地址,如果需要50个子网,网络掩码应该为(点十进制表示):255.255.252.0 。

嵌入式TCP_IP协议栈说明书

嵌入式TCP_IP协议栈说明书 杨文斌 2008-9-1

一、总则 本文件是嵌入式TCP/IP协议栈的说明文件,嵌入式TCP/IP应用开发人员可通过阅读本文件,掌握在嵌入式TCP/IP协议栈的基础上开发服务器和客户端应用程序,如FTP服务器,WEB服务器,串口服务器等等。 二、参考文件 1)TCP_IP详解卷1,2,3 2)RFC 959 (rfc959) - File Transfer Protocol.htm 3)rfc1945- Hypertext Transfer Protocol -- HTTP/1.0 三、技术说明 1)用户应用协议栈则需要编写以太网的数据报收发驱动,就可以使用协议栈提供的标准SOCKET API,完成服务器和客户端应用程序的开发。 2)协议栈运行于非操作系统的环境下,因此它的运行速度与一般采用多任务操作系统的TCP/IP协 议,速度相对说来要快。 3)协议栈完成的功能包括ARP,IP,ICMP(ping),TCP,UDP,暂不支持IGMP,RARP。 4)协议栈采用C代码编写,可方便的移植于各种单片机平台。 5)协议栈在ARM7+RTL8019硬件环境下测试,并建立了FTP服务器和WEB服务器,性能稳定。 6)协议栈建立的FTP服务器和WEB服务器与Internet Explorer浏览器和ftp.exe相互兼容。 7)协议栈每一个SOCKET上建了数据缓冲队列(数据结构),用于接收SOCKET的并发数据,实现 多SOCKET的并发数据报处理,可同时运行FTP服务器和WEB服务器。 8)协议栈实现了ACK的延时答应(200ms),支持TCP多包发送和接收,但未支持TCP数据报的 失序处理,因此适合局域网内使用。 四、SOCKET API函数 1)函数SOCKET * socket(u16 af,u16 type,u16 protocol) 本函数功能是从SOCKET pool中分配一个SOCKET插口,供应用程序使用,其参数说明如下: 1.参数af,type—无意义,保留为扩充功能使用。 2.参数protocol—为分配SOCKET的类型,包括TCP_PROTOCOL和UDP_PROTOCOL两个 类型。 3.返回值:函数执行成功,返回SOCKET*指针指向一个SOCKET,失败返回NULL 2)函数u16 bind(SOCKET * sock,struct sockaddr * address,u8 len) 本函数功能是将IP地址和端口绑定到一个SOCKET 指针* sock指向的SOCKET。 1.SOCKET * sock—指向被绑定的SOCKET。 2.struct sockaddr * address—指向IP地址和端口。 3.len—无意义,保留为扩充功能使用。 4.返回值:SUCC。 3)函数u16 listen(SOCKET * sock, u16 QTY) 本函数功能是启动被绑定了地址和端口的SOCKET * sock,触发其为监听状态。本函数由服务 器端应用程序使用。 1.SOCKET * sock—指向被bind的SOCKET。 2.返回值:SUCC。 4)函数u16 connect(SOCKET * sock, struct sockaddr * sevaddr,u8 len) 本函数功能是用于建立一个连接到服务器,服务器的地址和端口由参数sevaddr指定。该函数由 客户端使用。 1.SOCKET * sock—指向被连接的本地SOCKET。 2.struct sockaddr * sevaddr,-- 服务器的地址和端口.

CycloneTCP协议栈移植与使用简介

Arda Technology Arda Tech P.F.FU 2014-12-19 Ver 0.1 #elif defined(USE_XXXXXX) #include "os_port_xxxxxx.h"

NicType type;//控制器类型。0:以太网接口,1:PPP接口,2:6LowPan接口 NicInit init;//控制器初始化函数指针 NicTick tick;//控制器周期性事务处理函数指针 NicEnableIrq enableIrq;//打开控制器中断函数指针 NicDisableIrq disableIrq;//关闭控制器中断函数指针 NicEventHandler eventHandler;//控制器中断响应函数指针,这个是下半段的中断处理部分。 NicSetMacFilter setMacFilter;//配置多播MAC地址过滤函数指针 NicSendPacket sendPacket;//发送包函数指针 NicWritePhyReg writePhyReg;//写PHY寄存器函数指针 NicReadPhyReg readPhyReg;//读PHY寄存器函数指针 bool_t autoPadding;//是否支持自动填充 bool_t autoCrcGen;//是否支持自动生成CRC校验码 bool_t autoCrcCheck;//是否支持自动检查CRC错误 NicSendControlFrame sendControlFrame;//发送控制帧函数指针 NicReceiveControlFrame receiveControlFrame;//接收控制帧函数指针 NicPurgeTxBuffer purgeTxBuffer;//清除发送缓冲函数指针 NicPurgeRxBuffer purgeRxBuffer;//清除接受缓存函数指针 xxxxEthInitGpio(...)//用于在init中初始化GPIO。 xxxxEthInitDmaDesc(...)//用于在init中初始化DMA任务描述符列表。 XXXX_Handler(...)//用于MAC中断的上半段处理。 xxxxEthReceivePacket(...)//用于在eventHandler中收包,把数据从dma的缓冲复制到外部缓冲。xxxxEthCalcCrc(...)//计算CRC值,这个函数基本上是固定的。 xxxxEthDumpPhyReg(...)//用于调试的打印PHY寄存器列表值。

基于ARM的嵌入式TCPip协议的实现

基于ARM的嵌入式TCP/IP协议的实现 该系统可以将数据按网络协议处理,实现数据的以太网传输。其是一套基于嵌入式实时操作系统的嵌入式网络软件开发平台,即在μC/OS—II的平台上,实现ARM微处理器的TCP/IP协议,在此平台之上,可以方便地进行嵌入式应用系统的开发。 0 引言 以太网具有通用性强、技术成熟、带宽迅速增加等特性,工业控制领域出现嵌入式技术,尤其是ARM技术的发展和DSP在工业控制领域的广泛应用,利用嵌入式技术实现以太网通信已经不难见到。嵌入式实时操作系统接入网络后将使远程监测、远程控制、远程诊断和远程维护变得越来越容易。从根本上讲,嵌入式设备接入网络,当前基本采用基于TCP/IP的通信协议。该方案以LPC2210为核心元件研究基于ARM的嵌入式TCP/IP协议的实现的硬件电路,同时在μC/OS一Ⅱ平台上编写应用软件程序。下面对系统做详实的阐述,并重点介绍嵌入式实时操作系统μC/OS—II应用于TCP/IP时应进行合理的裁减。 1 系统硬件设计 基于ARM的嵌入式TCP/IP网络通信系统主要包括ARM芯片和以太网控制器等芯片组成的以太网接口、驱动软件和嵌入式TCP/IP 协议栈。硬件原理图如图1所示。

该方案设计相对简单,硬件电路中采用的LPC2210是Philips 公司推出的微处理器,带有16 KBRAM,76个通用I/O口,12个独立外部中断引脚,集成有8通道的10位A/D,能够基于芯片设计复杂的系统。虽然LPC2210具有较快的访问速度,但片内没有集成FLASH,所以这里扩展1片16 Mb FLASH SST39VFl60来保存用户程序。其架构满足μC/OS—II正常运行的基本要求。 RTL8019AS是台湾Realtek半导体公司生产的以太网控制器,其性能包括:支持EthernetII和IEEE802.3标准;支持8/16位数据总线;内置16 KWord的SRAM;全双工,收发同时达到10 Mb/s;支持BNC,AUI,UTP介质。RTLS019AS可提供100脚的TQFP封装,减少了PCB面积,更适合于嵌入式系统。HR901170A是汉仁电子有限公司生产的RJ45接口连接器(带网络变压器/滤波器),该连接器满足IEEES02.3和IEEE902.3ab标准,能够较好地抑制电磁干扰。通过HR901170A系统就可以连接到以太网上。

TCPIP协议栈实践报告

《专业综合实践》 训练项目报告训练项目名称:TCP/IP协议栈

1.IP协议 IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。这是后话,暂且不提 1.1.IP协议头如图所示

挨个解释它是教科书的活计,我感兴趣的只是那八位的TTL字段,还记得这个字段是做什么的么?这个字段规定该数据包在穿过多少个路由之后才会被抛弃(这里就体现出来IP协议包的不可靠性,它不保证数据被送达),某个ip数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64,Tracerouter这个工具就是用这个原理工作的,tranceroute 的-m选项要求最大值是255,也就是因为这个TTL在IP协议里面只有8bit。 现在的ip版本号是4,所以也称作IPv4。现在还有IPv6,而且运用也越来越广泛了。 1.2.IP路由选择 当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个合适的路径来"送货"的呢? 最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以了。至于是怎么直接传递的,这就要靠ARP协议了,后面会讲到。 稍微一般一点的情况是,主机通过若干个路由器(router)和目的主机连接。那么路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由。路由器或者主机将会用如下的方式来处理某一个IP数据包 如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃。 搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标

mtcp协议栈

mTCP:A Highly Scalable User-level TCP Stack for Multicore Systems EunYoung Jeong,Shinae Woo,Muhammad Jamshed,Haewon Jeong Sunghwan Ihm*,Dongsu Han,and KyoungSoo Park KAIST*Princeton University Abstract Scaling the performance of short TCP connections on multicore systems is fundamentally challenging.Although many proposals have attempted to address various short-comings,inef?ciency of the kernel implementation still persists.For example,even state-of-the-art designs spend 70%to80%of CPU cycles in handling TCP connections in the kernel,leaving only small room for innovation in the user-level program. This work presents mTCP,a high-performance user-level TCP stack for multicore systems.mTCP addresses the inef?ciencies from the ground up—from packet I/O and TCP connection management to the application inter-face.In addition to adopting well-known techniques,our design(1)translates multiple expensive system calls into a single shared memory reference,(2)allows ef?cient?ow-level event aggregation,and(3)performs batched packet I/O for high I/O ef?ciency.Our evaluations on an8-core machine showed that mTCP improves the performance of small message transactions by a factor of25compared to the latest Linux TCP stack and a factor of3compared to the best-performing research system known so far.It also improves the performance of various popular applications by33%to320%compared to those on the Linux stack. 1Introduction Short TCP connections are becoming widespread.While large content transfers(e.g.,high-resolution videos)con-sume the most bandwidth,short“transactions”1dominate the number of TCP?ows.In a large cellular network,for example,over90%of TCP?ows are smaller than32KB and more than half are less than4KB[45]. Scaling the processing speed of these short connec-tions is important not only for popular user-facing on-line services[1,2,18]that process small messages.It is 1We refer to a request-response pair as a transaction.These transac-tions are typically small in size.also critical for backend systems(e.g.,memcached clus-ters[36])and middleboxes(e.g.,SSL proxies[32]and redundancy elimination[31])that must process TCP con-nections at high speed.Despite recent advances in soft-ware packet processing[4,7,21,27,39],supporting high TCP transaction rates remains very challenging.For exam-ple,Linux TCP transaction rates peak at about0.3million transactions per second(shown in Section5),whereas packet I/O can scale up to tens of millions packets per second[4,27,39]. Prior studies attribute the inef?ciency to either the high system call overhead of the operating system[28,40,43] or inef?cient implementations that cause resource con-tention on multicore systems[37].The former approach drastically changes the I/O abstraction(e.g.,socket API) to amortize the cost of system calls.The practical lim-itation of such an approach,however,is that it requires signi?cant modi?cations within the kernel and forces ex-isting applications to be re-written.The latter one typically makes incremental changes in existing implementations and,thus,falls short in fully addressing the inef?ciencies. In this paper,we explore an alternative approach that de-livers high performance without requiring drastic changes to the existing code base.In particular,we take a clean-slate approach to assess the performance of an untethered design that divorces the limitation of the kernel implemen-tation.To this end,we build a user-level TCP stack from the ground up by leveraging high-performance packet I/O libraries that allow applications to directly access the packets.Our user-level stack,mTCP,is designed for three explicit goals: 1.Multicore scalability of the TCP stack. 2.Ease of use(i.e.,application portability to mTCP). 3.Ease of deployment(i.e.,no kernel modi?cations). Implementing TCP in the user level provides many opportunities.In particular,it can eliminate the expen-sive system call overhead by translating syscalls into inter-process communication(IPC).However,it also in-

协议分析试题

tcpip协议分析试题与答案 《TCP/IP协议分析》模拟测试试题一 一、单项选择题(每题2分,共30分) 1.DNS是用来解析下列各项中的哪一项() A、IP地址和MAC地址 B、用户名和IP地址 C、TCP名字和地址 D、主机名和传输层地址 2.TELNET是进程端口号一般是()A、80B、25C、23D、21 3.()拓扑使用细缆。 A、10BASE2 B、10BASE5 C、10BASE-T D、100BASE-FX 4. 路由功能一般在()实现。 A、物理层 B、数据链路层 C、网络层 D、传输层 5.管理计算机通信的规则称为:() A、协议 B、介质 C、服务 D、网络操作系统 6.域名http://biz.doczj.com/doc/df2545640.html,/ 由4 个子域组成,其中哪个表示主机名。() A、www B、pdsu C、edu D、cn 7. 通信子网不包括() A、物理层 B、网络层 C、传输层 D、数据链路层 8.IP 地址192.1.1.2 属于,其默认的子网掩码为。 A、B 类,255.255.0.0 B、A 类,255.0.0.0 C、C 类,255.255.0.0 D、C 类,255.255.255.0 9 .IP 协议提供的是类型。() A、面向连接的数据报服务 B、无连接的数据报服务 C、面向连接的虚电路服务 D、无连接的虚电路服务 10 .Internet 采用了目前在分布式网络中最流行的模式,大大增强了网络信息服务的灵活性。() A、主机/ 终端 B、客户/ 服务器 C、仿真终端 D、拨号PPP 11.负责电子邮件传输的应用层协议是() A、SMTP B、PPP C、IP D、FTP 12.文件传输是使用下面的协议。() A、SMTP B、FTP C、SNMP D、TELNET 13. 在下列给出的协议中,不是TCP/IP 的应用层协议。 A、HTTP B、FTP C、TCP D、POP3 14.传输介质是通信网络中发送方和接收方之间的( ) 通路。 A、物理 B、逻辑 C、虚拟 D、数字 15.传送速率单位“b/s ”代表() A、bytes per second B、bits per second C、baud per second D、billion per second 二、填空题(每空1 分,共20分) 1.用户在INTERNET上发邮件是通过(SMTP)协议来实现的,收邮件是通过(POP3)协议实现的。 2.OSI参考模型中,提供建立、维护和拆除端到端连接的层是(传输层),为报文分组提供在网络中路由功能的层是(网络层),负责把源计算机的数据编码成适合传输的比特流的层是(数据链路层)。 3.物理层的接口特性有机械特性、(电气特性)、功能特性和(规程特性)。 4.E-mail 地址的格式一般是(用户名@邮件服务器域名)。

嵌入式TCP/IP网络通信协议的实现

龙源期刊网 http://biz.doczj.com/doc/df2545640.html, 嵌入式TCP/IP网络通信协议的实现 作者:龚峰文王剑 来源:《硅谷》2008年第24期 [摘要]TCP/IP已成为网络互联的标准,并成为支持Internet/Intranet的协议标准。就是针对当前流行的TCP/IP网络通信协议的实现进行具体的研究和探讨。 [关键词]TCP/IP协议 Internet 网络通信 中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1220053-01 Internet已经发展得更加商业化,更加面向消费者,尽管基本目的发生了改变,但其最初的质量标准(也就是开放式、抗毁性和可靠性)依然是必需的。这些特性包括可靠传输数据、自动检测、避免网络发生错误等。更重要的就是TCP/IP是一个开放式的通信协议,开放性就意味着在任何组合间,不管这些设备的物理特征有多大差异,都可以进行通信。 一、标准TCP/IP协议 如同OSI参考模型一样,TCP/IP也是一种分层模型。与OSI参考模型不同的是,TCP/IP 参考模型更侧重于互联设备间的数据传送,而不是严格的功能层次划分。TCP/IP通过解释功 能层次分布的重要性来做到这一点,但它仍为设计者具体实现协议留下很大的余地。因此,OSI参考模型适用于解释互联网络的通信机制,而TCP/IP更适合做互联网络协议的市场标 准。 TCP/IP协议是一套把因特网上的各种系统互联起来的协议组,可以保证因特网上数据准 确又快速地传输。TCP/IP协议是一个很大的协议族,通常表示为一个简化的四层模型。这四 层分别是应用层、传输层、网络层和链路层。 二、IP协议的实现

tcp、ip协议栈移植

This article was downloaded by: [University of Jiangnan] On: 27 March 2015, At: 06:51 Publisher: Taylor & Francis Informa Ltd Registered in England and Wales Registered Number: 1072954 Registered office: Mortimer House, 37-41 Mortimer Street, London W1T 3JH, UK Journal of Discrete Mathematical Sciences and Cryptography Publication details, including instructions for authors and subscription information: http://biz.doczj.com/doc/df2545640.html,/loi/tdmc20 An abridged protocol stack for micro controller in place of TCP/IP R. Seshadri a a Computer Centre, S.V. University , Tirupati , 517 502 , India Published online: 03 Jun 2013. PLEASE SCROLL DOWN FOR ARTICLE

An abridged protocol stack for micro controller in place of TCP/IP R.Seshadri ? Computer Centre S.V .University Tirupati 517502India Abstract The existing TCP/IP protocol stack running in hosts takes lot of overhead while the node in network is for a speci?c purpose.For example transferring simple messages across network.If the node in the network is not a PC but,some thing like a micro controller,which measures some values and stores in its local memory,then it becomes lavishness in using the micro controller’s memory.As it is a node in a network,working with TCP/IP ,it should be able to transfer those values in the form of messages to other hosts which are in either local network or global network. But in micro controller terms the memory is expensive and compact.The existing TCP/IP stack consumes a few mega bytes of memory.Therefore it can’t be accommodated in the memory of micro controller.Hence one needs to reduce the memory consumption.In this regard,an abridged protocol which replaces the existing TCP/IP has been designed to suit the above needs.For this purpose,the TCP/IP have been combined with KEIL C51features for 8051micro controller to make it work in transferring messages in local area network as well as global network. The above scheme was implemented and tested and the system was working satisfac-torily.The results are found to be more effective in communicating information/message from the micro controller to a PC. Keywords :Ethernet,stack,Transmission Control Protocol (TCP ),Internet Protocol (IP ).Introduction to TCP/IP The name TCP/IP refers to a suite of communication protocols.The name is misleading because TCP and IP are the only two of the dozens of protocols that compose the suite.Its name comes from two of the most ?E-mail :ravalaseshadri@yahoo.co.in —————————————————– Journal of Discrete Mathematical Sciences &Cryptography Vol.9(2006),No.3,pp.523–536 c Taru Publications D o w n l o a d e d b y [U n i v e r s i t y o f J i a n g n a n ] a t 06:51 27 M a r c h 2015

网络通信协议分析及应用试题集6828(I)

1. OSI标准中,采用的是三级抽象:体系结构,服务定义,协议说明。 2. TCP/IP协议族中,使用了三个不同层次的地址,主机网络层或网络接口层使用了:物理地址(MAC地址)。 3. TCP/IP协议族中,使用了三个不同层次的地址,传输层使用了:端口地址。 4. TCP/IP协议族中,使用了三个不同层次的地址,网络层使用了:逻辑地址(IP地址)。 5. 根据所提供的服务方式的不同,端口又可分为TCP协议端口和UDP协议端口两种。 6. 从端口的性质来分,通常可以分为以下三类,注册端口(Registered Ports)松散地绑 定于一些服务。 7. 从端口的性质来分,通常可以分为三类,FTP和HTTP服务需要使用:公认端口(Well Kno wn Ports)类型。 8. 从端口的性质来分,通常可以分为三类,动态或私有端口(Dynamic and/or Private Po rts)容易被黑客和木马程序利用。 9. 接口是同一结点内相邻层之间交换信息的连接点。 10. CCITT与ISO的工作领域是不同的:CCITT 主要是考虑通信标准的制定。 11. CCITT与ISO的工作领域是不同的:ISO主要是考虑信息处理与网络体系结构。 12. OSI参考模型和TCP/IP参考模型只是描述了一些概念,用来协调进程间通信标准的制定。 13. 通信服务可以分为两大类:面向连接服务(connect-oriented service)和无连接服 务(connectless service)。 14. 网络数据传输的可靠性一般通过确认和重传机制保证。 15. 通信协议包括:面向连接与确认服务;面向连接与不确认服务;无连接与确认服务;无连接与不确认服务四种类型。 16. IP协议是无连接的、提供“尽力而为”服务的网络层协议。 17. 17. INTERNET使用了不同类型的地址概念,应用层使用了域名(DNS)、电子邮件址、URL等地址。 18. 网络协议是由程序和进程来完成的。 19. B类IP地址中的一个私有网络地址,如果需要50个子网,网络掩码应该为(点十进制表示):。 20. C类IP地址中的一个私有网络地址,从网络地址开始。

网络协议分析期末考试

网络协议分析期末考试http://biz.doczj.com/doc/df2545640.html,work Information Technology Company.2020YEAR

重庆理工大学 网络协议分析 期末试卷(A卷)参考答案 第一题判断题(20小题,共20分,对打√,错打×) 1.没有完成两个数据包握手称为双向“握手”,是一种不安全的进程。(√) 2.查阅网上对象所有域名和地址的术语称为统一资源定位符URL。(×) 3.动态端口也叫临时端口。 (√) 4.用于描述DNS数据库段的数据是一种ASCII文本数据。 (√) 5.SOCKS是一种Socket的实现机制。 (×) 6.区分服务也叫分用服务,传输层用于向上传送通信数据。 (×) 7.RIPv2最多有15个网络直径,OSPFv2最多有128个网络直径。(×) 8.DHCP响应消息包含DHCP请求消息。 (√) 9.定界符是PDU的有效数据。 (√)

10.ARPA是一种与Mac地址及IP地址相关的一种协议。( ×) 11.地址请求是一种ARP服务请求。 (×) 12.可接收的使用策略AUP是一种格式文档策略。 (√) 13.Apple Talk是一种组安全策略协议。 (×) 14.权威服务器是PKI中一种发放安全证书的服务器。 (×) 15.自治系统是一组单一管理权限下的路由器。 (√) 16.区分服务也叫分用服务,传输层用于向上传送通信数据。(×) 17.带宽是一种跨网络信息数量的评估数据。 (√) 18.绑定确认是一种必选数据。 (×) 19.定界符是PDU的有效数据。 (√) 20.黑洞是数据包无记录丢失的网络节点。 (√) 第二题单项选择题(20小题,共20分)

嵌入式TCPIP协议栈

嵌入式TCPIP协议栈 嵌入式TCP/IP协议栈 目前,市场上几乎所有的嵌入式TCP/IP协议栈都是根据BSD版的TCP/IP协议栈改写的。在商业嵌入式TCP/IP协议栈大都相当昂贵的情况下,很多人转而使用一些源代码公开的免费协议栈,并加以改造应用。目前较为著名的免费协议栈有: lwIP(Light weight TCP/IP Stack)——支持的协议比较完整,一般需要多任务环境支持,代码占用ROM>40KB,不适合8位机系统,没有完整的应用文档; uC/IP(TCP/IP stack for uC/OS)—基于uC/OS的任务管理,接口较复杂,没有说明文档。 笔者采用的协议栈系瑞典计算机科学研究所Adam Dunkels开发的uIP0.9。其功能特性总结如下: *完整的说明文档和公开的源代码(全部用C语言编写,并附有详细注释); *极少的代码占用量和RAM资源要求,尤其适用于8/16位单片机(见表1); *高度可配置性,以适应不同资源条件和应用场合; *支持ARP、IP、ICMP、TCP、UDP(可选)等必要的功能特性; *支持多个主动连接和被动连接并发,支持连接的动态分配和释放; *简易的应用层接口和设备驱动层接口; *完善的示例程序和应用协议实现范例。 表1 uIP在ATMEL AVR上代码和RAM占用情况 协议模块代码大小/B 使用的RAM/B ARP 1324 118 IP/ICMP/TCP 3304 360 HTTP 994 110 校验和函数636 0 数据包缓存0 400 总和6258 988

注:配置为1个TCP听端口,10个连接,10个ARP表项,400字节数据包缓存。 正是由于uIP所具有的显著特点,自从0.6版本以来就被移植到多种处理器上,包括MSP430、AVR和Z80等。笔者使用的uIP0.9是2003年11月发布的版本。目前,笔者已将它成功移植到MCS-51上了。 2 uIP0.9的体系结构 uIP0.9是一个适用于8/16位机上的小型嵌入式TCP/IP协议栈,简单易用,资源占用少是它的设计特点。它去掉了许多全功能协议栈中不常用的功能,而保留网络通信所必要的协议机制。其设计重点放在IP、ICMP和TCP协议的实现上,将这三个模块合为一个有机的整体,而将UDP和ARP协议实现作为可选模块。UIP0.9的体系结构如图1所示。 UIP0.9处于网络通信的中间层,其上层协议在这里被称之为应用程序,而下层硬件或固件被称之为网络设备驱动。显然,uIP0.9并不是仅仅针对以太网设计的,以具有媒体无关性。 为了节省资源占用,简化应用接口,uIP0.9在内部实现上作了特殊的处理。 ①注意各模块的融合,减少处理函数的个数和调用次数,提高代码复用率,以减少ROM占用。 ②基于单一全局数组的收发数据缓冲区,不支持内存动态分配,由应用负责处理收发的数据。 ③基于事件驱动的应用程序接口,各并发连接采用轮循处理,仅当网络事件发生时 ,由uIP内核唤起应用程序处理。这样,uIP用户只须关注特定应用就可以了。传统的TCP/IP实现一般要基于多任务处理环境,而大多数8位机系统不具备这个条件。 ④应用程序主动参与部分协议栈功能的实现(如TCP的重发机制,数据包分段和流量控制),由uIP内核设置重发事件,应用程序重新生成数据提交发送,免去了大量内部缓存的占用。基于事件驱动的应用接口使得这些实现较为简单。 3 uIP的设备驱动程序接口 uIP内核中有两个函数直接需要底层设备驱动程序的支持。 一是uip_input()。当设置驱动程序从网络层收到的一个数据包时要调用这个函数,

TCPIP协议栈

TCP/IP协议族 IPv4包 UDP包 UDP的伪首部(根据IP数据包的内容建立) UDP校验和覆盖的内容超出了UDP数据报本身的X围。计算校验和,先把零值赋予校验和字段,然后对整个对象,包括伪首部、UDP的首部和用户数据,算出一个16比特的二进制

TCP包 TCP的伪首部(根据IP数据包的内容建立) 三次握手报文序列 在网点1的事件网络报文在网点2的事件 发送SYN seq=x 接收SYN报文段 发送SYN seq=y,ACK x+1

接收SYN+ACK报文段 发送ACK y+1 接收ACK报文段 TCP连接关闭的三次握手 在网点1的事件网络报文在网点2的事件 (应用程序关闭连接) 发送FIN seq=x 接收FIN报文段 发送ACK x+1 接收ACK报文段 发送FIN seq=y,ACK x+1 接收FIN+ACK报文段 发送ACK y+1 接收ACK报文段 IPv6 IPv6是“Internet Protocol Version 6”的缩写,它是IETF设计的用于替代现行版本IP协议-IPv4-的下一代IP协议。IPv6采用了分级地址模式、高效IPXX、服务质量、主机地址自动配置、认证和加密等许多技术。

IPv4和IPv6的主要差别 IPv6包结构 IPv6包由IPv6XX、扩展XX和上层协议数据单元三部分组成:

IPv6XX Version(4bit) Traffic Class(8bit) Flow Label(20bit) Payload Length(16bit) Next Header(8bit) Hop Limit(8bit) Source IP address (128bit) Destination IP address (128bit) 附:常用的Next Header 字段值表 扩展头 一个典型的IPv6包,没有扩展头。仅当需要路由器或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展头。与IPv4不同,IPv6扩展头长度任意,不受40字节限制,但是为了提高处理选项头和传输层协议的性能,扩展头总是8字节长度的整数倍。 目前,RFC 2460中定义了以下6个IPv6扩展头: 1)Hop-by-Hop选项XX 包含分组传送过程中,每个路由器都必须检查和处理的特殊参数选项。Hop-by-Hop选 项XX中的选项描述一个分组的某些特性或用于提供填充。这些选项有: Pad1选项(选项类型为0),填充单字节。

相关主题