基于ARM核的嵌入式TCPIP协议栈简化实现
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
包头长度 ( 4位)
源 端 口 ( 16 位 )
序 列 号 ( 32 位 )
保留 ( 6位)
确 认 号 ( 32 位 ) URC A CK PSH PST SYN FIN
数据( 可变长)
目 的 端 口 ( 16 位 ) 固定窗口
图 3 改 进后的 TCP 协议数 据报 文格式
对于嵌入式 TCP/ IP 协 议栈 的 设计 采 用基 于 事件 驱 动 的
4 嵌入式 TCP/IP 协议处理流程
嵌入式 TCP/ IP 协 议接 收 数据 包的 实 现过 程 就是 在 解 析 数据包。首先由以太网帧处 理模块 解析数 据包, 根据 其类型, 将去掉以太网帧首部的数据包分配到 IP 缓存或者 ARP 缓存; 接着, 由 IP 协议处理模块或 ARP 处理模 块继续解析。ARP 协 议根据数 据 包 的 类 型, 或 者 更 新 ARP 地 址 映 射 表 或 者 发 送 ARP 应答。IP 协议处理 模块 对数 据包 解析 后, 将数 据包 交 给 TCP 协议处理模块。
2 嵌入式 TCP/IP 协议栈的基本特征
传统 TCP/ IP 协议栈的 实现过于复 杂, 需 占用大量系 统资 源, 而嵌入式应用系 统的资 源往往 都非常 有限。因此, 需要 将 传统的 TCP/ IP 协议栈在不违背 协议标 准的前 提下加 以改进, 使其实现性得到提高, 占 用的存 储空间 尽可能 少, 以 满足嵌 入 式应用的要求。通常为了解决存储能力不足的问题, 采取在嵌 入式系统的缓冲区内开辟较少字节的固定存储空间, 而不是动 态分配, 若一旦出现大流量数据包时就会导致缓冲区溢出。因
机不再发出数据仅可接收数据; ②服务器向客户机发出关闭—
应答段, 此时, 服务器还可以向客户机发送数据, 即接入处于
“半关闭”状态; ③服务器向客户 机发出关闭 段, 服务 器不能 再
发送 数 据; ④ 客 户 机 为响 应 服 务器 的 关 闭, 向 服务 器 发 出 关
Simplified Realization of Embedded TCP/ IP Protocol Stack Based on ARM Core
XU Hai-jun1, 3 , LIU Jin-gang1,2, 3 , WANG Yi-hua1,3
( 1. United Research Institute of Computer Sciences, Beijing 100037 , China; 2. Institute of Computing Technology, Chinese Academy of Sciences, Beijing 100080, China; 3. Capital Normal University, Beijing 100037, China)
在本次设计中, 根据系统 网络数 据量较 小且 10Mbps 的 以 太网传输不会导致阻塞, 以太网上的主机有足够的能力处理数 据报, 因 此 可 以 绑 定 超 时 与 重 传 的 时 间 为 5s; 所 使 用 的 RTL8019AS 上有两个 1 500Bytes 的接收缓冲区, 对一般的 嵌入 式系统信息量较 小, 可 以固 定接 收 窗口 为 1 400Bytes; 采 用 一 般的 TCP 服务就可 以满 足应 用要 求, 可以 忽略 紧急 指针 和 选 项及填充字段的值。因此对复杂 的 TCP 协 议进行了 合理的 改 进, 改进后的格式如图 3 所示。
1 引言
随着计算机技术的发展, 嵌入式系统已成为计算机领域 的一 个重要组成部分。嵌入式系统中 的网络 应用也 越来越 广 泛, 几乎所 有设备均需 要有 Internet 连接能 力。支持嵌入 式系 统上网的标准大部 分仍 然是 TCP/ IP 协 议, 包括 TCP, IP, ARP 等协议。 但是 传统的 TCP/ IP 协 议在实 现实 时性 方面 做得 不 够好 , 它把大量的精 力 花在 保证 数 据传 送的 可 靠性 以及 数 据 流量的控制上, 而在实时性要求比较高的嵌入式领域中, 传统 的 TCP/ IP 不 能 满 足 其 实 时 要 求。 因 此 研 究 并 改 进 嵌 入 式 TCP/ IP 协议栈以满 足嵌 入 式 系统 的 高 性能 要 求 具有 重 要 的 现实意义。
回来判断数据是否丢失; 利 用序列 号解决 通信时 重复、失序 的
问题; 利用校验和解决数据误码问题等。
( 3) 流量控制 进程: 设 置 一个 缓 冲区 作为 固 定窗 口, ACK
和窗口号指明在正确收到最后一个数据包之后, 还可接收的序
列号范围, 由此对流量进行控制。
( 4) 关闭连接: ① 客户 机向 服务 器发 出关 闭 段, 此时 客 户
Abstract: Joining an engineering example, by analysing Embedded TCP/ IP protocol stack designing principle, research and simplify the protocol stack’s communication model, architecture, scheme. And then, this paper gives a low consuming circuit of network communication based on the microprocessor of Samsung S3C44B0X, which takes RTL8019AS as physical layer interface. Finally successfully porting the embedded μCLinux on the microprocessor and realizes rightly network communicating by Socket programming, it achieve the design goal by testing. Key words: Embedded System; TCP/ IP; Socket; ARM
程序模型。当一个事件到达时( 如一个新的连接请求或一个
新的数据包到达一个已经建立 的连接 等) , 应 用程序 就会被 调
用, 并由应用程序根据所发生的事件作出处理。此部分可以由 具体的进程来实现。
( 1) 建立连接: ① 当客 户机 请求 对端 接入 时, 随 机地 选 送
一个初始序号; ②服务器选送一个自己的初始序号, 作为对客
接口 的低 功耗 网络控 制器 , 并通 过 Socket 编 程在 嵌入式 μCLinux 系 统上 实现 了网 络通 信, 达到 系统 设计 目标 。
关键 词: 嵌 入式 ; TCP/ IP; 套 接字 ; ARM
中图 法分 类号 : TP393. 04
文献标识码: A
文 章编 号: 1001 - 3695( 2006) 10- 0251- 03
接收以太网数据
是 ARP 数据包吗钥
Y
ARP 分组格式正确吗钥
是 IP 数据包N吗钥
N
IP 地址是否Y正确钥
N
Y
Y
是 TCP 数据包吗钥
调用 ARP 协议处理 调用 TCP 协议处理
协议解析N完成
图 2 改进后的 TCP/IP 协议处理流程图
下面进一步对嵌入式协议栈 中的 TCP 协议处理 模型进 行 简化, 并通过 Socket 编程在 μCLinux 系统上得以实现。
计算机应用研究Байду номын сангаас
2006 年
与 TCP 层一样, 填写 IP 首部的各个字段, 如地址、协议类型等, 然后将在头部包括 IP 首部和 TCP 首部的 整个数据 报( 数据 包 在 IP 协议层称为数据报———Datagram) 向下传 送; 到 了以太 网 驱动程序, 继续进行封装 工作, 将以太 网首部 和以太 网尾部 添 加到从 IP 层传下来的数据报上。
第 10 期
徐海军等: 基于 ARM 核的嵌入式 TCP /IP 协议栈简化实现
· 251·
基 于 ARM 核 的 嵌 入 式 TCP / IP 协 议 栈 简 化 实 现
徐 海军1 , 3 , 刘金 刚1 , 2, 3 , 王益华1, 3
( 1. 计算 机 科 学 联 合 研 究院 , 北京 100037; 2. 中 国科 学 院 计 算 技术 研 究 所 , 北 京 100080; 3. 首 都 师 范 大 学 , 北京 100037)
Socket 应用程序接口层 TCP 协议处理模块 IP 协议处理模块
应用层 传输层 网络层
数据包处理模块
ARP 协议模块 链路层
以太网
图 1 简化后的协议栈体系结构
由图 1 可知, TCP/ IP 协 议栈 及以 太网 中数 据传 送的 层 次
关系: 当在应用程 序 ( 一 般 应用 有 HTTP, FTP 等 协 议) 中 将 应 用数据( 包括用户数据和应用首部) 向网络传送, 它首先到达
5 简化的嵌入式 TCP 协议设计实现
传输控制协议( Transmission Control Protocol, TCP) 是 对 IP 协议进行功能扩展, 在发送端与接收端之间提供高可靠性的数 据通信。TCP 协议是一个面向连接的通信协议, 在通信开 始时 建立连接; 在通信 结束 时切 断该连 接。在 TCP 协议中 根据 IP 协议的载荷能力和物理网络最大传输单元 MTU 来决定数据段 大小, 这些数据段称 为 TCP 数 据报 报文。它 由 数据 报头 和 数 据两部分组成, 数据报头携带了该数据报所需的标志及控制信 息, 包括 20Bytes 的 固 定 部分 和 一 个 不 固 定 长 度 的 可 选 项 部 分。
TCP 层, TCP 协 议根 据应 用层的 要求 在 TCP 首 部填 写好 各 个
字段, 如端口号、序号、标志等。重要的是填写数据校验和到 校
验和的字段, 然后将包括 TCP 首部的段( 数据包在 TCP 协议 层
称为段———Segment) 向协议栈的下一层即 IP 层传 送。IP 层 则
· 252·
收稿日期: 2005- 04- 28; 修返日期: 2005- 09- 28
此在设计嵌入 式 TCP/ IP 协 议栈 时 要合 理地 控 制中 断处 理 程 序大小, 使运行时间尽可能地缩短。
3 嵌入式 TCP/IP 协议栈体系结构
按照 OSI 层次结构思 想, 在标准 的 TCP/ IP 协 议栈 中有 很 多处理协议, 如 ARP, IP, ICMP, TCP, UDP 等协议。在本文设 计 过程中考虑到嵌入式设备资源有限和对网络要求程度不高, 经 设计简化后的嵌入式 TCP/ IP 协议栈体系结构如图 1 所示。整 个协议栈采用模块化设计 思想, 主 要模 块是 ARP 协议 处理 模 块、IP 协议处理模块、TCP 协议处 理模块 等。 同时为 每个模 块 设计良好的通信接口, 保证上层、下层协议的系统调用。
摘 要: 结 合具 体的 工程 实例 , 通 过分 析嵌 入式 TCP/ IP 协议 栈 的 设计 原 理 , 研 究并 简 化 了 嵌 入 式 TCP/ IP 协 议
栈的 通信 模型 、体 系结 构和 实现 方案。 开发 出基 于 SAMSUNG S3C44B0X 微 处 理器 和 RTL8019AS 以 太 网物 理 层
户机送来序号的应答号返送给客户机; ③客户机向服务器再发
出应答段( ACK) , 作为握手信号 来保证 数据被 可靠地 接收, 而
应答段本身不再需要应答, 避免应答陷入无穷的嵌套。
( 2) 验证进程: 采 取相 应的 措施 消除 传输 中 的错 误, 以 保
证数据传输的可靠性, 如持续跟踪已发出数据段的应答是否返
嵌入式 TCP/ IP 协 议发 送 数据 包的 实 现过 程 可以 认 为 是 在封装数据包, 数据包经 过某层 协议的 处理, 将上层 协议传 来 的数 据 包 封 装 成 自 己 的 格 式 。
按照改 进后的嵌入 式 TCP/ IP 协议 体系结构, 其协议 的具 体处理流程如图 2 所示。
初始化