此篇为学习HTTP时的摘抄笔记,内容多是从别处摘抄粘贴,非原创。不涉及商业使用。如无意中侵犯原作者的相关权益,请联系处理。
学习资料: 1. http://www.runoob.com/http/http-tutorial.html
2. http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
3. http://www.cnblogs.com/gpcuster/archive/2009/05/25/1488749.html
4. 深入理解HTTP协议
一 简介
HTTP,Hyper Text Transfer Protocol(超文本传输协议)的缩写。
是一种C/S模式的工作方式,用于从服务器传送文本(HTML文件,图片文件,查询结果等)到客户端的协议。
基于TCP/IP协议,是位于应用层的协议。
二 工作原理
1. 响应模型
只能由客户端发起请求,服务器响应。
![](http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-12.jpg)
2. 三个特性
1) 无连接 每次连接至处理一个请求2) 媒体独立的 只有客户端和服务器知道如何处理的数据内容
3) 无状态 HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能,同一个客户端的这次请求和上次请求是没有对应关系
3. 在TCP/IP中的位置
4. 默认端口
默认HTTP的端口号为80,HTTPS的端口号为443。
三 消息结构
请求消息:请求行,请求头部,空行,请求数据HTTP请求行
(请求)头
空行
可选的消息体
实例:
GET / HTTP/1.1 //状态行。以下到空格行之前为请求头
Host: gpcuster.cnblogs.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
If-Modified-Since: Mon, 25 May 2009 03:19:18 GMT
<空行>
省略的消息体
HTTP状态行
(应答)头
<空行>
可选的消息体
实例:
HTTP/1.1 200 OK //状态行。以下到空格行之前为应答头
Cache-Control: private, max-age=30
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Mon, 25 May 2009 03:20:33 GMT
Last-Modified: Mon, 25 May 2009 03:20:03 GMT
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Mon, 25 May 2009 03:20:02 GMT
Content-Length: 12173
<空行>
消息体的内容(略)
四 请求方法
1.0版本 GET,POST,HEAD1.1版本新增: OPTIONS, PUT, DELETE, TRACE, CONNECT
五 响应状态码
下面是常见的HTTP状态码:200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误