0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Simplified TCP/IP协议栈的特点及应用研究

电子设计 来源:网络新媒体技术 作者:龙鹏飞,宫蓉蓉 2021-06-19 17:27 次阅读

1引言

嵌入式Internet是近几年随着嵌入式系统的广泛应用和计算机网络技术的发展而兴起的一项新兴概念和技术。单片机微控制器MCU,Micro ControllerUnit)被广泛应用在家庭和工业的各个领域,通称嵌入式系统。嵌入式系统具有以应用为中心、以计算机技术为基础、软件硬件可裁剪等特点,赢得了巨大的市场,在应用数量上远远超过了各种通用计算机。随着Internet/Intranet的发展,各种家用电器,从空调到微波炉,都产生了连入互联网的要求。

如何通过Internet共享嵌入式设备的信息,实现设备的远程访问、控制和管理,对接入到网络上各个节点的设备实时监控,这就是设备接入互联网需要解决的问题。TCP/IP协议是标准的网络协议,如果能把TCP/IP协议嵌入到设备的MCU中,就可以通过它在设备和Internet之间建立通信链路,这样就解决了设备与网络互联的关键技术。

2Simplified TCP/IP协议栈的特点

和嵌入式系统面向特定的应用一样,分析嵌入式TCP/IP协议栈的特点和对传统的TCP/IP协议栈进行简化也要针对特定的系统环境和应用

背景。离开了特定的系统环境和应用背景来讨论嵌入式TCP/IP协议栈的特点和对TCP/IP协议栈进行简化是没有意义的。这里所讨论的嵌入式TCP/IP协议栈是针对那些低档的8位/16位嵌入式系统能支持嵌入式Internet直连体系结构而提出的。

嵌入式系统有限的处理能力以及存储资源相对缺乏,因此在嵌入式Internet环境里使用标准TCP/IP协议栈是不合适的。把TCP/IP协议栈从普通的PC机移植到MCU,内存和内存管理成了瓶颈。为了既实现相应的网络功能又节省系统资源,需要对协议栈进行有针对的模块化裁减。针对家电系统中的8位/16位MCU结构设计了一个TCP/IP协议簇的子集,称之为Simplified TCP/IP协议栈。其中包括IP、UDP、ARP和ICMP等协议的全部或部分功能,对协议进行了有选择的实现,尽最大可能保持协议功能和机制上的完整。

Simplified TCP/IP协议栈按照网络体系分层思想设计,如图1所示。其中每一层都被设计成一个功能相对独立的模块,负责处理各自的数据,通过函数调用把控制权交给上层或下层的模块。

低档嵌入式系统中一般没有实时多任务操作系统支持,所以Simplified TCP/IP协议栈直接面对硬件。MCU中的程序结构一般是顺序执行和硬件中断相配合的方式。嵌入式处理器的时钟频率低,地址、数据总线窄,所以一个IP包的处理要花很多的时间。如果采用中断处理方式,势必影响其他中断和任务的执行。当系统中有实时数据采集、串口通信中断、键盘中断等实时任务时,则会造成冲突。设计时需要合理划分中断处理程序,将无实时要求和费时的SimplifiedTCP/IP协议栈处理放在主程序顺序循环中。对网络接口控制芯片采用查询式,即在其他中断任务的执行间隙处理Simplified TCP/IP协议栈,以牺牲响应速度换取系统可靠性,如图2所示。

3TCP/IP协议栈的裁减

普通操作系统可支持完整的TCP/IP协议族,但嵌入式系统中大多很难做到,也不需做到。嵌入式系统中实现的协议要根据各个系统的特点及功能来进行设计。TCP/IP协议族中,只实现与实际需要有关的部分,而不使用的协议则一概不支持。Simplified TCP/IP协议栈中支持的协议。

3. 1地址转换协议—ARP协议

ARP协议是某些网络接口(如以太网和令牌环网)使用的特殊协议,ARP的地址解析功能是为IP地址和数据链路层使用的硬件地址提供动态地址映射。通用计算机系统中,ARP高速缓存一般设计成双向数据链的形式,这样整个缓存可以方便地动态增减。但是这种非线性存储的链表式缓存结构,在进行表项匹配查找时比较费时,不适用于嵌入式系统。因此ARP的地址缓存采用了线性数组形式的结构。它在内存中是连续线性存储的,查找速度快。嵌入式应用中节点不是很多,即ARP缓存容量不需要很大,因此将ARP高速缓存设计成固定大小。被动的嵌入式服务器主要是接收来自客户的服务请求,为客户提供服务,即嵌入式服务器不会主动向某一主机发数据帧。既然如此始终处于被动状态的服务器完全不需要向任何主机发送ARP请求,设备只要能处理ARP请求并返回ARP应答即可。鉴于这种情况,ARP协议中选择对ARP应答部分进行实现。

3. 2网际协议—IP协议

IP协议是TCP/IP协议簇中最为核心的协议,提供不可靠的无连接的数据报传送服务。所有的TCP、UDP和ICMP数据都以IP数据报的格式传输。IP协议非常重要,实现比较复杂。从实现Simplified TCP/IP协议栈的要求出发,约简IP协议需要把握两个原则:①对接收到的IP数据报进行处理,向上层协议进行提交;②负责对UDP报文进行封装,交给数据链路层进行装帧。当设备收到发给自己的数据报时,首先判断是否是自己的数据报,若不一致则丢弃该数据报;否则进行IP校验和的验证,当数据报无误后,去掉IP头部,将IP数据提交上层处理。

一般情况下,数据包要经过不同的物理网络,则IP层必须支持数据包的分片和重装。但IP的分片和重组所需的开销比较大,而现有的网络一般都支持以太网,并且在此次应用的8/16位嵌入式系统中,传输的数据都是一些数据量比较小的状态信息或者控制信息。因此数据报都不会超过协议所限制的1500字节。如果极少数数据实在比较大,可以在程序中进行处理,分批次进行传输。因此可以裁减掉IP的分片和重组功能。而IP数据包的路由功能则交给默认网关执行。

3. 3网际控制报文协议———ICMP协议

ICMP协议是IP网络内为控制、测试、管理功能而设计的协议。ICMP的报文类型很多,不同类型的报文由类型和代码字段共同决定。为了了解设备是否可达, Simplified TCP/IP协议栈中主要实现了回显请求和应答报文的功能。该程序发送ICMP回显请求报文给目的主机,并等待ICMP回显应答。对于处于被动状态设备而言,不需要主动发送回显请求,只要能够识别来自其他客户的回显请求并发送回显应答就可以了。为了能够使用户了解设备是否可达,应当能够对Ping的回显请求给予应答。

3. 4用户数据报协议—UDP协议

Simplified TCP/IP协议栈中的传输层中,选用UDP作为传输层协议。从理论上看,TCP的可靠性是以许多复杂措施及由此而增加的开销为代价换来的。TCP提供面向链接的、可靠的服务,而UDP是无面向链接的。由于UDP没有可靠性的保证机制,因此能全速地进行数据通信(即充分发挥物理通信设备的速度);又因为UDP没有点对点接入的要求,可以实现“一对多点”,“多对多点”的广播和多点播发信息。UDP的不可靠传输的缺陷,可以在使用UDP时,在应用层增加提高UDP可靠性的代码来弥补。譬如给数据添加顺序标记,因而能在应用层发现数据的丢失和乱序,从而加以更正;采用应答确认机制,确保数据安全到达接收者等。

由于嵌入式系统的CPU速度有限、代码不能太长、传输率是关键等特殊要求,一般来讲,在嵌入式设备接口时,快速、简单地与嵌入式设备进行双向数据传输是首为重要的。所以减少和嵌入式设备之间的往返信息,使网络成为一种更为高效的通信媒介将是嵌入式网络协议设计的必由之路。而UDP协议的开销很小,传输率比TCP高出很多,实时性更强。所以嵌入式TCP/IP协议中采用UDP协议作为运输层协议,不失为明智之举。嵌入式系统中也可能存在对数据传输可靠性要求很高的情况。由于UDP协议没有计时机制、流量控制或拥塞管理机制、应答、紧急数据的加速传送等功能,因此在应用层协议中加入相应的措施,如给数据报加上顺序标识、定时等待、采用重传机制等辅助性的操作来弥补它的缺陷。从应用的角度看, Simplified TCP/IP协议栈主要是应用于家用电器上网。对于温度、烟雾和湿度传感器等的每秒一次地集中监控来说,发送频繁,包较小,只需前端设备向网络中广播实时状态等数据即可,因此选用UDP较为合适。

4Simplified TCP/IP协议栈处理流程

Simplified TCP/IP协议栈接收数据包的过程就是解析数据包的过程。首先当一个数据帧到达时,网络接口控制程序将其读入缓冲区,检查协议类型字段,如值依次为0x0800,表示数据域内为IP包;值依次为0x0806,表示数据域内为ARP包。由此以确定使用那种协议模块来处理此分组。去掉以太网帧首部的数据包将被分配到IP缓存或者ARP缓存。接着,由IP协议处理模块或ARP协议处理模块继续解析。ARP根据包的类型,或者更新ARP地址映射表或者发送ARP应答。IP协议处理模块对数据包解析后,将数据交给UDP协议处理模块或ICMP协议处理模块。ICMP协议模块会发回一个ICMP回显应答包。Simplified TCP/IP协议栈发送数据包的过程是封装数据包的过程,数据经过某层协议的处理,就会在数据包首部增加某种格式的头部。在IP协议模块处理数据包的过程,它要通过调用ARP协议获得对方主机的物理地址。

Simplified TCP/IP协议栈处理流程如图3所示。

图3Simplified TCP/IP协议栈处理流程图

5总结与展望

为了验证方案的可行性,实验中以简单图像的传输为研究对象,检验Simplified TCP/IP协议栈的运行效果。从测试结果可看出,大流量的图像传输系统中发生数据报的几率还是比较大的。当然,如果是应用在数据流量不是很大,仅有一些少量数据和简单的控制指令或反馈信息的应用系统中,运行的情况会更好一些。

目前Simplified TCP/IP协议栈技术还有一些不完善的地方。比如在数据量大的网络中减小数据报的丢失率,更有效的进行拥塞控制等,这些都是今后的努力方向。另外,还需要进一步优化代码,提高SimplifiedTCP/IP协议栈的性能。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7573

    浏览量

    151689
  • 嵌入式
    +关注

    关注

    5087

    文章

    19149

    浏览量

    306299
  • 计算机
    +关注

    关注

    19

    文章

    7521

    浏览量

    88276
收藏 人收藏

    评论

    相关推荐

    全硬件TCP/IP协议学习笔记(第四天:全硬件TCP/IP协议模块学习)

    /IP协议的不同归类为两大类,第一类是传统的软件TCP/IP协议
    的头像 发表于 12-18 10:27 8802次阅读
    全硬件<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>学习笔记(第四天:全硬件<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>模块学习)

    如何去简化Simplified TCP/IP协议

    Simplified TCP/IP协议特点是什么?如何去简化
    发表于 05-26 07:23

    TCP/IP协议有何功能

    TCP/IP协议是什么?TCP/IP协议
    发表于 10-14 06:39

    UCOS下的TCP-IP-PPP协议

    UCOS下的TCP-IP-PPP协议
    发表于 03-25 16:51 61次下载

    51+单片机TCP-IP+协议ZLIP源码

    和 KeilC51 编译器有其自身的特点:存储类型、函数指针、重入函数等,ZLIP 就是针对 这些特点设计的 TCP/IP 协议
    发表于 12-17 16:11 9次下载

    TCP/IP协议之路由器简要分析

    读完这个系列的第一篇浅谈TCP/IP协议(一)入门知识和第二篇浅谈TCP/IP
    发表于 10-10 11:46 1次下载

    Microchip TCP/IP协议

    的开发人员可以很容易找到许多Microchip产品的商业和非商业的TC P/IP实现方案。本应用笔记详细说明了Microchip公司自己免费提供的TC P/IP协议。 Microch
    发表于 04-20 16:04 5次下载
     Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    Microchip的TCPIP协议的详细中文资料免费下载

    。感兴趣的开发人员可以很容易找到许多 Microchip 产品的商业和非商业的 TCP/IP 实现方案。本应用笔记详细说明了 Microchip 公司自己免费提供的 TCP/IP
    发表于 06-15 08:27 35次下载
    Microchip的<b class='flag-5'>TCP</b>和<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>的详细中文资料免费下载

    介绍tcp_ip协议lwip的特点

    简介了嵌入式tcp_ip协议lwip的基本信息
    的头像 发表于 07-03 13:05 3668次阅读

    Microchip TCP/IP精简协议

    本应用笔记描述 Microchip 传输控制协议 / 互联网协议TCP/IP)精简协议库的结
    发表于 04-01 15:36 17次下载
    Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>精简<b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    Microchip TCP/IP协议

    。感兴趣的开发人员可以很容易找到许多 Microchip 产品的商业和非商业的TCP/IP 实现方案。本应用笔记详细说明了 Microchip 公司自己免费提供的 TCP/IP
    发表于 04-02 14:28 22次下载
    Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>

    到底什么是TCP/IP协议,看完这篇你就明白!

    一谈到TCP/IP协议,相信不少小白都处于暴躁的边缘,只懂其一不知其二。没关系,看完这篇你就知道啦!我们先简单了解下TCP/
    的头像 发表于 12-09 15:21 1473次阅读
    到底什么是<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b><b class='flag-5'>栈</b>,看完这篇你就明白!

    Microchip TCP/IP 协议应用笔记

    电子发烧友网站提供《Microchip TCP/IP 协议应用笔记.pdf》资料免费下载
    发表于 04-17 14:16 3次下载

    TCP/IP协议的设计与实现_中文

    电子发烧友网站提供《TCP/IP协议的设计与实现_中文.pdf》资料免费下载
    发表于 07-03 11:28 4次下载

    LwIP协议源码详解—TCP/IP协议的实现

    电子发烧友网站提供《LwIP协议源码详解—TCP/IP协议的实现.pdf》资料免费下载
    发表于 07-03 11:22 3次下载