请求报文:

起始行: <method> <request-URL> <version>

请求首部: <header>

请求实体: <entity-body>

响应报文:

起始行: <version> <status> <reason-phrase>

响应首部:<header>

响应实体:<entity-body>

常用状态码:

200、302、304、403、404、502等(下节详细介绍)

首部

通用首部:

请求和响应都可以有

Date: Tue 3 Oct 1974 02:16:00 GMT说明构建报文的时间和日期

Connection:允许客户端和服务器指定与请求/响应连接有关的选项

MIME-Version: 给出了发送端使用的MIME版本

Transfer-Encoding: 告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式

Cache-Control:用于随报文传送缓存指示。

请求首部:

信息性首部

Clinet-IP:提供了运行客户端的IP地址

Host:给出了接收请求的服务器的主机名和端口号

User-Agent:将发起请求的应用程序名称告知服务器。

  1. accept首部

Accept: /客户端希望接收什么数据类型的数据。/表示任意媒体类型

Accept-Charset:告诉服务器能够发送哪些字符集

Accept-Encoding:告诉服务器能够发送哪些编码方式

Accept-Language:告诉服务器能够发送哪些语言

  1. 条件请求首部

Expect:允许客户端列出某请求所要求的服务器行为

If-Match:如果实体标记与文档标记相匹配,就获取这份文档

If-None-Match:如果提供的实体标记与当前文档的实体标记不相符,就获取这份文档

If-Modified-Since:除非在某个指定的日期之后资源被修改过,否则就限制这个请求

If-Unmodified-Since:除非在某个指定的日期后资源没有被修改过,否则就限制这个请求

If-Range:允许对文档的某个范围进行条件请求

Range:如果服务器支持范围请求,就请求资源的指定范围。

  1. 安全请求首部

Authorization:包含了客户端提供给服务器,以便对其自身进行认证的数据

Cookie:客户端向服务器传送一个令牌—不是真正的安全首部,但确实隐含了安全功能

响应首部:

Server:Tiki-Hut/1.0 用来告诉客户端它在与一个版本1.0的Tiki-Hut服务器进行交互。

实体首部:用于应对实体主体部分的首部

Content-Type:text/html ; charset = iso-latin-1告知应用程序,数据是以iso-latin-1字符集表示的HTML文档。

Content-Length: 54 表示实体长度

HTTP抓包工具:

Fiddler:可查看HTTP协议和抓包等

Fiddler学习教程http://blog.csdn.net/ohmygirl/article/details/17846199

优化http连接的方法:

1.Keep-Alive:保持连接,减少开销;复用tcp连接。(由于tcp昂贵)

HTTP 1.0 服务器每次都和客户端连接关闭。(可设置不关闭)

HTTP 1.1服务器每次都和客户端连接关闭。

2.Transfer-Encoding:传输编码,更快的传输,让用户更快的看到内容

Transfer-Encoding:chunked;与Content-Encoding(内容压缩编码)结合

3.缓存最主要的

客户端与服务器之间的对话:

请求->响应->请求->响应过程:Web.gif->Last-Modified->if-Modifed-since->304 not modefied

HTTP/2(2015)

多路复用

头部压缩(增量压缩)

Server Push(客户端发一个请求,服务器端给多个响应)

优先级(js高优先级,图片低优先级)

浏览器刷新的几种方式:

1.Ctrl+F5 强刷,会忽略所有的缓存:Cache-control: no-cache 2.F5 一般的刷新 3.Enter 级别最低的刷新

需要掌握的:

熟练掌握HTTP中常见的请求、响应头;常见状态码;连接过程

推荐书籍:

HTTP权威指南

高性能的浏览器(hight performation。。。)

HTTP/2

屈屈博客HTTP相关