HTTP简介
WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。
HTTP是hypertext transfer protocol简写,它是TCP/IP协议集中的一个应用层协议,用于定义WEB浏览器
与WEB服务器之间交换数据的过程以及数据本身的格式。
HTTP协议的版本
HTTP/1.0,HTTP/1.1,HTTP-NG
深入理解HTTP协议,对管理和维护复杂的WEB站点,开发具有特殊用途的服务器程序有重要影响。
会话方式
1.建立连接
2.发出请求信息
3.回送响应信息
4.关闭连接
浏览器与WEB服务器都要建立一次单独的连接。
浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对。
支持代理
支持多个代理(考虑页面时效)
浏览器访问多图网页的过程
每一个图片属于一个异步请求
HTTP1.1特点
在一个TCP连接上可以传送多个HTTP请求和响应
多个请求和响应过程可以重叠进行
增加了更多的请求头和响应头
HTTP请求信息
请求信息的结构:
一个请求行,若干个消息头,以及实体内容,其中的一些消息头和实体内容是可选的,消息头和实体内容
之间要用空行隔开。
例如:
GET /books/aaa.html HTTP/1.1 //请求行
Accept:*/* /*
Accept-Language:en-us
Connection:Keep-Alive
Host:localhost 多个消息头
Referer:http://localhost/links.asp
User-Agent:Mozilla/4.0
Accept-Encoding:gzip,deflate */
一个空行
HTTP响应消息:
响应消息的结构:
一个状态行,若干个消息头,以及实体内容,其中一些消息头和实体内容都是可选的,消息头和实体内容
之间要用空行隔开。
例子:
HTTP/1.1 200 OK 状态行
Server:Microsoft-IIS/5.0
Date:Thu,13 Jul 2000 05:46:53 GMT
Content-Length:2291 多个消息头
Content-Type:text/html
Cache-control:private
一个空行
<HTML> 实体内容
响应消息的实体内容就是网页文件的内容,也就是在浏览器中使用查看源文件的方式所看到的内容。
一个使用GET方式的请求消息中不能包含实体内容,只有使用POST,PUT和DELETE方式的请求消息中才可以
包含实体内容。
对于HTTP1.1来说,如果HTTP消息中包括实体内容,且没有采用chunked传输编码方式,那么消息头部分必
须包括内容长度的字段,否则,客户和服务程序就无法知道实体内容何时结束。
HTTP消息头:
使用消息头,可以实现客户机与服务器之间的条件请求和应答,消息头相当于服务器和浏览器之间的一些
暗号指令。
每个消息头包含一个头字段名称,然后依次是冒号,空格,值,回车和换行符。
举例: Accept-Language: en-us
消息头字段名是不区分大小写的,但习惯上将每个单词的第一个字母大写。
整个消息头部分中的各行消息头可按任何顺序排列。
消息头可以分为通用信息头,请求头,响应头,实体头等四类。
许多请求头字段都允许客户端再值部分制定多个可接受的选项,多个项之间以逗号分隔。
举例:Accept-Encoding: gzip, compress
有些头字段可以出现多次,例如,响应消息中可以包含有多个"Warning"头字段。