当前位置:文档之家› 嵌入式TCP/IP网络通信协议的实现

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

嵌入式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协议的实现

IP是TCP/IP协议中最为核心的协议。所有的数据都以IP数据报格式传输。IP协议可以实现无连接数据报传送、数据报路由选择和差错控制的功能。在本课题中,由于单片机资源有限,结合实际需要只实现了IP数据报传送和接收,没有实现路由选择算法和差错控制,同时也不支持IP数据报的分片和重组。

IP协议主要通过IP接收函数和IP发送函数两个函数实现。

(一)IP发送函数

voidip_send对来自上层的数据,按照IP数据报的结构构造数据报。通过调用ARP处理程序解析对应IP的物理地址。若返回NULL值,则将数据存入一个已定义的结构体WAITE中,并发送ARP请求。若返回对应IP的物理地址,则将数据交给底层以太网驱动程序处理。

(二)IP接收函数

Voidiprcve(UCHARxdata*inbuf)单片机收到数据包之后,应先对数据包的类型进行判断。如果是IP数据报,则调用该程序。接着再判断其数据域中所使用的协议类型,是ICMP 协议调用ICMP处理子程序,是UDP协议调用UDP处理子程序,是TCP协议调用TCP处理子程序,其它返回。程序流程图如图1所示:

在大多数TCP/IP协议中采用的差错检验方法是校验和,校验和是在分组上附加的信息。校验和能够防止分组在传输时所受到的损伤。在发送端先计算检验和并将得到的结果与分组一起发送过去。接收端对包括校验和的整个分组重复进行同样的计算。若得到的结果正确则接收此分组,否则就将其丢弃。发送端和接收端的校验和计算方法分别如下:

①发送端按以下步骤产生校验和;

②接收端按以下步骤产生校验和。

三、TCP协议的实现

TCP协议的实现是整个TCP/IP协议栈中最复杂的一个。TCP协议是面向连接的、端对端的可靠通信协议。TCP采取了很多机制来保证它的可靠性,比如TCP连接的建立与关闭机制、超时重传机制、数据包确认机制、流量控制机制等等。在嵌入式系统中实现TCP协议所要做的就是实现这些机制,当然要在不影响协议栈功能的前提下适当做一下简化。

当一个TCP连接顺利建立起来后,TCP连接的双方可以互相传递数据了。TCP的可靠传输是靠确认机制来实现的,也就是每发送一个数据包后,只有接收到对方发送确认包后,才能确定该数据包已经成功发送,否则就要重发。

TCP的流量控制是为了协调通信双方的收发速率不均衡而设计的。远端的客户机一般是通用计算机,相对与本地的嵌入式WebServer来说运行速度要快得多。因此,当远端快的发送方向本地慢的接收方发送数据的时候,如果发送速度很快,则会导致本端来不及处理,甚至导致死机。TCP连接建立时,双方会利用TCP首部中的Window窗口字段通报双方的可用窗口。实际上,接收方通报的窗口大小是根据其接收缓存的大小而定,考虑到本系统在使用TCP协议时,只设置了一个中等IP包大小接收缓存,因此接收窗口设为1024。同时,每次接收包的ACK确认时,窗口大小不再动态改变,恒定设置为1024。这样远端主机就会以较慢的传输速率与本端的WebServer进行通信。

四、结论

本文主要针对目前流行的TCP/IP网络通信协议的实现进行研究和探索,由于时间仓促,加上本人对该领域的研究才刚刚起步,所以还存在一些问题值得进一步研究探讨,主要有:

1.对于TCP/IP协议,时间的控制非常重要。包括TCP的超时重传,TCP状态的保活等。如果时间处理不当,将影响整个系统的通讯性能。

2.如何进一步实现TCP/IP对于多点通信以及完整协议栈的实现还有待于进一步研究。

3.IPv6作为下一代互联网的核心协议,能够提供几乎无限的地址空间,从根本上克服了IPv4中地址空间不足的问题。因此,下一步可增加对IPv6协议的研究与实现。

参考文献:

[1]胡海,嵌入式TCP/IP协议栈研究与实现[D],西南交通大学,2006.8.

[2]吴艳光,嵌入式TCP/IP协议栈设计方法的研究[D],太原理工大学,2006.2.

相关主题