`
Joson_Coney
  • 浏览: 54687 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【转】HTTP协议报文格式

 
阅读更多

(From: http://book.51cto.com/art/200902/109036.htm)
(与我所看到的报文略有不同 (form表单post提交,multipart/form-data),这篇文章是Unix下C编程)


接下来我们看看HTTP协议(Hypertext Transfer Protocol――超文本传输协议)浏览器端(客户端)向WEB服务器端访问页面的过程和HTTP协议报文的格式。

基于HTTP协议的客户机访问包括4个过程,分别是建立TCP套接字连接、发送HTTP请求报文、接收HTTP应答报文和关闭TCP套接字连接:


1. 创建TCP套接字连接

客户端与WEB服务器创建TCP套接字连接,其中WEB端服务器的地址可以通过域名解析确定,WEB端的套接字侦听端口一般是80。


2. 发送HTTP请求报文

客户端向WEB服务端发送请求报文,HTTP协议的请求报文格式为:

请求消息 = 请求行(实体头信息)CRLF[实体内容]
请求行 = 方法 URL HTTP版本号 CRLF
方法 = GET|HEAD|POST|扩展方法
URL = 协议名称 + 宿主名 + 目录与文件名

其中"CRLF"表示回车换行。

"请求行"中的"方法"描述了对指定资源执行的动作,常用的方法"GET"、"HEAD"和"POST"等3种,它们的含义如表15-8所示:

表15-8 HTTP请求方法

取值

描述

GET

WEB服务器中获取对象,不同类型的对
象将获取不同的信息,比如:

· 文件类型对象,获取该文件的内容。

· 程序类型对象,获取该程序执行的结果。

· 数据库查询类型对象,获取该查询的结果。

HEAD

要求服务器查找对象的元信息。

POST

从客户端向WEB服务器发送数据。

"实体头信息"中记载了报文的属性,利用这些信息可以实现客户端与WEB服务器之间的请求或应答,它包括报文的数据类型、压缩方法、语言、长度、压缩方法、最后一次修改时间、数据有效期等信息。

实体内容是报文传送的附加信息,一般供POST请求填写。


GET请求报文例子

一个URL为"http://www.zhiliaowang.com/toupiaoceshi.asp?name=朱云翔"的GET请求报文例子如下:

GET http://www.zhiliaowang.com/toupiaoceshi.asp?name=朱云翔 HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: www.zhiliaowang.com
Connection: Keep-Alive

其中"/toupiaoceshi.asp?name=朱云翔"是URL信息,语句"ACCEPT:*/*"及其后的语句是"实体头信息"。

注意:在语句"Connection:Keep-Alive"下的空行是必须的。

 

POST请求报文例子

下面是HTTP协议中关于POST请求报文例子,节自《中国联合通信公司短消息网关系统接口协议(SGIP)》V1.2版:

 

 写道
POST /sp.cgi HTTP/1.0 /* 请求行,服务程序为sp.cgi */
Host: www.spserver.com /* 以下为实体头信息 */
Authorization: Basic <Base64 串>
Content-Length: <Content-Length>

<CommandId>=<4> /* 以下为POST请求的实体信息 */
<SequenceNumber>=<205502327125025327> /* 实体部分输送报文 */
<UserNumber>=<8613001125453>
<SPNumber>=<168>
<MessageContent>=<ABCD 1234>

 

 

一般情况下,采用POST报文传送信息的数据存储在"实体"部分中。

 

3. 接收HTTP应答报文

WEB服务器处理客户请求,并向客户机发送应答报文,HTTP协议的应答报文格式为:

应答报文 = 状态行(实体头信息)CRLF [实体内容]

状态行   = HTTP版本号 状态码 原因叙述

状态码描述了WEB服务器执行客户机请求的状态信息,其取值含义如表15-8所示:

表15-8 HTTP应答响应码含义

取值

描述

1××

保留。

2××

成功接收,比如“200”表示处理成功。

3××

客户需进一步细化请求。

4××

客户错误,比如“404”表示访问的指定资源不存在。

5××

服务器错误。

 

 

GET应答报文例子

一个请求URL为"http://www.zhiliaowang.com/toupiaoceshi.asp?name=朱云翔"的应答报文例子如下:

 

 写道
HTTP/1.1 200 OK
Connection: keep-alive
Date: Thu, 26 Jul 2007 14:00:02 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Length: 190
Content-Type: text/html
Set-Cookie: ASPSESSIONIDSAATTCSQ=JOPPKDCAMHHBEOICJPGPBJOB; path=/
Cache-control: private

<html>
<head>
<title>精通Unix下C语言编程</title>
</head>
<body>
<b>精通Unix下C语言编程与项目实战<br></b>
<b>投票测试<br></b>
感谢你为选手
朱云翔
投票!
</body>
</html>

 

 语句"HTTP/1.1 200 OK"中,"200"是响应码,"OK"是原因描述。

 

POST应答报文例子

下面是HTTP协议中关于POST应答报文例子,节自《中国联合通信公司短消息网关系统接口协议(SGIP)》V1.2版:

 写道
HTTP/1.0 200 OK /* 状态行,应答成功 */
Date: Tue, 13 Mar 2001 02:45:12 GMT /* 以下为实体头信息 */
Server: Apache/1.3.12 (Unix)
Content-Type: text/html
Connection: close
<CommandId>=<80000004> /* 以下为POST应答的实体信息 */
<SequenceNumber>=<205502327125025327>
<UserNumber>=<8613001125453>
<SPNumber>=<168>
<MessageContent>=< EFGH 5678> <Result>=<0>

 一般情况下,POST应答报文的"实体"部分存储实际传输的信息。

 

4. 关闭TCP套接字连接

客户机与服务器双方关闭套接字连接,结束TCP/IP对话。

分享到:
评论

相关推荐

    串口数据转换成http协议数据发送到云端

    实时监控串口,将从串口读取到的数据通过http发送到云端,同时http数据报文格式可以自定义,同时命令行支持灵活配置 串口参数。源码支持跨平台

    模型遥控器 CRSF 协议数据格式

    模型遥控器 CRSF 协议数据格式

    基于报文类型的WSP协议和HTTP协议转换研究

    硕士论文,可以用CAJ软件打开。希望能够对大家有用。

    C++的slip协议帧报文程序

    C++的slip协议帧报文程序,串口转网络协议,串口转网络协议

    实验2 ARP协议解码详解实验.pdf

    ARP协议简介  ARP,全称Address Resolution Protocol,中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。  IP数据包常通过以太网发送,以太网设备并不识别32位IP地址,它们...

    三菱PLC的RS232通讯协议格式转换器源码

    三菱PLC的RS232通讯协议格式转换器源码。@大白梨。

    ModbusRTU协议中浮点数转换

    MODBUS RTU协议中浮点数的相互转换 从浮点数到整形,以及从整形到浮点数 带简单的协议说明文档

    CAN/CANFD转串口四种转换模式的说明.pdf

    CANFDRS-100IE和CANFDUM-100A 转换器是一款智能协议转换器,支持串口与CAN(CANFD)之间转换。使用前需要先设置好要转换的CAN类型是普通CAN还是CANFD。 转换器给出了四种转换模式供选择,包括:透明转换、透明带标识...

    TCP_IP培训教材

    1 TCP/IP协议集 2 PPP协议  2.1 概述 2.2 状态机 2.3 LCP协商 2.4 PAP和CHAP 2.5 MP工作原理 2.6 网络控制协议(NCP) 3 互连网协议IP 3.1 IP地址及其转换 3.1.1 IP地址的表示方法 ...8.3 RADIUS报文格式

    TCP_IP培训资料.doc

    华为培训资料 1 TCP/IP协议集 2 PPP协议  2.1 概述 2.2 状态机 2.3 LCP协商 2.4 PAP和CHAP 2.5 MP工作原理 2.6 网络控制协议(NCP) 3 互连网协议IP ...3.4 Internet控制报文协议ICMP ...8.3 RADIUS报文格式

    GPS数据包解析-UBLOX

    GPS数据包解析-UBLOX GPS 模块介绍 GPS_ublox_通用解析代码

    CRSF数据包格式.pdf

    CROSSFIRE 数据包协议

    TCP-IP详解卷一:协议

    14.3 DNS的报文格式 144 14.3.1 DNS查询报文中的问题部分 146 14.3.2 DNS响应报文中的资源记录部分 147 14.4 一个简单的例子 147 14.5 指针查询 150 14.5.1 举例 151 14.5.2 主机名检查 151 14.6 资源记录 152 14.7 ...

    Python实现CAN报文转换工具教程

    一、CAN报文简介 CAN是控制器局域网络(Controller Area Network, ...CAN报文按照帧格式可分为标准帧和扩展帧,标准帧是具有11位标识符的CAN帧,扩展帧是具有29位标识符的CAN帧。按照帧类型可分为:1.从发送节点向其它

    TCP_IP协议详解卷一

    14.3 DNS的报文格式 144 14.3.1 DNS查询报文中的问题部分 146 14.3.2 DNS响应报文中的资源记录部分 147 14.4 一个简单的例子 147 14.5 指针查询 150 14.5.1 举例 151 14.5.2 主机名检查 151 14.6 资源记录 152 14.7 ...

    TCP协议分析

    tcp协议分析,简单介绍了TCP的报文格式、连接建立断开和状态机转换

    TCPIP详解(卷1协议)

    14.3 DNS的报文格式 144 14.3.1 DNS查询报文中的问题部分 146 14.3.2 DNS响应报文中的资源记录部分 147 14.4 一个简单的例子 147 14.5 指针查询 150 14.5.1 举例 151 14.5.2 主机名检查 151 14.6 资源记录 152 14.7 ...

    TCP-IP详解卷1:协议

    14.3 DNS的报文格式 144 14.3.1 DNS查询报文中的问题部分 146 14.3.2 DNS响应报文中的资源记录部分 147 14.4 一个简单的例子 147 14.5 指针查询 150 14.5.1 举例 151 14.5.2 主机名检查 151 14.6 资源记录 152 14.7 ...

    TCP/IP详解卷1:协议

    14.3 DNS的报文格式 144 14.3.1 DNS查询报文中的问题部分 146 14.3.2 DNS响应报文中的资源记录部分 147 14.4 一个简单的例子 147 14.5 指针查询 150 14.5.1 举例 151 14.5.2 主机名检查 151 14.6 资源记录 152 14.7 ...

Global site tag (gtag.js) - Google Analytics