HTTP协议的工作原理
一、HTTP协议用于客户端和服务端之间的通信
1、http协议规定,请求是从客户端发出,最后服务器端相应该请求并返回
2、请求报文是由请求方法,请求URI,协议版本,可选的请求首部字段和内容实体构成。
3、响应报文基本上由协议版本,状态码,解释状态码的原因短语,可选的响应首部字段以及实体主体构成。
4、告知服务器意图的HTTP方法
- GET:获取资源,如果为资源则保持原样返回,如果为程序则返回程序执行后的结果。
- POST:传输实体主体
- PUT:用来传输文件,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。(自身不带验证机制,存在安全问题,一般不使用该方法)
- HEAD:与GET方法类似,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等。
- DELETE:与put相反,表示删除某资源,一般不适用。
- OPTIONS:询问支持的方法。
- TRACE:追踪路径,将web服务器之前等请求通信环给客户端的方法。在MAX-Forwards首部字段中填入数值,每经过一个服务器段,该数字就-1,当数值刚好为0时,就停止继续传输,最后收到请求的服务器则返回状态码200 OK的响应。客户端通过TRACE方法可以查询发送出去的请求是如何被加工的。(不常用)
- CONNECT:要求用隧道协议连接代理,实现用隧道协议进行TCP通信。(使用SSL和TLS)
5、持续连接节省通信量
传统每请求一次就要三次握手连接tcp四次握手断开,但是原来传输量特别小,所以影响不大,但是当下一个html可能包含n多图片,会造成过多无谓大通信量。
- 持久连接:只要任意一段没有明确提出断开连接,则保持TCP连接。HTTP1.1默认所有连接都是持久连接。
- 管线化:曾经是发送请求后需要等待并收到响应,才会发送下一个请求。管线化技术不用等待响应亦可直接发送下一个请求。可以让更多请求更快结束。(速度快很多)
二、使用Cookie的状态管理
http协议本身不保留之前一切的请求和响应报文的信息,这是为了更快地处理大量食物,确保协议的可伸缩性,而特意把HTTP协议设计成如此简单。但是假如用户登陆了某界面,需要保存用户登陆过这个事实该怎么办?于是引入了Cookie技术。于是乎就可以管理状态了。
如果让服务器管理全部客户端状态会成为负担。故引入Cookie技术解决该矛盾:Cookie会根据从服务端发送的响应报文中一个叫做set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie的值发送出去。
服务器发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的纪录,得到最终状态信息。