HTTP协议个人理解
2016-02-18 11:34
441 查看
1. 基础概念篇
1.1 简介:Web浏览器与Web服务器之间的一问一答的交互过程必须遵守一定的规则,这个规则就是http协议。
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的简写,它是
TCP/IP协议的一个应用层协议,用于定义Web浏览器与Web服务器之间交换数据的过程及数据本身的格式。
TCP/IP协议(网络协议即网络中(包括互联网)传递、管理信息的一些规范。如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为网络协议)
1.2 版本:HTTP/1.1(常用) HTTP/2.0
2.工作原理
2.1 HTTP的请求响应模型:工作流程分四个过程,建立连接,发送请求信息,发送响应信息,关闭连接。
http1.0版本(缺陷):
浏览器与Web服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与Web服务器都要建立一次单独的连接。
浏览器到Web服务器之间的通讯都是完全独立分开的请求和响应。
http1.1版本(特点):
在一个TCP连接上可以传送多个HTTP请求和响应。
多个请求和响应过程可以重叠。
增加了更多的请求头和响应头,如Host请求头等。
2.2协议的组成:
2.2.1 请求部分:
由3部分组成:
demo:
GET /App1/1.html 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; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Host: localhost:8080 Connection: Keep-Alive username=admin&password=123
请求行(第一行)
请求消息求(第二行到第一个空行结束)
请求正文(从第一个空行开始之后都是)
详解:
请求行:GET /App1/1.html HTTP/1.1
GET:请求方式。默认的请求方式。其他常用的请求方式还有POST,
HEAD,PUT,DELETE,OPTIONS,TRACE,CONNECT
/App1/1.html:请求的资源的URI。
HTTP/1.1:客户端使用的协议的版本
请求消息头:向服务器传递附加信息
Accept:通知服务器,浏览器可以接受的MIME类型。(文件系统中用文件扩展名区分数据的类型。网络上用MIME类型来区分数据类型。Tomcat\conf\web.mxl)
MIME类型名称:大类型/小类型
Accept-Charset:通知服务器,浏览器支持的字符集
Accept-Encoding:通知服务器,浏览器能够解码的数据压缩方式。比如:gzip
Accept-language:通知服务器,所希望的语言
Host:请求的主机和端口
*Referer:是一个URL地址。取值是当前页面之前的那个页面地址的。防盗链
*Content-Type:通知服务器,请求正文的MIME类型。取值:application/x-www-form-urlencoded默认值,对应的是form表单的enctype属性
If-Modified-Since:通知服务器,缓存的文件的最后修改时间。
User-Agent:通知服务器,浏览器类型.
Content-Length:表示请求消息正文的长度
Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP
1.1(HTTP 1.1默认进行持久连接
*****Cookie:这是最重要的请求头信息之一(会话有关)
2.2.2 响应部分:
demo:
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Accept-Ranges: bytes ETag: W/"65-1366335797484" Last-Modified: Fri, 19 Apr 2013 01:43:17 GMT Content-Type: text/html Content-Length: 65 Date: Fri, 19 Apr 2013 02:06:23 GMT Warnning:w1 Warnning: w2 hello http <a href="b.html">click</a> <img src="1.jpg"/>
由3部分组成:
响应行(第一行)
响应消息求(第二行到第一个空行结束)
请求正文(从第一个空行开始之后都是)
详解:
响应行:HTTP/1.1 200 OK
HTTP/1.1:服务器用的协议版本
200:响应码。代表服务器处理的结果的一种表示
200:正常 302/307:重定向 304:服务器的资源没有被修改 404:请求的资源不存在 500:服务器报错了
OK:响应码描述
响应消息头
*Location:通知客户端,指示新的资源的位置(结合302/307来用。请求重定向)
Server:通知客户端,服务器的类型
*Content-Encoding:通知客户端,响应正文的压缩编码方式。常用的是gzip。
*Content-Length:通知客户端响应正文的数据大小
*Content-Type:通知客户端响应正文的MIME类型
*Refresh:让浏览器自动刷新。取值为整数(刷新的时间间隔,单位是秒)Refresh:3
Refresh:3;URL=其他资源的URI
*Content-Disposition:通知客户端,以下载的方式打开资源。
Content-Disposition:attachment;filename=1.jpg
*****Set-Cookie:SS=Q0=5Lb_nQ; path=/search服务器端发送的Cookie(会话有关)
*Expires: -1 网页的有效时间。单位是毫秒
*Cache-Control: no-cache (1.1)
*Pragma: no-cache (1.0) 通知客户端不要缓存
附录:深入理解Http协议
http://www.blogjava.net/zjusuyong/articles/304788.html
http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx
相关文章推荐
- HttpServletRequest中得到各种信息
- 简单理解Socket _http://www.cnblogs.com/dolphinX/p/3460545.html
- meta标签中的http-equiv属性使用介绍
- 如何用70行代码实现深度神经网络算法
- tcpdump文件格式分析
- 和我一起学《HTTP权威指南》——连接管理
- TCP长连接与短连接的区别(转)
- 网络常识之网关
- Linux下java获取CPU、内存、磁盘IO、网络带宽使用率
- Sqlserver远程/网络事务的支持(在触发器中调用远程服务器)
- Spring HTTPInvoker原理猜想(HTTP+序列化)
- Linux网络编程 -- socketpair的使用
- Okhttp设置http缓存,在没有网络的情况下加载http缓存里面的内容
- Codevs_P1237 餐巾问题(线性规划与网络流24题+最小费用最大流)
- 10个linux网络和监控命令
- 网络常识之IP和地址分类
- WAMP服务器离线,80端口被Microsoft-HTTPAPI/2.0占用
- Android网络请求通信之Volley
- Linux Netcat 命令——网络工具中的瑞士军刀
- jmeter --HTTP属性管理器