第
2
2002
卷第
年
3
期
l
月
电 子 器 件
hinese o rnal of lectron evices
ol. 2 , o. l
arch. , 2002
Impl ementation of HTTP Protocol in the Embedded system
WANG Chao, HU Ch n, LIU Xznnzng, SONG Hong ong, TIAN Yuan
( Na zona ASIC Sys m ngzn zng C n , Sou h as Unz . , Nanjzng 2l 0096 P. R. Chzna)
abstract, The ~ypertext Transf er Protocol( ~TTP) is an application-level network protocol f or implementing
the applications accessing the Web. This paper intro ces the implementation approach of ~TTP l . l in the
embe e pro ct-Wireless P ( Personal igital ssistant) in etail.
ey ords, ~TTP l . l P
EEa ,
6l 0P, 62 0
嵌入式系统中
协议的实现
~TTP
, ~TTP(
超文本传输协议
(
)
王超
,
胡晨
,
刘新宁
宋红东
田渊
,
,
东南大学国家专用集成电路系统工程技术研究中心
)
是实现用于
Web
访问应用如浏览器的网 络 应 用 协 议
本 文 详 细 介 绍 了 嵌 入 式 产 品
P (
个人数字助理
中
)
~TTP l . l
协议的实现方法
摘要
无线
关键词
, ~TTP l . l P
中图分类号
, TP393. 04
文献标识码
,
文章编号
, l 00 -9490( 2002) 0l -0093-04
前 言
l
目 前 用 于
Web
实 现 的 整 体 框 架 结 构
,
第 五 部 分 则 对 各 个 模 块 进 行
页 面 访 问 的 应 用 都 是 基 于
~TTP l . l
了 详 细 的 分 析
,
请求
其 中 包 括 了 传 递 参 数 的 分 析
1
响应消息的格式和消息的形成等
~TTP( ~ypertext Transf er Protocol)
对于设计
浏览器等应用软件是必需的
Web
嵌 入式产品无线
应用协议的
它
,
我们在
中
2 ~TTP
协议
P ( Personal igital ssistant)
自 行 设 计 和 实 现 了
~TTP
服 务 器 模 型
不同于
在设计和实现过程中
提供访问
页面
P
Web
我们充分
~TTP l . 0[2]之处如可持
改善了无线网络
,
,
同 时 也 提 高 了 嵌 入 式 设 备
为 了 实 现 嵌 入 式 的 浏 览 器
~TTP l . l [l ]协议
,
提供了基本的支持
为无线
,
利用了
~TTP l . l
缓存等减少了响应的时间
1
续连接
带 宽 窄 而 带 来 的 延 时 [3],
中 资 源 的 利 用
,
案
本 文第二部 分 介 绍 了
对 于
l . l
要 介 绍 了 实 现 的 软 硬 件 平 台
~TTP l . 0
协 议 以 及
~TTP
协 议 的 改 进 之 处
~TTP
第 三 部 分 简
,
第 四 部 分 给 出 了 协 议
,
为 嵌 入 式 设 备 提 供 了 较 好 的 实 现 方
来稿日期
, 200l -08-27
协议和多数网络协议一样都采用了客户
一 个
,
~TTP
的 客 户 端 建 立 一 个
的 连 接 并 向
的 服 务 器 发 出 一 个 请 求
~TTP
( e est essage)
( esponse essage) ,
服 务 器 则 返 回 一 个 响 应 消
其 中 包 含 了 所 请 求 的 资 源
给出了
协议实现的一个简单模型
~TTP
-
~TTP
消 息
息
图
l
, ser agent(
, origin server(
用户代理
源服务器
)
)
图
l ~TTP
协议实现的简单模型
49
电 子 器 件
第
卷
25
请求消息和响应消息分别给出了从客户端到服
务器的请求数据和从服务器到客户端的响应数据的
格式
0
从以下可见
,
它们是很相似的
0
HTTP-message= Reguest I Response
; HTTP/
1. 1 messages
generic-message= start-line
% ( message-header CRLF)
CRLF
[message-body]
star-line
其中
= Reguest-LineI Status-Line
对 于请求和发送的消息表示了请
star-line
求行和响应的状态行
可选的信息
此信息是关于资源实体内容的
0 message-header(
,
头域
)
定义了
假如实
0
体 内 容 不 存 在
就 是 关 于 请 求 所 指 定 资 源 的 内 容
,
指的是资源实体内容
5
0
message-body
HTTP/ 1. 1
上建立起来的
是 对
主要表现在以下三个方面 [4]0
HTTP/ 1. 0
,
0
进 行 改 进 的 基 础
( 1) HTTP/ 1. 1
HTTP/ 1. 0
页面 的获 取 建 立 一 个 新 的 连 接
一个
不 同 于
需 要 为 每
而 是 采 用
,
的 方 法
即 客
,
户 端 建 立 持 续 连 接 后
进 行 第 一 次 请 求 应 答 后 并 不
( Persistent Connection )
,
而 是 可 以 进 行 多 次 请 求 应 答 后 再 关
Web
了可 持 续 连 接
立 即 关 闭 连 接
,
闭连接
0
( 2) HTTP/ 1. 1
增加了对于缓存的支持
0
增 加 了
的 传 输 编 码
( 3) HTTP/ 1. 1
chunked
方式
这样在服务器端
对于动态产生的页面
0
长度未知的情况下
仍可以发送出响应的数据
,
,
在总
但在
,
0
客 户 端 必 须 进 行 相 应 的 处 理 后 才 能 得 到 原 始 的 数
图
2 HTTP/ 1. 1
各实现模块分析
协议的实现框架
解析传递参数
( 1)
HTTP
为 上 层 应 用 程 序 提 供 了 一 个 接 口
这 样
,
就需要提供相应的接口参数
包括了以下几个部分
0
,
D HTTP URL[5]
HTTP URL
中资源的位置的语法
是 用 来 描 述 通 过
访 问
HTTP
HTTP URL
In-
的
基本的
0
ternet
形式如下
,
http, / /
, / ?
通 过 对
URL
的 解 析 可 以 得 到
D Web
服 务 器
( host)
的 域 名 或
IP
连接的端口号
TCP
上的绝对路径
0
地 址
,
用 来 建 立 连 接
建 立
0
缺省时为
,
向服务器提交的查询信息
800
资源在服务器
0
HTTP
方法
HTTP
的 方 法 用 来 指 明 对 请 求 的
所 做 的
URL
操作
,
其中主要有
和
其中
HEAD~ GET
GET
它 用 来 表 示 取 回 所 请 求 的 资
POST0
据
0
3
无线
.
实现平台
我 们 实 现 的
PDA
硬件
SRAM
无线模块
软件
操作系统
.
4
HTTP/ 1. 1
的软硬件开发平台之上的
0
处理器
存 储 器
, Motorola Daragonball 68EZ328
和
的
, 512KB
Flash Memory
, Wavecom
公司的
模块
GSM
, Motorola PPSM3. 21
协议
自行设计的
ASIX TCP/ IP
TCP/ IP
协议的实现框架
,
图
2
给出了
HTTP/ 1. 1
协议的实现框架
0
协 议 是 建 立 在 嵌 入 式
是 最 常 用 的 一 种 方 法
,
源
0
而
HEAD
则只是取 回关于请求资源 的信息
而
,
不 包 含相关的实体
方法通常 用来向服务器
0 POST
发送数据如提交
FORM0
因此若使用
POST
方法
程
,
的
2MB
序需要得到将要提交的数据
0
代理
HTTP
协 议 提 供 了 服 务 器 的 代 理 访 问 机 制
如
,
果 用 户 需 要 使 用 代 理
,
做为建立连接的地址
0
则 应 当 使 用 代 理 服 务 器 地 址
这样用户所发出的请求是通
协议
过 代 理 服 务 器 中 转 发 出 去 的
而 接 收 的 数 据 也 是 从
,
源服务器通过代理服务器中转发回来的
0
身份认证
当 一 个
服 务 器 需 要 对 用 户 进 行 身 份 的 验
Web
第
期
1
王 超
,
胡 晨 等
,
嵌 入 式 系 统 中
TTP
协 议 的 实 现
59
,
就 必 须 使 用
证 时
供 所 需 要 的 用 户 名 和 密 码 并 进 行 相 应 的 编 码 [6],
便能够得到服务器的服务
的 授 权 机 制
TTP
,
即 由 用 户 提
以
据
O
O
( 3)
建 立 基 于
Socket
的 连 接
,
发 送 和 接 收 数
TTP
使用
TCP
做为底层的传输控制协议
因
,
此客户端必须建立一 条 基 于 数 据 流 的
进行数据的发送和接收
由于在
了可持续连接
,
O
因此不像
都 必 须 建 立 一 个 新 的 连 接
,
的服务器以后才建立新连接
Socket
接 口
,
中使用
TTP/ 1. 1
那 样 每 次 请 求
TTP/ 1. 0
而 是 在 用 户 改 变 了 访 问
O
带来的开 销
这样就减少了重复建
改 善 了 访 问 的 响 应 时
,
立和关闭
间
O
Socket
解析接收数据
响应消息的格式
( 4)
D
ReSponSe = StatuS-Line
% ( general-header
| reSponSe-header
| entity-header)
CRLF
[meSSage-body]
StatuS-Line = TTP-VerSion SP StatuS-Code
形成
( 2)
TTP
请求消息的格式
D
待发送数据
RegueSt = RegueSt-Line
% ( ( general-header
| regueSt-header
| entity-header) CRLF)
CRLF
[meSSage-body]
RegueSt-Line = Method SP RegueSt-UIR SP
TTP-VerSion CRLF
下面 给 出 了一 个典 型 的
取回东南大学主页上的一个页面
O
TTP
请 求 消 息
它 将
,
GET / mlSy. htm TTP/ 1. 1
OST, WWW. Seu. edu. cn
Pragma, no-cache
Chche-Control, no-cache
USer-Agent, ASICBROWSER/ 1. 0
其中请求行指明使用
方法
使用的
协议的版本号
TTP
主 机 的 域 名
O Pragma
Cache-Control
和
给出了
OST
指 明 了 关 于
控 制 网 关 和 代 理 服 务 器 是 否 使 用 缓 存 的 信 息
GET
~
而头域
O
请求消息的生成
根 据
方 法 参 数
TTP
得到资源的路径
,
O
从
TTP URL
.
.
头域的选取
根据用户不同的要求
会使用
,
O
不同的头域和头域的值
如
,
O
在用户使用了代理服务
时
, OST
将 使 用 代 理 的 域 名 或 者
地 址
;
在 用 户
IP
服 务 器 或 者 代 理 服 务 器 的 身 份 认 证 时
必 须 加 入
或 者
Authorization
使 用
POST
数据的 类 型 头 域
Proxy Authorization
方 法 向 服 务 器 提 交 数 据 时
则 必 须 给 出
,
( Content-type)
和 数 据 的 长 度 头 域
,
头 域
而 在
;
( Content-length) O
资源实体
.
对于使用
必 须 对
据 时
,
ing[8]O
据时
,
方法向服务器提交
中 的 数 据 进 行
POST
FORM
同样如果用户使用
方法提交
GET
同样要进行
URL-encoding,
方 法 提 交 的 数 据 是 放 在
RegueSt-Line
中 的
,
MeSSage-body
部分
O
FORM [7]数
URL-encod-
数
FORM
GET
而 没 有
资源的路径和
其 中
给 出 了 服 务 器 使 用 的
SP ReaSon-PhraSe CRLF
TTP-VerSion
协议版本号
O StatuS-Code
是 一 个 三 位 的 整 数
如 使 用
,
TTP
态 码
,
而
表示请求的实体已被正确发送
而
,
O
为服务器返回的状
方 法 时
GET
ReaSon-PhraSe
200
则
USer-Agent
则给出了有关用户代理的信息
O
给出了相关的描述
O
下面给出了在发出上面所举请
选 取 不 同 的 方 法
,
TTP/ 1. 1 200 OK
求消息的例子后收到的响应消息
O
Date, Sun, 05 Aug 2001 13, 43, 23 GMT
Server, Apache/ 1. 3. 12 ( Unix ) ( Red at/
Linux) mod
SSl/ 2. 6. 6 OpenSSL/ 0. 9. 5a mod
perl/ 1. 24
LaSt-Modif ied, Thu, 07 Dec 2000 09, 06, 23
GMT
ETag, *7f 43-3e90-3a2f 530f *
Accept-RangeS, byteS
Content-Length, 16016
COnnection, cloSe
Content-Type, text/ html
接收的实体数据
)
---(
其 中 头 域
Server
给 出 了 服 务 器 的 配 置
Linux Apache/ 1. 3. 12 Web
而
给 出 了 实 体 的 长 度
可 以 看
,
服 务 器
O
,
Content-
Content-Length
Type
则给出了实体的类型
O
不同点在于
出 使 用 的 是
69
电 子 器 件
第
卷
25
响应消息的处理
,
不同状态码的处理
第
1
~TTP/ 1. 1
分了不同的状态码
中 共 有
5
种 状 态 码
现以使用
O
GET
其 中 第 一 位 区
方法举例
对于各种状态码的处理
O
给出
存中的数据
O
总 结
6
了依据
程序将提取出相关的信息提供给上层程序
这样上层程序在发出请求前首先判断缓存中的资源
是否可用
如果过期了才发出请求消息
否则使用缓
状 态 码 表 示 请 求 已 被 服 务 器 接 收
我 们 在 自 主 开 发 的 无 线
. 1XX
1XX
正在处理
要求客户端等待继续接收数据
是一种提示信息
可从接收数据中去掉
O
法
服 务 器
可见它只
状态码表示用户的请求已被服务器正确的
接收
用户请求的资源已被发送
因此我们可以从消
O
息实体中得到所请求的资源
O
. 2XX
2XX
. 3XX
状态码表示被请求的资源已经被移到其他
3XX
的服务器
需要重定向操作
中得到重定向的
tion
URL
这时需要从头域
O
以便再次发出请求消息
Loca-
O
. 4XX
4XX
于用户提供的
状 态 码 表 示 请 求 有 错 误
这 主 要 可 能 是 由
URL
所指的资源是不存在的
或者是
用户需要授权以及用户的认证未通过
则要求上层程序重新传递 正确的
O
如果是前者
若是后者则
URL;
要求上层程序提供或者重新给出用户授权用户名和
密码
O
. 5XX
5XX
状态码表示服务器自身出错或者不能执行
此合法的请求
这时将关闭和服务器的连接
同时通
O
知上层程序请求无法完成
O
第
2
chunked
如 果 接 收 的头 域
数据的处理
则程序必须逐段截取得到的消息实体
Transf er-Encoding
为
chunked
将服务
方式
器 给 出 的 分 段 长 度 数 据 和 结 束 标 志 去 掉
从 而 得 到
完整的接收数据
O
第
3
对于缓存的处理
协议
本文则具体介绍了
~TTP
它为嵌入式产 品 中 实 现 用 于
浏览器提供了基本的应用协议支持
Web
O
中 实 现 了
PDA
~TTP
协议具体 的 实 现 方
访 问 的 应 用 如
参 考 文 献
[1] Fielding R Gettys J Mogul J Frystyk ~. RFC 2068
~ypertext Transf er Protocol-~TTP/ 1. 1. MIT/ LCS
UC Irvine January 1997
[2] Berners-Lee T Fielding R and Frystyk ~. RFC-1945
~ypertext Transf er Protocol-~TTP/ 1. 0. MIT/ LCS
UC Irvine May 1996
[3] Cheng Stephen Lai Kevin Baker Mary. Analysis of
~TTP/ 1. 1 Perf ormance on a Wireless NetWork .
Techical Report, CSL-TR -99-778. Computer Systems
Laboratory Department of ELectrical Engineering and
Computer Science Stanf ord University. February
1999 Pages, ( 1-7)
[4 ] Marshall J. ~TTP made really easy http, / / WWW.
jmarshall. com/ easy/ http/ 1997
[5 ] Berners-Lee T Masinter L. and McCahill M.
" Uni-
f orm Resource Locators( URL) " RFC 1738 December
1994
[6] Franks J. ~allam-Baker P ~ostetler J LaWrence S
Leach P Luotonen A Sink E. and L. SteWart
~TTP Authenticaton, Basic and Digest Access Authen-
tication" RFC2617 June 1999. [jg646]
[7] Berners-Lee T Connolly D. ~ypertext Markup Lan-
guage-2. 0. RFC1866 November 1995.
[ 8] Berners-Lee T Fielding R Irvine U C Masinter L.
服务器通常给出了关于请求资源实体的有效生
Unif orm Resource Identif iers ( URI ) , Generic Syntax.
存时间如头 域
Expires
这就为请求资源的缓存提供
RFC 2396 August 1998
王超
胡晨
,
,
东南大学国家专用集成电路系统工程技术研究中心硕士生
副教授
国家专用集成电路系统工程技术研究中心副主任
作者简介
,
主要研究领域是嵌入式网络协议
主要研究领域为集成电路可测性设计
O
嵌入式系统
O
刘新宁
宋红东
,
,
东南大学国家专用集成电路系统工程技术研究中心硕士生
东南大学国家专用集成电路系统工程技术研究中心硕士生
O
O
田渊
,
东南大学国家专用集成电路系统工程技术研究中心硕士生
O
"