新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式WEB服务器中TCP/IP协议栈的设计与实现

嵌入式WEB服务器中TCP/IP协议栈的设计与实现

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

TCP/IP协议栈结构如图2所示。

图2 TCP/IP协议栈

2.2 TCP/IP协议栈数据处理流程

嵌入式TCP/IP协议栈处理数据流程如图3所示。

系统初始化后,进入主程序循环部分。主程序循环包括两大部分:对接收到的以太网数据帧进行解包和对欲发送的数据进行封装并发送。对接收到的以太网数据帧进行解包,供应用程序使用;对欲发送的数据进行打包,将数据以以太网数据帧的格式发送出去,使采用TCP/IP协议的以太网内所有计算机能收到此数据帧。

详细过程为:先检查是否收到以太网数据帧,若己收到以太网数据帧,则检测以太网数据帧首部,判断所载数据类型,然后对接收到的数据进行相应处理:若接收到的以太网数据帧中包含ARP数据,则调用ARP处理程序;若接收到的以太网数据帧中包含IP数据报,则针对其是否为ICMP、TCP协议格式分别进行相应的解包处理。若不包含IP数据报,则丢弃此数据帧。

若未收到以太网数据帧,此时若有数据要发送,则对数据进行打包,将数据以以太网数据帧的格式发送出去。若无数据要发送,则回到主程序循环。

图3 嵌入式TCP/IP协议栈主流程图

3 嵌入式中TCP/IP栈的实现

3.1 ARP协议实现

嵌入式中ARP协议主要功能是进行IP地址与以太网地址之间的转换,当系统收到发送数据请求时,协议栈就需要返回IP数据报,所有的 IP数据报都要进一步封装成以太网帧才能发送给网络控制器,而所加的以太网首部中就包含了由ARP协议解析目的IP地址所得来的对应的物理地址。

首先ARP程序检测以太网帧的类型字段以判断其协议类型。以太网标准规定,当一个以太网帧携带一个ARP消息时,类型字段必须包含十六进制值0806。接着,检测消息中的操作字段以确认是一个请求消息还是一个应答消息。若是一个请求消息,ARP程序比较目标IP地址与自己的IP地址,如果一样,则要回发一个应答消息。对接收到的来自远程主机的任何试图解析地址的ARP请求,Web服务器都会做出回应。

当Web服务器向客户机发送一个ARP消息时,此消息是嵌入一个以太网帧中广播给网上的所有计算机,每台计算机收到这个请求后都会检测其中的IP地址。与该IP地址匹配的计算机发送一个应答,这个应答消息被放进一个帧中直接发回给Web服务器,而其他的计算机则会丢弃收到的请求,不发任何应答。这种方式虽然对网络造成一定的压力,但节省嵌入式设备的宝贵资源。在等待应答的时间里,ARP将到达的TCP包丢弃,一旦收到应答,ARP高速缓存就用目的以太网地址更新,然后等待分组就用高速缓存中的目的以太网地址更新,分组就被发送了。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

tcp/ip相关文章:tcp/ip是什么




评论


相关推荐

技术专区

关闭