1、目的
因笔者参加一公司的面试时,被问及此问题时,一脸懵圈而刻骨铭心,因此作一文为此记录下。
2、 HTTP协议
即超文本传输协议,是互联网常用的通信协议。属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
2.1、HTTP协议内容
HTTP请求由三部分组成,分别是:
(1)请求行:
(2)消息报头;
(3)请求正文。
HTTP响应由四部分组成,分别是:
(1)状态行;
(2)消息报头;
(3)空行;
(4)响应正文;
2.2 HTTP请求方法
HTTP 1.0包括三种请求方法,分别是:
(1)GET:请求指定的页面信息,并返回实体主体。
(2)HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
(3)POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
HTTP 1.1中新增了五中请求方法:
(1)OPTIONS: 允许客户端查看服务器的性能;
(2)PUT: 从客户端向服务器传送的数据取代指定的文档的内容;
(3)DELETE:请求服务器删除指定的页面;
(4)TRACE:回显服务器收到的请求,主要用于测试或诊断;
(5)CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
3、HTTPS
HTTPS是安全的HTTP通道,即在HTTP通信中加入了SSL层,通信的数据被加密了,防止被窃取,具体的通信流程如下:
HTTP和HTTPS的区别如下:
(1)https协议需要到ca申请证书,一般免费证书很少,需要交费。
(2)http的信息是明文传输,https 则是具有安全性的ssl加密传输协议。
(3)http和https用的端口不一样,前者是80,后者是443。
(4)http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
4、不同版本的区别
4.1、HTTP 0.9 :
(1)、只接受GET一种请求方法,没有在通信中指定版本号,且不支持请求头;
(2)、此外该版本也不支持POST方法,因此客户端无法向服务器传递太多信息;
4.2、HTTP 1.0:
(1)、支持POST、GET、HEAD三种方法;
(2)、规定浏览器与服务器之间只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求;
4.3、HTTP 1.1:
(1)、新增了五种请求方法:PUT、DELETE、CONNECT、TRACE、OPTIONS;
(2)、HTTP 1.1 在Request消息头里头多了一个Host域,便于一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点;
(3)、在HTTP/1.1中新增了24个状态响应码:
100-199 用于指定客户端应相应的某些动作。
200-299 用于表示请求成功。
300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。
400-499 用于指出客户端的错误。
500-599 用于支持服务器错误。