第一章 了解HTTP
名词解释
1. HTTP(Hyper Text Transfer Protocol, 超文本传输协议)
2. WWW(World Wide Web, 万维网)
3. URL(Uniform Resource Locator, 统一资源定位符)
4. URI(Uniform Resource Identifier, 统一资源标识符)
5. HTML(HyperText Markup Language, 超文本标记语言)
HTTP诞生
1. 1989年 HTTP诞生
2. 1990年 HTTP/0.9
3. 1996年 HTTP/1.0
4. 1997年 HTTP/1.1
TCP/IP
- TCP(Transmission Controll Protocol, 传输控制协议)
- UDP(User Data Protocol, 用户数据协议)
- IP(Interface Protocol, 网际协议)
- DNS(Domain Name System, 域名系统)
协议与HTTP协议关系
第二章 HTTP协议
- 1.用于客户端和服务器之间的通信
-
2.通过请求和响应的交换达成通信
- 3.HTTP是不保存状态的协议
- 4.使用Cookie管理状态
带Cookie信息的请求报文
GET /image/ HTTP1.1
Host:hachr.jp
Cookie:sid=1342077
响应报文
HTTP/1.1 200 OK
Date:Thu,12 Jul 2012 07:12:20 GMT
Server:Apache
<Set-Cookie:sid=1342077;path=/;expires=Web,10-Oct-12 07:12:20 GMT>
Content-Type:text/plain;charset=UTF-8
-
5.持久链接
-
6.HTTP方法
第三章 HTTP报文内的HTTP信息
本章讲解:请求和响应是怎么运作的
1.HTTP报文
HTTP报文: 用于HTTP协议交互的信息
请求报文: 请求端(客户端)的HTTP报文
响应报文: 响应端(服务器端)的HTTP报文
HTTP报文本身是由多行(用CR+LF做换行符)数据构成的文子串文本。
HTTP报文结构
2.请求报文及响应报文结构
请求报文(上)和响应报文(下)结构
请求报文(上)和响应报文(下)的实例
请求行:包含用于请求的方法,请求URI和HTTP版本
状态行:包含表明响应结果的状态码,原因短语和HTTP版本
首部字段:包含请求和响应的各种条件和属性的各类首部,一般首部有四种:通用首部,请求首部响应首部和实体首部
其他:可能包含HTTP的RFC里未定义的首部(Cookie等)
3.HTTP在传输数据时,通过编码提升传输效率,能有效的处理大量请求
报文主体和实体主体的差异:
报文:HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输。
实体:作为请求和响应的有效载荷数据被传输,内容由实体首部和实体主体组成,
HTTP报文的主体用于传输请求或响应的实体主体。
压缩内容编码方式:
- gzip()
- compress
- defalte
- identity
分割发送传输编码:把实体主体分块的功能,每一块用十六进制标记块大小,最后一块使用0(CR+LF)来标记
4.发送多种数据的多部分对象集合
目的:发送一份报文可以包含多种类型的实体(图片、文本等)
包含:
1. mutilpart/form-data: 在web表单文件上传时使用
2. mutilpart/byteranges: 状态吗206响应报文包含了多个范围的内容时使用
3. mutilpart/form-data
Content-Type:mutilpart/form-data;boundary=AaB03x
--AaB03x
Content-Disposition:form-data;name="field1"
JoeBlow
--AaB03x
Content-Disposition:form-data;name="pics";filename="file1.txt"
Content-Type:text/plain
...(file1.txt的数据)...
--AaB03x
4. mutilpart/byteranges
HTTP/1.1 206 Partial Content
Date: Fri,13 Jul 2012 02:45:26 GMT
Last-Modified:Fri,13 Aug 2007 02:02:20 GMT
Content-Type:mutipart/byteranges;boundary=THIS_STRING_SEPARATES
--THIS_STRING_SEPARATES
Content-Type:application/pdf
Content-Range:bytes 500-999/8000
...(范围指定的数据)...
--THIS_STRING_SEPARATES
Content-Type:application/pdf
Content-Range:bytes 7000-999/8000
...(范围指定的数据)...
--THIS_STRING_SEPARATES--