http协议特点:
1、支持客户/服务器模式
2、简单快速(只需传送请求方法和路径)
3、灵活
4、无连接
5、无状态
二、http协议详解之请求篇
http请求分为三部分组成,分别是:请求行,消息报头,请求正文。
1、请求行以一个方法符号开头,以空格分开,后面跟着请求URI和协议版本,格式
Method Request-URI HTTP-Version CRLF
GET:请求获取Request-URI所表示的资源
POST:在Request-URI所表示的资源附加新的数据
HEAD:请求获取由Request-URI所标示的资源的响应消息报头
报头结束要用一个CRLF
2、请求报头后述。
3、请求正文
三、http协议详解之应答篇
在接收和解释请求消息后,服务器返回一个HTTP响应消息
响应格式分为三部分组成,分别是:状态行、消息报头、响应正文。
1、状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
2、响应报头后述
3、响应正文就是服务器返回的资源内容。
三、Content-Encoding
Content-Encoding是HTTP协议的响应报文头,一般形式如:
Content-Encoding:gzip,deflate,compress
Content-Encoding的说明中指出deflate指的是在RFC1950说明的zlib格式。也就是说当Content-Encoding为deflate时,内容应该为zlib格式。
compress具说chrome支持,但还没见到哪个web服务器支持
gzip,deflate,zlib的关系:
deflate(RFC1951):一种压缩算法,使用LZ77和哈弗曼进行编码;
zlib(RFC1950):一种格式,是对deflate进行了简单的封装;
gzip(RFC1952):一种格式,也是对deflate进行的封装.
可以看出deflate是最核心的算法,而zlib和gzip格式的区别仅仅是头部和尾部不一样,而实际的内容都是deflate编码的,即:
gzip = gzip头(10字节) + deflate编码的实际内容 + gzip尾(8字节)
[GZIP的实现可参考GzipOutputStream.java]
zlib = zlib头 + deflate编码的实际内容 + zlib尾
访问www.163.com. 响应报文含有gzip头,而www.baidu.com的响应报文没有gzip头。
看到gzip大家都很好的支持,有无gzip头都没有问题。
URL
定义:统一资源定位符(唯一性)
作用:用于完整地描述Internet上网页和其他资源的地址的一种标志方法。
格式:
protocol://hostname[:port]/path/[;parameters][?query]#fragment
fragment:信息片断,字符串用于制定网络资源中的片断