HTTP协议(Hyper Text Transfer Protocol超文本传输协议),是一个基于请求-响应模式的,处于应用层的,创建在TCP上的无状态链接,常基于C/S架构进行通讯。整个基本的工做流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动做,服务端收到请求以后,服务端开始处理请求,并根据请求作出相应的动做访问服务器资源,最后经过发送HTTP响应把结果返回给客户端。一个请求到一个响应的结束称为事务,当一个事务结束后还会在服务端添加一条日志条目。简单来说,http协议就是服务器和客户端之间进行数据交互的一种形式,且形式多种多样。若是要进行拟人化,那http协议就相似于server和client这两兄弟之间指定的一种交流方式。算法
GET:用于请求访问已经被URI(统一资源标识符)识别的资源,能够经过URL传参给服务器。
POST:用于传输信息给服务器,主要功能与GET方法相似,多推荐使用POST方式。
PUT:主要用于传输文件,报文主题中包含文件内容,保存到对应的URI位置。
HEAD:获取报文头部,与GET方法相似,只是不返回报文主体,多用于验证URI是否有效。
DELETE:删除文件,与PUT方法相反,删除对应的URI位置文件。
OPTIONS:查询响应的URI支持的HTTP方法。
GET方法和POST方法的区别:安全
(1) get重点在从服务器上获取资源,post重点在向服务器发送数据;
(2) get传输数据是经过URL请求,以 field = value 的形式,放在url以后,并用"?"进行链接,多个请求数据间用"&"链接,好比http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;
post传输数据经过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
(3) Get传输的数据量小,主要受URL长度限制,但效率较高;
Post能够传输大量数据,因此上传文件时只能用Post方式;
(4) get是不安全的,由于url是可见的,可能会泄露私密信息,如密码等;而post较get安全性较高;
(5) get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。而post支持标准字符集,能够正确传递中文字符。服务器
1xx:指示信息--表示请求已接收,继续处理 2xx:成功--表示请求已被成功接收、理解、接受 3xx:重定向--要完成请求必须进行更进一步的操做 4xx:客户端错误--请求有语法错误或请求没法实现 5xx:服务器端错误--服务器未能实现合法的请求 200:请求被正常处理 204:请求被受理但没有资源能够返回 206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中经过Content-Range指定范围的资源。 301:永久性重定向 302:临时重定向 303:与302状态码有类似功能,只是它但愿客户端在请求一个URI的时候,能经过GET方法重定向到另外一个URI上 304:发送附带条件的请求时,条件不知足时返回,与重定向无关 307:临时重定向,与302相似,只是强制要求使用POST方法 400:请求报文语法有误,服务器没法识别 401:请求须要认证 403:请求的对应资源禁止被访问 404:服务器没法找到对应资源 500:服务器内部错误 503:服务器正忙
(1) 请求格式架构
请求格式包含三部份内容:
请求行:请求方法 | URL路径 | 协议版本 \r\n
请求头:头部字段名:值 \r\n
\r\n
请求体(get请求没有请求体)
(2) 响应格式ide
响应报文的三部份内容:
状态行:协议版本 | 状态码 | 状态描述 \r\n
响应头:头部字段名:值 \r\n
\r\n
响应体(HTML文本)
统一资源定位符,会从因特网获取信息的五个基本元素包括在一个简单的地址中post
HTTPS(Secure Hypertext Transfer Protocol),是安全超文本协议,在HTTP上创建SSL加密层,对传输的数据进行加密加密
1. 对称密钥加密url
SSL采用的加密技术叫作“共享密钥加密”,也叫做“对称密钥加密”,客户端向服务器发送一条信息,客户端会采用已知的算法对信息进行加密,在传输信息的过程当中密钥也会进行加密发送,服务器接收到信息后会用传递过来的密钥对数据进行解密。这种方式看起来安全,但仍有潜在危险,若是被窃听或者信息被劫持,就有可能破解密钥spa
2. 非对称密钥加密日志
非对称密钥加密须要使用两把锁,一个是私钥,另外一个公钥。使用非对称密钥加密时,服务器要预先给客户端一个公钥,让客户端按照这个公钥对数据进行加密,在服务器接收到信息后再用本身的私钥进行解密。这样一来破解的密钥是不会进行传输的,也就避免了被挟持的风险,但非对称密钥加密也有一些缺点:(1) 如何保证服务器向客户端发出公开密钥时,服务器确保收到的是预先要发送的;(2) 效率比较低,处理起来更为复杂,有必定的效率问题会影响通讯速度
3. 证书密钥加密
在对称密钥加密和非对称密钥加密两种加密方式中,都会有必定的问题,这就引出了公开密钥证书机制。数字证书认证机构是客户端和服务器都相互信赖的第三方机构。
服务器的开发者携带公开密钥,向数字证书认证机构提出公钥的申请,数字证书认证机构审核申请者的身份,审核经过之后,会对开发者申请的公钥作数字签名,而后分配这个已签名的公开密钥,并将密钥放在证书里面,绑定在一块儿
服务器把这个数字证书发送给客户端,由于客户端也承认认证机构,客户端能够经过证书中的数字签名来验证公钥的真伪,确保服务器传过来的公钥是真实的。在通常状况下,证书的数字签名很难被伪造,这取决于认证机构的公信力。一旦确认信息无误以后,客户端就会经过公钥对报文进行加密发送,服务器接收到之后用本身的私钥进行解密。