HTTP、HTTPS区别&详解

HTTP协议版本:

· HTTP1.0(短连接,发一次建立一次)

· HTTP1.1(长连接)

什么是长连接、短连接:

    短连接:客户端和服务端每进行一次HTTP操作,就建立一次连接。任务结束就中断连接,当客户端浏览器访问的某个HTML或者其他类型的Web页面中包含有其他的Web资源,没遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
    长连接:使用长连接的HTTP协议,会再响应头加入这行代码: Connection:keep-alive。再使用长连接的情况下,当一个网页打开完成客户端和服务端用于传输HTTP数据的TCP连接不会关闭,客户都拿再次访问这服务器的时候,会继续使用这一条已经建立的连接。keep-alive不会保持永久连接,它有一个保持时间,可以在不同的服务器软件中设置这个时间。

HTTP协议主要的特点:

    1. 简单快速:客户端向服务器请求数据时,只需要传输请求方法和路径。
    2. 灵活:HTTP协议允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。
    3. 无连接:每次连接只处理一个请求。服务器处理完客户端的请求,并且收到客户端的应答之后,即断开连接。
    4. 无状态:HTTP协议时无状态协议。无状态指的是协议对于事物处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,就必须要重传。
    5. 支持 C/S、B/S

HTTP的工作流程

    1. 首先客户端和服务器需要建立连接,只需要单机某个超链接,HTTP的工作开始。
    2. 建立连接之后,客户端发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、版本号、后边是MIME信息,包括请求修饰符、客户机信息和可能的内容。
    3. 服务器接到请求之后,给予相应的响应信息。其格式为一个状态行,包括信息的协议版本号、一个成功或者失败的代码,后面是MIME信息包括服务器信息,实体信息和可能的内容。
    4. 客户端接收服务器所返回的信息通过浏览器显示在客户的显示屏上,然后客户机与服务器断开连接。

常见HTTP状态码

状态码 含义 详情
200 OK 服务器成功处理了请求
301 永久移动 请求的网页已经永久移动到了新位置。服务器返回响应时,会自动将请求者转到新的位置
302 临时移动 服务器目前从不同的位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
307 临时重定向 服务器目前从不同的位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
400 错误请求 服务器不理解请求的语法
403 禁止 服务器拒绝请求
404 未找到 服务器找不到请求的网页
500 服务器内部错误 服务器遇到错误无法完成请求

HTTP和HTTPS的区别:

区别:
    1. HTTPS需要的ca申请证书,一般免费的证书比较少,需要一定的费用。
        拓展:ca(certification authority)是已构建在公钥基础设施pki(public key infrastructure)基础之上的产生和确定数字证书的第三方可信机构,主要进行身份证书的发放,并按照设计者指定的策略。管理电子证书的正常使用。
    2. HTTP超文本传输是明文传输,HTTPS是具有SSL加密传输协议
    3. HTTP使用80端口,HTTPS使用的是443端口
    4. HTTP连接简单无状态。HTTPS协议是 SSL + HTTP 协议构建的可进行加密传输、身份认证的网络协议,比HTTP安全。
        SSL:(Secure Sockets Layer 安全套接层)及其继承者 传输层安全 (Transport Later Security,TLS)是为了网络通信提供安全及数据完整性的一种安全协议。TLS和SSL在传输层对网络连接进行加密。

HTTP的缺点:

  1. 通信内容为明文,未加密,内容可能会被监听:监听可能发生在互联网通信中的各个环节
  2. 通信双方没有身份验证,可能出现伪装身份的情况,所有人都可以对服务器发起请求
        可以发现,对客户端而言,没有办法确定服务器是否是真的服务器,对于服务器来说,又无法确定自己返回的报文是否真正的被客户端接收到。
    HTTP、HTTPS区别&详解_第1张图片
        所以,服务器的全盘接收的缺点很容易被用来惊醒DOS攻击。
        以客户端为例,客户端在于服务端通信之前需要确定服务器的身份,该身份是一张证书,该证书由值得信赖的第三方颁发,客户端在确认身份之后才进行通信。
  3. 接收的报文的完整性无法确定,可能中途被改动。
    HTTP、HTTPS区别&详解_第2张图片
    服务器在接收到请求之后,会进行响应。但服务器和客户端无法知道报文在途中的传输是否出现问题。很有可能在传输时被其他攻击者进行篡改,报文的完整性遭到破坏。

关于HTTPS

HTTPS就是在发现HTTP缺点的基础上,在HTTP不足的地方给予加强,HTTPS在HTTP的基础上增加了:
    · 通信加密
    · 证书完整
    · 完整性保护

    SSL是如何配合HTTP来达到安全通信的?
        首先我们必须知道的是HTTPS不是一个新的协议,HTTP的通信接口部分采用了SSL协议实现。
HTTP、HTTPS区别&详解_第3张图片
从上面的图片我们可以看出,SSL是独立于HTTP协议的,它同样也可以用于其他协议的加密,如SMTP。

普遍的加密方式

    · 共享密钥加密(对称密钥)
    顾名思义,就是客户端和服务端都拥有一把相同的钥匙,对报文的加密和解密都是用的同意把钥匙,而密钥也需要在通信过程中发给对方,对方才能使用这把密钥来解密。所以,一旦传输的过程中这把钥匙被攻击者获取,报文加密也就失去了意义。
HTTP、HTTPS区别&详解_第4张图片

    · 公开密钥加密
    共享密钥存在着一个很大的问题就是,如何让才能把这把钥匙安全的发送给对方。而公开密钥则很好的解决了这个问题。
    公开密钥加密使用的非对称密钥。一把是公有密钥,一把是私有密钥。公有密钥是对通讯双方公开的,任何人都可以获取,而私有的则不公开。发送方使用这把公有密钥对报文进行加密,接收方则使用私有的密钥进行解密。
HTTP、HTTPS区别&详解_第5张图片

HTTPS采用混合加密机制

    由于公有密钥的机制相对比较复杂,导致其处理速度相对较慢。HTTPS首先是通过公有密钥来对共享密钥进行加密传输。当共享密钥安全的传输给对方之后,双方则使用共享密钥的方式来加密报文,提高效率。

HTTPS的握手机制:

    1. 客户端(浏览器)引起HTTP请求,请求连接服务端,发送支持的加密通信协议(和版本),并且生成一个随机数,后续用于生成“对话密钥”。
    2. 服务端确认加密通信协议(和版本),同时生成一个随机数,后续用于生成“对话密钥”,并且将CA颁发的数字证书,一起发送给客户端。
    3. 客户端收到数字证书后,检测内置的“受信任的根证书颁发机构”,查看解开数字证书的公匙是否存在。
    4. 如果解开数字证书的公匙存在,则使用它解开数字证书,得到正确的服务器公匙,同时再次生成一个随机数,用于服务器公匙加密,并发送给服务器。
    5. 此时本地和服务器同时将三个随机数,根据约定的加密方法进行加密,各自生成本次会话所使用的同一把“会话密钥”。
    6. 到这里,认证阶段已经完毕,数据传输从 非对称加密 换成了 对称加密(因为考虑到性能),接下来所有的数据传输都是使用HTTP协议进行传输,只不过使用了“会话密钥”来加密内容。

图解

HTTP、HTTPS区别&详解_第6张图片

如何选择HTTP和HTTPS

    SSL会使通信的效率降低
        ·通信速率降低:HTTPS除了TCP连接,发送请求、响应之外,还需要SSL通信。整体的通信信息量增加。
        ·加密过程消耗资源:每个报文都需要进行加密和解密的运算处理。比起HTTP会消耗更多的服务器资源。
        ·证书开销:如果想要通过HTTPS进行通信,就必须向认证机构购买证书。
    基于上面的三点,如果我们再通讯中传输的是非敏感的信息,则会较多的选择HTTP协议。而当通信过程中会涉及到个人隐私或其他安全信息时,则会选择HTTPS。当然,访问量也是考虑的因素之一,如果访问量很大,对每个报文都进行加密解密,也会给服务器带来很大的负担。

你可能感兴趣的:(网络)