`
Joson_Coney
  • 浏览: 57511 次
  • 性别: 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对话。

分享到:
评论

相关推荐

    网络协议报文格式大全

    《网络协议报文格式大全》是一份详尽的参考资料,主要涵盖了互联网通信中涉及的各种协议报文的结构和格式。这份文档对理解网络通信的底层原理至关重要,是网络工程师、开发者以及网络安全专业人士不可或缺的工具书。...

    网络协议报文格式大全中文图文说明.zip

    《网络协议报文格式大全中文图文说明》是一个由华为公司提供的资源,包含了丰富的网络协议报文格式解析。这个.chm文件很可能是一个压缩过的帮助文档,通常用于存储大量的文本、图片和索引信息,方便用户查阅。下面将...

    网络协议报文格式大全中文图文说明【华为出品】.zip

    这份由华为技术有限公司编写的“网络协议报文格式大全”是网络学习者的重要参考资料,它以中文图文的形式详细阐述了各种网络协议的报文结构,旨在帮助读者深入理解网络通信的核心原理。 在计算机网络中,协议报文是...

    华为出品 史上最强网络协议报文格式大全中文图文说明

    《华为出品 史上最强网络协议报文格式大全中文图文说明》是一份极其重要的资源,它深入浅出地解析了网络通信中的各种协议报文格式,对于IT从业者,特别是网络工程师、开发者以及网络安全分析人员来说,是必备的学习...

    网络协议报文格式大全chm版

    《网络协议报文格式大全》是一部详尽阐述网络通信协议中报文结构的参考资料,尤其适合于网络开发人员、系统管理员以及对网络底层原理感兴趣的读者。CHM版(Compiled HTML Help)是一种常见的电子书格式,它将多个...

    网工必备 网络协议报文格式大全 v1.0

    《网络协议报文格式大全 v1.0》是网络工程师必备的参考资料,它详细解析了各种网络协议的报文结构,对于理解数据在网络中的传输过程至关重要。本文将深入探讨网络协议的基本概念,以及常见的报文格式,以帮助你更好...

    史上最强网络协议报文格式大全中文图文说明

    这份名为“史上最强网络协议报文格式大全中文图文说明”的文档,无疑为网络从业者提供了一套全面且深入的学习资源。它涵盖了网络协议报文的详细结构,帮助我们理解数据在网络中的传输方式。下面,我们将深入探讨其中...

    网络协议报文格式大全-华为技术有限公司.chm

    《网络协议报文格式大全》是由华为技术有限公司提供的专业文档,深入解析了网络通信中的各种协议报文结构。这份资料涵盖了从链路层到应用层的全层次协议,旨在帮助读者理解和分析网络通信过程中的数据交换。以下是...

    CAN总线CSV格式报文转ASC格式报文python源码.rar

    本压缩包"CAN总线CSV格式报文转ASC格式报文python源码.rar"提供了一个Python脚本,用于将CSV格式的CAN总线报文数据转换为ASC格式。Python是一种广泛使用的编程语言,尤其适合数据处理和分析任务,因为它拥有丰富的库...

    报文格式汇总-VXLAN报文格式.docx

    总的来说,理解VXLAN报文格式对于网络工程师来说至关重要,它能帮助我们深入理解网络虚拟化的实现机制,以及如何在数据中心环境中有效地管理和扩展网络资源。通过这种方式,我们可以更好地利用VXLAN来构建灵活、可...

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

    3. **构建HTTP请求**:根据自定义的HTTP数据报文格式,构造POST或PUT请求。这通常包括创建请求头,设置Content-Type(如application/json或text/plain),并将串口数据作为实体内容。 4. **发送请求**:使用HTTP...

    以太网协议报文格式.doc

    802.1Q标签插入在源MAC地址和以太类型或长度字段之间,增加了一个4字节的标签,其中包含**TPID**(标签协议标识符,值为0x8100),**PCP**(优先权代码点,用于定义数据流优先级),**CFI**(标准格式指示,用于兼容...

    CAN总线报文排列格式.docx

    CAN(Controller Area Network)总线是一种广泛应用于汽车电子、工业自动化和嵌入式系统的通信协议,它具有实时性强、抗干扰能力高等特点。在CAN总线通信中,数据的传输是以报文(Message)的形式进行的,每个报文...

    用java写的报文转换工具

    5. **可扩展性**:为了适应不断变化的需求,这个工具应该设计成模块化和可扩展的,方便添加新的报文格式支持或修改现有转换规则。 6. **性能优化**:考虑到可能需要处理大量报文,工具在设计时应考虑效率和资源占用...

    ARP报文格式

    **ARP报文格式详解** ARP(Address Resolution Protocol,地址解析协议)是局域网中用于将IP地址转换为物理MAC地址的重要协议。在局域网内的通信中,由于数据链路层需要MAC地址来确定数据帧的目标设备,而网络层...

    通用报文协议

    总结起来,通用报文协议是一种基于Socket和TCP的通信规范,它通过标准化报文格式,提高了跨平台和跨应用的数据交换效率。理解和掌握通用报文协议的设计原理和实现方法,对于进行网络编程和构建高效网络服务具有重要...

    报文格式化程序.zip

    在IT领域,报文格式化是一项重要的任务,尤其在通信协议、数据分析以及日志解析等场景中。"报文格式化程序.zip" 提供的工具就是为了解决这类问题,帮助用户将原始、混乱的报文数据转化为清晰、可读性强的格式。下面...

    FX5U-SLMP协议格式-实例.pdf

    在SLMP协议中,ASCII报文格式通常包含有副帧头、请求目标网络编号、站号、模块I/O编号、多点站号、请求数据长度、保留位、指令代码、子指令以及软元件信息等字段。 ### 知识点四:数据长度及响应格式 在进行数据...

    protocol-analysis-test.rar_http 报文 格式

    总的来说,HTTP报文格式和HTTP协议的工作过程是网络通信的基础,而DNS是互联网服务的重要支撑。掌握这些知识,无论是对开发者、网络管理员还是普通用户,都能帮助他们更好地理解和应对网络问题。通过深入研究...

    常见报文格式汇总

    在计算机网络通信中,报文格式是数据传输的基础,不同的协议和场景会采用特定的报文结构。以下是一些常见的报文格式及其关键点: 1. Ethernet(以太网)数据包格式: - Ethernet II 帧格式包含目的MAC地址、源MAC...

Global site tag (gtag.js) - Google Analytics