1.HTTP协议规定,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。
请求报文例子:
GET表示请求访问服务器的类型,称为方法。随后的字符串/index.htm指明了请求访问的资源对象,也叫请求URI。最后的HTTP/1.1,即HTTP的版本号,用来提示客户端使用的HTTP协议功能。
响应报文例子:
HTTP/1.1,即HTTP的版本,200表示请求的处理结果的状态码,OK是原因短语。显示了创建响应的日期时间,是首部字段内的一个属性。之后的内容称为资源实体的主体。
2.HTTP是一种不保存状态,即无状态协议。自身不对请求和响应之间的通信状态进行保存。
为了实现期望的保持状态功能,于是引入了Cookie技术。
3.HTTP方法
GET:获取资源
GET方法用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回响应内容。POST:传输实体主体
POST方法用来传输实体的主体。PUT:传输文件
PUT方法用来传输文件。就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。HEAD:获取报文首部
HEAD方法和GET方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等。DELETE:删除文件
DELETE方法用来删除文件,是与PUT相反的方法。DELETE方法按请求URI删除指定的资源。OPTIONS:询问支持的方法
OPTIONS方法用来查询针对请求URI指定的资源支持的方法。TRACE:追踪路径
TRACE方法是让Web服务器端将之前的请求通信环回给客户端的方法。CONNECT:要求用隧道协议连接代理
CONNECT方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(Secure Sockets Layer,安全套接层)和TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。
4.持久连接和管线化
- 持久连接:只要任意一端没有明确提出断开连接,则保持TCP连接状态。好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,使HTTP请求和响应能够更早结束,提高web页面显示速度。
- 管线化:管线化可以不用等待响应亦可直接发送下一个请求。
5.使用Cookie的状态管理
Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。
服务器端发现客户端发送过来的Cookie后,会去检查究竟是从一个客户端发来的连接请求,然后比对服务器上的记录,最后得到之前的状态信息。