一种网络双协议栈并行处理模型及其处理方法与流程

文档序号:11234707阅读:1429来源:国知局
一种网络双协议栈并行处理模型及其处理方法与流程

本发明涉及于网络技术领域,具体涉及一种网络双协议栈并行处理模型及其处理方法。



背景技术:

随着互联网应用的普及和信息共享程度的提高,嵌入式设备与国际互联网连接,也就是嵌入式网络技术已经成为一种趋势。嵌入式网络技术主要是指怎样把嵌入式系统接入国际互联网,但是目前,嵌入式系统还没有一个确切统一的定义。广义地说,任何内含中央处理器的专用系统都可以称之为嵌入式系统。嵌入式系统另一种较为通用定义是:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应于应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式网络技术是指为了使嵌入式系统实现接入互联网功能,把tcp/ip协议按照实际需求经过简化后,作为一种嵌入式应用,从而,这种技术也可以简单地理解为一种采用嵌入式模块而非pc系统直接接入互联网的技术。

实现网络协议是嵌入式系统网络功能的首要问题。嵌入式设备受硬件资源的限制,一般只支持简单的通信协议(如rs-232/485等),这些简单的通信协议不足以让这些嵌入式设备连入互联网,因此要让嵌入式设备连入互联网,就必须让它支持tcp/ip协议栈,最终通过互联网来实现远程控制、远程数据采集等应用。而随着互联网的发展,ipv6协议的出现,嵌入式网络技术支持ipv6协议已经成为研究的重点。

一般嵌入式系统硬件资源无法容纳体系结构复杂的协议栈,而且标准的基于ipv4,ipv6的tcp/ip协议栈都是面对pc或者服务器的实现,具有复杂的功能,而这些功能对于简单的,实现某种特定功能的嵌入式应用是不必要的,并且给有限的系统资源带来较高的负担。因而,设计并实现支持ipv4和ipv6两种协议的tcp/ip双协议栈时,必须遵照协议标准文件,即ietf(intemetengineeringtaskforce互联网工程任务组)的rfc(requestforcomments)文档,从以下两个方面裁剪嵌入式系统:

①功能性裁剪:裁剪掉对tcp/ip双协议栈功能实现关系不大,而又不影响系统最终功能的协议实现;

②性能性裁剪:由于嵌入式系统一般都是针对某个特定的系统而实现的,因此根据应用目的要求可以对某些复杂的情况进行简化处理。



技术实现要素:

发明目的:本发明的目的在于针对现有技术的问题,提供了一种网络双协议栈并行处理模型及其处理方法。

技术方案:本发明提供了一种网络双协议栈并行处理模型,包括tcp/udp协议层、网络接口协议层、ipv4、ipv6协议层、icmpv4/icmpv6协议层;所述tcp/udp协议层用于识别ipv4数据包和ipv6数据包,所述网络接口协议层对数据链路层数据包的封装以及将接收到的数据发送给上层,所述ipv4、ipv6协议层实现了双协议栈并行处理工作,所述icmpv4、icmpv6协议层对接收到的ping请求报的应答和主动发送ping请求报。

一种网络双协议栈并行处理模型的处理方法,首先将在物理层截获下来的信息提交给数据链路层,在mac层对收到的帧进行分析,此时便可以根据帧中的相应字段区分出是ipv4包还是ipv6包,封装处理结束后继续向上层递交,在网络层根据从底层收上来包是ipv4包或者ipv6包来做相应的处理实现双协议栈,处理结束后继续向上层递交进行传输层的相应处理,直至上层用户的应用。

有益效果:本发明把tcp/ip双协议栈的实现过程层次化,提高了协议栈的移植性,把该协议栈移植到其他的硬件上只需更改少量和底层硬件联系的文件,上层的程序无需修改;tcp/ip双协议栈在嵌入式系统的实现可以大量应用到工业生产以及普通生活中,可使设备轻易增加网络接口,特别是随着ipv6的推广应用以及现代生活的飞速发展,本发明所阐述的实现就有着更为重大的意义。

附图说明

图1是本发明双协议栈结构;

图2是本发明双协议栈处理流程。

具体实施方式

下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。

实施例:一种网络双协议栈并行处理模型,如图1所示,包括tcp/udp协议层、网络接口协议层、ipv4、ipv6协议层、icmpv4/icmpv6协议层;tcp/udp协议层用于识别ipv4数据包和ipv6数据包,网络接口协议层对数据链路层数据包的封装以及将接收到的数据发送给上层,ipv4、ipv6协议层实现了双协议栈并行处理工作,icmpv4、icmpv6协议层对接收到的ping请求报的应答和主动发送ping请求报。

网络接口协议层主要完成与硬件设备的通信。这部分功能的实现主要是:以太网控制芯片rtl8019as接口驱动和针对ipv4栈的apr地址解析协议。接收数据时,网络接口层将从网卡接收到的数据存到缓冲区,通过读取数据的得到以太帧报头,根据以太帧报头的类型字段判断以太类型,从而转入相应的处理。在发送时根据ip报文的报头判断发送的是ipv4还是ipv6报文来对发送的以太帧进行封装。

ipv4协议的实现主要是ip协议层的处理,包括两个方面:第一,对接收到的ip报进行处理;第二,根据传输层协议的信息处理发送的lp报。

以下列出实现的几个主要函数:

(1)createipheadcrc()16位校验和函数

该函数是先将ip报头按16位的方式累加,累加的结果如果大于oxffff,就把高出的16位和低16位相加,最后结构取反输出。

(2)send_lp4_frame()ip报发送函数

该函数主要由上层协议的需求来封装ip层的数据,以及把数据传递到以太网接口层等待发送。在它的输入参数中指明了上一层协议的类型,就是在这个函数中调用了以太网接口层的发送函数send_ip4_to_llc()。

(3)ip4_process()ip报接收函数

以太网层的接收函数recethernetpacked()调用该函数,它通过ip报中的协议字段判断上层协议的类型再调用上层协议的相应函数进行处理。在本发明中能处理的上层协议类型是icmp,udp和tcp协议。

ipv6协议主要实现无连接的ip数据报的封装、解封、接收和传送的功能,系统实现包括以下函数:

(1)ip6_init()初始化函数

该函数的主要是初始化ipv6协议族中各字段的参数,以及可能包含的协议的数目,例如:协议中的ip地址、使用协议的类型。

(2)ip6-process()ip报接收函数

下层的网络接口层接收函数调用此函数接收ipv6数据报。ip6_process要实现以下两个功能:

①报文的验证

报文的正确性验证,包括检查版本号是否正确,收到的报文长度是否短应有的长度,报文的目的是否本地接口等。

②和向上层协议传递数据报

向上层协议传递数据报,就是根据ip6_head.nextheader(下一报头),对报文进行分发。如果是udp报文,则调用上层的udp协议实现的接收函数,如果是tcp报文,则调用上层tcp协议实现的接收处理函数。

(3)send_lp6_frame()ip报发送函数

在发送数据时,函数send_ip6_fram()通常要从两处接收传送报文:ip转发模块和ip层之上的协议。在本发明中,由于系统需要传送的数据包都较小,系统硬件资源有限,send_ip6_frame()的处理过程没有实现分片功能。该函数被调用时,ipv6首部虽然被上层初始化,但是ipv6首部中的版本号和流标签字段还是需要从主机字节顺序转换为网络字节顺序。

icmp报文中,回送请求和回送应答报文可用于测试两个系统的连通情况,ping工具利用的就是这两种报文,icmp协议的实现主要是对接收到的ping请求报的应答和主动发送ping请求报等。下面说明主要的需要实现的函数:

(1)createlcmp4headcrc()校验和计算函数

该函数负责对icmpv4报校验和的计算,具体算法参看ipv4报头的校验和函数createipheadcrc()。

(2)ping_process发送ping请求帧

该函数主要是用来发送ping请求报,函数在运行时首先根据输入参数设置好icmp报的发送缓存区,然后调用send_ip4_framed()函数进行发送。

(3)icmpv4_processicmpv4请求报处理

该函数主要处理接收到的icmpv4请求报,函数在运行时首先根据icmpv4报的类型字段判断接收到的是否是ping请求帧,如果是,则根据接收到的ping请求帧来设置ping应答帧,然后调用ip层的发送函数send_ip4seframe()把ping应答帧发送出去。

(4)icmpv4_send()发送icmpv4报文

该函数主要是用来发送icmpv4信息报,首先把ip报的前20个字节复制到icmpv4报的发送缓冲区,然后根据类型和操作等设置icmpv4报的各个字段,最后调用send_ip4_framed()函数进行发送。

icmpv6是icmpv4的后续的版本,它对原来的icmpv4协议在功能上进行了扩充,icmpv6包括错误报文和信息报文,错误报文用来报告ipv6包在传输和转发过程中的错误。信息报文分为3类:诊断报文、管理多点传送组的报文和邻居发现消息。与icmpv4不同,icmpv6响应echo命令来检查网络是否连通,本发明中不作该命令的实现。

icmpv6中规定了多种协议类型和功能,如果实现全部功能,需要占用大量的系统资源。因此,本发明对于icmpv6协议仅仅利用邻居发现协议实现地址解析功能。

在ipv4协议中地址解析过程是由arp协议来完成,而在ipv6协议中,邻居发现协议实现了在ipv4中的地址解析协议、控制报文协议中的路由器发现部分、重定向协议的所有功能,并进行了一定的扩展。邻居发现协议解决了同一条链路上的所有节点之间的互操作问题,地址解析过程是由邻居请求和邻居宣告报文来完成的。由于本发明没有实现路由功能,因此默认目的地址为下一跳目的地址,下面解释地址解析过程:

当节点向目的地发送数据包时,发送方根据目的地址检查邻居缓存表中有无目的ip地址对应的链路层地址。如果邻居缓存表中没有记录该目的ip地址相关的表项存在,就创建该记录,同时将要发送的数据报放在队列中,并启动地址解析过程,地址解析的过程是发送一个邻居请求信息,以及等待一个邻居宣告报文。当收到一个邻居宣告应答时,将该应答的硬件地址记录在邻居缓存表中,同时开始发送放在队列中的数据报。当开始传送数据报时,发送者根据邻居不可达检测算法检测相关的可达性信息,验证邻居的可达性,由于本发明没有实现路由功能,为了简化,这里的邻居不可达协议检测算法仅仅检测新数据包的目的地址是否与邻居缓存表中已有的目的地址相同,如果不同就开始新的地址解析过程。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1