新闻中心

EEPW首页 > EDA/PCB > 设计应用 > IPv4/IPv6双协议栈实现方案解析

IPv4/IPv6双协议栈实现方案解析

作者:时间:2012-05-09来源:网络收藏

3.3 6模块

6[2]模块主要包括两部分的功能,一是负责从网络接口层接收6数据包,对数据包进行一定的处理后发送给上层处理模块(TCP或ICMPv6)。二是从上层接收数据,进行报文的选路,封装IPv6报头后将数据报发送给网络接口层。

3.3.1 ICMPv6[3]的简化分析

⑴ICMPv6信息报文

嵌入式设备只需作为Ping的接收端,所以不需要发送回显请求报文和处理回显应答报文。为了让客户端可以测试网络状态以及测试使用,必须支持接收请求报文和发送相应的应答报文。

⑵ICMPv6错误报文

由于嵌入式设备不会作为路由转发设备,所以需要实现发送端口不可达报文,同时要支持超时报文通告对端超时错误。在BSD中,IP层没有发送参数问题报文, ICMPv6无需支持处理参数问题报文。

3.3.2邻居发现协议(NDP)的简化分析

NDP[4]是IPv6协议的一个基本组成部分,它用于地址解析、邻居发现以及路由器及网络参数发现。本不支持路由功能,所以无需实现发送路由器通告报文,但必须接受路由器通告报文,以完成路由发现功能。同时支持邻居通告和邻居请求报文的接收和发送,以实现地址解析和重复探测。

3.4 TCP模块

在TCP之上实现有限的WEB服务,可以对该协议的实现机制作相应的简化及优化。

3.4.1 TCP模块的扩展

TCP对IPv4和IPv6报文的处理过程没有任何的不同,但是由于IPv4和IPv6地址结构不同,需要对使用IP地址的部分进行扩展。

⑴数据结构扩展

PCB是用来记录每个TCP连接状态的,包括本地IP地址和远程IP地址,扩展时使用union结构添加IPv6地址,同时添加标识位区别连接。

⑵操作扩展

在TCP处理过程中包括输入时对IP地址和端口号的匹配,输出时校验和的计算和路由的查找。由于对IPv4和IPv6报文调用相同的处理函数,需要在实现时在这几个函数的处理过程中加入对相应PCB中标识位的判断。

3.4.2 简化TCP状态机

TCP的面向连接和可靠性传输等特性决定了每一个标准的TCP状态机庞大而且复杂,对于嵌入式应用,可以根据需要进行简化。

建立连接分为主动打开和被动打开,本设计作为监听状态的服务器端,仅实现被动打开。在设计中去掉了CLOSED状态,让它一开始就处于LISTEN状态,等待对方发起连接。

断开连接分为主动断开和被动断开,从安全性的角度考虑,本设计仅实现主动断开连接。当服务器发送完数据时,向客户机发送关闭连接请求。

通过以上分析,根据特定的应用不失一般性的裁减掉复杂和冗余的机制,除去标准状态机中的客户端部分,简化连接的建立和关闭过程,就得到如图2所示的简化的TCP状态机模型。


图2 简化TCP有限状态机



关键词: IPv 协议栈 实现方案

评论


相关推荐

技术专区

关闭