http协议和https协议

HTTP协议

1. 简介

  HTTP协议(Hyper Text Transfer Protocol超文本传输协议),是一个基于请求-响应模式的,处于应用层的,建立在TCP上的无状态连接,常基于C/S架构进行通信。整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。一个请求到一个响应的结束称为事务,当一个事务结束后还会在服务端添加一条日志条目。简单来讲,http协议就是服务器和客户端之间进行数据交互的一种形式,且形式多种多样。如果要进行拟人化,那http协议就类似于server和client这两兄弟之间指定的一种交流方式。

2. 常用的请求方式

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支持标准字符集,可以正确传递中文字符。

3. 状态码

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:服务器正忙

4. 请求格式和响应格式

(1) 请求格式

请求格式包含三部分内容:

    请求行:请求方法 | URL路径 | 协议版本 \r\n
    请求头:头部字段名:值 \r\n
   \r\n 请求体(get请求没有请求体)

(2) 响应格式

响应报文的三部分内容:

    状态行:协议版本 | 状态码 | 状态描述 \r\n
    响应头:头部字段名:值 \r\n
\r\n 响应体(HTML文本)

5. url

  统一资源定位符,会从因特网获取信息的五个基本元素包括在一个简单的地址中

  

 

 HTTPS协议

1. 简介

  HTTPS(Secure Hypertext Transfer Protocol),是安全超文本协议,在HTTP上建立SSL加密层,对传输的数据进行加密

2.HTTPS加密技术

  1. 对称密钥加密

        SSL采用的加密技术叫做“共享密钥加密”,也叫作“对称密钥加密”,客户端向服务器发送一条信息,客户端会采用已知的算法对信息进行加密,在传输信息的过程中密钥也会进行加密发送,服务器接收到信息后会用传递过来的密钥对数据进行解密。这种方式看起来安全,但仍有潜在危险,如果被窃听或者信息被劫持,就有可能破解密钥

  2. 非对称密钥加密

  非对称密钥加密需要使用两把锁,一个是私钥,另一个公钥。使用非对称密钥加密时,服务器要预先给客户端一个公钥,让客户端按照这个公钥对数据进行加密,在服务器接收到信息后再用自己的私钥进行解密。这样一来破解的密钥是不会进行传输的,也就避免了被挟持的风险,但非对称密钥加密也有一些缺点:(1) 如何保证服务器向客户端发出公开密钥时,服务器确保收到的是预先要发送的;(2) 效率比较低,处理起来更为复杂,有一定的效率问题会影响通信速度

  3. 证书密钥加密

  在对称密钥加密和非对称密钥加密两种加密方式中,都会有一定的问题,这就引出了公开密钥证书机制。数字证书认证机构是客户端和服务器都相互信赖的第三方机构。

  服务器的开发者携带公开密钥,向数字证书认证机构提出公钥的申请,数字证书认证机构审核申请者的身份,审核通过以后,会对开发者申请的公钥做数字签名,然后分配这个已签名的公开密钥,并将密钥放在证书里面,绑定在一起

  服务器把这个数字证书发送给客户端,因为客户端也认可认证机构,客户端可以通过证书中的数字签名来验证公钥的真伪,确保服务器传过来的公钥是真实的。在一般情况下,证书的数字签名很难被伪造,这取决于认证机构的公信力。一旦确认信息无误之后,客户端就会通过公钥对报文进行加密发送,服务器接收到以后用自己的私钥进行解密。

 

posted @ 2019-04-13 15:01  DF-包子  阅读(319)  评论(0编辑  收藏  举报