HTTP协议报文格式
接下来我们看看HTTP协议(Hypertext Transfer Protocol――超文本传输协议)浏览器端(客户端)向WEB服务器端访问页面的过程和HTTP协议报文的格式。
基于HTTP协议的客户机访问包括4个过程,分别是建立TCP套接字连接、发送HTTP请求报文、接收HTTP应答报文和关闭TCP套接字连接:
1. 创建TCP套接字连接
客户端与WEB服务器创建TCP套接字连接,其中WEB端服务器的地址可以通过域名解析确定,WEB端的套接字侦听端口一般是80。
2. 发送HTTP请求报文
客户端向WEB服务端发送请求报文,HTTP协议的请求报文格式为:
请求消息 = 请求行(实体头信息)CRLF[实体内容] |
其中"CRLF"表示回车换行。
"请求行"中的"方法"描述了对指定资源执行的动作,常用的方法"GET"、"HEAD"和"POST"等3种,它们的含义如表15-8所示:
表15-8 HTTP请求方法
类别 | 描述 |
GET |
从WEB服务器中获取对象,不同类型的对 · 文件类型对象,获取该文件的内容。 · 程序类型对象,获取该程序执行的结果。 · 数据库查询类型对象,获取该查询的结果。 |
POST | 从客户端向WEB服务器发送数据。 |
HEAD | 要求服务器查找对象的元信息。 |
"实体头信息"中记载了报文的属性,利用这些信息可以实现客户端与WEB服务器之间的请求或应答,它包括报文的数据类型、压缩方法、语言、长度、压缩方法、最后一次修改时间、数据有效期等信息。
实体内容是报文传送的附加信息,一般供POST请求填写。
GET请求报文例子
一个URL为"http://www.zhiliaowang.com/toupiaoceshi.asp?name=朱云翔"的GET请求报文例子如下:
GET http://www.zhiliaowang.com/toupiaoceshi.asp?name=朱云翔 HTTP/1.1 |
其中"/toupiaoceshi.asp?name=朱云翔"是URL信息,语句"ACCEPT:*/*"及其后的语句是"实体头信息"。
注意:在语句"Connection:Keep-Alive"下的空行是必须的。
POST请求报文例子
下面是HTTP协议中关于POST请求报文例子,节自《中国联合通信公司短消息网关系统接口协议(SGIP)》V1.2版:
一般情况下,采用POST报文传送信息的数据存储在"实体"部分中。
POST /sp.cgi HTTP/1.0 /* 请求行,服务程序为sp.cgi */ <CommandId>=<4> /* 以下为POST请求的实体信息 */ |
3. 接收HTTP应答报文
WEB服务器处理客户请求,并向客户机发送应答报文,HTTP协议的应答报文格式为:
应答报文 = 状态行(实体头信息)CRLF [实体内容]
状态行 = HTTP版本号 状态码 原因叙述
状态码描述了WEB服务器执行客户机请求的状态信息,其取值含义如表15-8所示:
表15-8 HTTP应答响应码含义
取值 | 描述 |
1XX | 保留。 |
2XX | 成功接收,比如“200”表示处理成功。 |
3XX | 客户需进一步细化请求。 |
4XX | 客户错误,比如“404”表示访问的 指定资源不存在。 |
5XX | 服务器错误。 |
GET应答报文例子
一个请求URL为"http://www.zhiliaowang.com/toupiaoceshi.asp?name=朱云翔"的应答报文例子如下:
HTTP/1.1 200 OK <html> |
语句"HTTP/1.1 200 OK"中,"200"是响应码,"OK"是原因描述。
POST应答报文例子
下面是HTTP协议中关于POST应答报文例子,节自《中国联合通信公司短消息网关系统接口协议(SGIP)》V1.2版:
HTTP/1.0 200 OK /* 状态行,应答成功 */
<CommandId>=<80000004> /* 以下为POST应答的实体信息 */ |
一般情况下,POST应答报文的"实体"部分存储实际传输的信息。
4. 关闭TCP套接字连接
客户机与服务器双方关闭套接字连接,结束TCP/IP对话。
HTTP协议报文格式的更多相关文章
- dubbo协议报文格式
-
tcp、udp、ip、icmp报文格式分析
TCP .UDP .IP. ICMP协议报文格式分析 Tcp报文格式: Wireshark抓包如图: 源端口/目的端口(16bit): 在TCP报文中包涵了源端口/目的端口,源端口标识了发送进程,目的 ...
-
ARP协议的报文格式
原文链接地址:http://www.cnblogs.com/laojie4321/archive/2012/04/12/2444187.html 结构ether_header定义了以太网帧首部:结 ...
-
ARP协议的报文格式 转自n哖苡逅
ARP协议的报文格式 结构ether_header定义了以太网帧首部:结构arphdr定义了其后的5个字段,其信息用于在任何类型的介质上传送ARP请求和回答:ether_arp结构除了包含arphdr ...
-
结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
摘要: 本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠 ...
-
TCP协议探究(一):报文格式与连接建立终止
一 TCP:传输控制协议报文格式 1 TCP服务 提供面向连接.可靠的字节流服务 面向连接意味着两方通信,不支持多播和广播 可靠性的支持: 应用数据被分割成TCP认为最适合发送的数据块.由TCP传递给 ...
-
DNS报文格式(RFC1035)
一.域名和资源记录的定义 1.Name space definitions 2.资源记录定义(RR definitions) 2.1 格式 后面分析报文的时候详细解释. ...
-
HTTP POST请求报文格式分析与Java实现文件上传
时间 2014-12-11 12:41:43 CSDN博客 原文 http://blog.csdn.net/bboyfeiyu/article/details/41863951 主题 HTTPHt ...
-
IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...
随机推荐
-
appium 九宫格解锁招商银行手机客户端app
之前研究了一段时间的appium for native app 相应的总结如下: appium测试环境搭建 :ht ...
-
【前端】移动端Web开发学习笔记【2】 &; flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
-
20145223《Java程序设计》第5周学习总结
20145223 <Java程序设计>第5周学习总结 教材学习内容总结 ·由于在编程的时候会遇到因各种原因而导致的错误,于是我们可以使用"try"."catc ...
-
Firefox刷新页面和复选框的奇葩问题
Firefox刷新页面后数据还在,估计很多人都碰到过. 但是有一个奇怪的地方就是复选框,如果你默认是勾选了,然后访问者取消勾选,刷新完之后,还是没有勾选,这是为什么? Firefox奇葩的地方就在于c ...
-
基于mini2440的boa服务器移植
win7 系统 开发板:mini2440 虚拟机:ubuntu12.04 准备工作:确保主机与开发板之间能够正常通信,即能够ping通,具体的操作课参考我上一篇随笔. 1.首先从 http://ww ...
-
SignalR 简单示例
一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...
-
认识HTML
基本框架: 1 <html> 2 <head> 3 <title>This Is Title</title> 4 </head> 5 6 & ...
-
PHP5.4新特性(转)
PHP5.4正式前两天发布了,之前有看了一些PHP5.4主要特性相关文章,因此在这里小结一下. 其中好几点更新是由Laruence贡献的!本文部分内容也是源自Laruence的博客. 1. Buid- ...
-
原生js实现简单移动端轮播图
最近项目不是很忙,自己就用原生js写了一个简单的移动端轮播图的小demo,可实现自动轮播和手势滑动轮播,然后就把它记录到个人博客里.还有很多不足的地方,希望多多指出,以便改进. 1.代码部分 分为四个 ...
-
iBATIS 传MAP处理方式(value是list的方式)
1.前提条件 参数是map结构的数据 key:String 类型 value:list 集合 2.处理方式 遍历集合一般常规的方式使用iterate,这里也不例外了,如下 <iterate op ...