http协议和URL协议详解
URL协议
定义:统一资源定位符(唯一性)
作用:用于完整地描述Internet上网页和其他资源的地址的一种标志方法。
格式:
protocol://hostname[:port]/path/[;parameters][?query]#fragment
fragment:信息片断,字符串用于制定网络资源中的片断
http协议
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头都没有问题。