最近总是遇到http无响应、乱码、响应超时的问题,去查了一些资料对http协议做了一个初步总结,供大家拍砖。
WEB服务器和浏览器之间的一问一答的交互过程也得遵循一定的规则,这个规则就是HTTP协议。它是TCP/IP协议集中的一个应用层协议,用于定义浏览器和WEB服务器之间交换数据过程以及数据本身的格式。现在被广泛使用的HTTP/1.1相对HTTP/1.0而言,最大的特点就是支持持续连接。
1.HTTP/1.0的会话方式:
建立连接,发送请求信息 -----------------------------------------> 客户机 服务器 <------------------------------------------ 关闭连接,回送响应消息
每次连接只处理一个请求,即使是对同一个网站的每一个页面的访问,浏览器和WEB服务器都要建立一次单独的连接。
2.HTTP/1.1的会话方式:
建立连接,第1个请求信息 --------------------------------------------------------------------------> ............ 发送第N请求信息 --------------------------------------------------------------------------> 客户机 回送第1次响应 服务器 <-------------------------------------------------------------------------- .............. 回应第n次响应 <-------------------------------------------------------------------------- 发送关闭连接请求 --------------------------------------------------------------------------> 关闭连接 <--------------------------------------------------------------------------
HTTP/1.1 支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多图象的网页文件的多个请求和响应可以在一个连接中传输,但每个单独的网页文件的请求和响应仍然需要使用各自的连接,还允许客户端不用等待上一次请求结果返回就可以发送下一个请求。
HTTP消息的格式:
一个完整的请求消息包括:一个请求行、若干消息头、以及实体内容。
一个完整的响应消息包括:一个状态行、若干消息头、以及实体内容。
下面对这几个部分再做个详细的解说:
1.请求行:包括三个部分,即请求方式、资源路径、以及使用的HTTP协议版本。语法如下:请求方式 资源路径 HTTP版本号<CRLF>,其中<CRLF>表示回车和换行这两个字符的组合。HTTP请求方式包括POST、GET、 HEAD、OPTIONS、DELETE、TRACE和PUT几种。常用的是前两种。
2.状态行:包括HTTP协议的版本号、一个状态码、以及对状态码进行描述的文本信息。
语法如下:HTTP版本号 状态码 原因叙述<CRLF>
使用GET和POST传递参数:
在URL地址后面可以附加一些参数,每个参数都由参数名和参数值组成,中间用=分隔,各个参数用&分隔,URL地址和整个参数之间用?分隔,如下所示:
http://www.it315.org/servlet/ParamsServlet?param1=aaa¶m2=bbb
使用GET传递参数的数据量是有限的,一般限制在1KB以下。使用POST比GET要大的多。是没有限制的。但是必须设置Content=Type消息头为‘application/x-www-form-urlencoded’和设置Content-Length消息头为实体内容的长度。
响应状态码:
-
200:表示一切正常,返回的是正常请求结果。
-
404:表示服务器上不存在客户机上所请求的资源,这个状态码在浏览网页时最常见的。
状态代码
-
200 OK (正常)
-
201 Created
-
301 Moved Permanently (页面已经永久性地迁移)
-
302 Found
-
304 Not Modified
-
307 Temporary Redirect (页面暂时性地迁移到了别的地方,由 Location 指定)
-
400 Bad Request
-
401 Unauthorized
-
403 Forbidden
-
404 Not Found (页面没有找到)
-
500 Internal Server Error (服务器端发生错误)
-
501 Not Implemented
通用信息头:
-
Cache-Control:此字段用于通知客户机和服务器之间的代理服务器如何使用已缓存的页面。
-
Connection:用于指定处理完本次请求/响应后,客户端和服务器是否还要继续保持连接。
-
Date:用于表示HTTP消息产生的当前时间。
-
Transfer-Encoding:用于指定实体内容的传输编码方式。
请求头:
-
Accept:用于指定客户端程序能够处理的MIME类型。有多个时用逗号隔开。
-
Accept-Charset:指出客户端程序可以使用的字符集。有多个时用逗号隔开。
-
Accept-Encoding:指定客户机能够进行解码的数据编码方式。有多个时用逗号隔开。
-
Accept-Language:指定客户机期望服务器返回哪个国家语言的文档。有多个时用逗号隔开。
-
Host:指定资源所在的主机名和端口号。
响应头:
-
Accept-Range:用于说明当前WEB服务器是否接受Range请求和Range请求中指定的数据的单位。
-
Location:用于通知客户机应该到哪个新的地址去获取文档。由于当前响应并没有直接返回内容给客户机,所以使用Location头的HTTP消息不应该有实体内容,由此可见,在消息头中不能同时出现Location和Contect-Type这两个头自段。
实体头:
-
Allow:用于指定客户机请求的资源所支持的请求方法。
-
Content-Encoding:用于指定实体内容的压缩编码方式。
-
Content-Language:用于指定返回的网页文档的国家语言类型。
-
Content-Length:用于指定实体内容的长度。
-
Content-Location:用于指定响应消息中所封装的实体内容的实际位置路径。
-
Content-Type:用于指定实体内容的MIME类型。客户机通过检查服务器响应消息的此字段中的MIME类型就能知道实体内容的数据格式和知道以何种方式来进行处理了。<Tomcat>安装目录下的conf目录下的web.xml文件里面就定义了很多的类型。
-
Last-Modified:用于指定文档的最后修改时间。
扩展头:
-
Refresh:此字段告诉浏览器隔多长时间刷新。
相关推荐
HTTP协议HTTP协议HTTP协议HTTP协议HTTP协议
对HTTP协议详细的讲解,看了希望大家对HTTP有一定的了解
HTTP协议ppt
湘潭大学 网络协议TCP/IP实验七 HTTP 协议分析实验报告,仅供参考
深入理解HTTP协议
omron PLC 通讯协议祥解pdf,omron PLC 通讯协议祥解
(1) HTTP超文本传输协议用于定义web页面(超文本)在网络上的交互方式的应用层协议,使用客户/服务器的工作方式。HTTP协议定义了web客户端(浏览器)如何向web站点请求web网页以及web服务器如何将web页传送给客户...
http协议中文版,全面介绍了http协议,不可多得的好资料
认清http协议本质,可供参考博客: http://blog.csdn.net/u010661782/article/details/52714026
能够处理http协议:(1)解析 (2)构造http格式
HTTP协议详解 HTTP协议详解HTTP协议详解HTTP协议详解HTTP协议详解HTTP协议详解.pdf小巧,清晰,全面的PDF,值得收藏
跟我学JTAG协议破解——第一弹 初识J跟我学JTAG协议破解
这份资料非常全面且详细,从 HTTP协议诞生背景到 HTTP协议结构,再到其应用,几乎覆盖了HTTP协议 的方方面面,非常适合初学者入门! 资料也按目录进行编排,每一章下面都有更具体的内容: HTTP初探 1. HTTP版本 自...
HTTP协议中文版 HTTP协议中文版 HTTP协议中文版
java实现http协议jar包,是一个访问http协议工具类,导入全部jar包到项目里面,调用httpRequest方法及可实现http协议访问,以及获取代理IP方法封装
pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb通过http协议传json; pb...
http协议简介http协议简介http协议简介http协议简介http协议简介http协议简介http协议简介http协议简介http协议简介http协议简介http协议简介http协议简介http协议简介http协议简介http协议简介
HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。
一个很好的HTTP协议抓包工具,对于初学HTTP协议的人很好。对其它协议的抓包效果很一般 可是对HTTP协议的很好,很有利于分析。
完整的http协议 完整的http协议 完整的http协议