美文网首页
HTTP及HTTPS协议原理

HTTP及HTTPS协议原理

作者: 剑道_7ffc | 来源:发表于2020-03-01 11:15 被阅读0次

    http 通信协议的基本原理

    一次 HTTP 请求的通信流程

    客户端向DNS发送域名,DNS返回ip地址
    客户端根据ip找到服务器,服务器返回HTML/JSON等格式的内容

    HTTP 通信协议的组成

    请求 URI 定位资源

    1 通过URI找到资源的位置
    2 http://www.baidu.com:80/java/index.html?name=john#head
    schema://host[:port#]/path/.../?[url-params]#[ query-string]
    scheme 指定应用层使用的协议(例如:http, https, ftp)
    host HTTP 服务器的 IP 地址或者域名
    port# HTTP 服务器的默认端口是 80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/
    path 访问资源的路径
    query-string 查询字符串
    片段标识符(#)(使用片段标识符通常可标记出已获取资源中的子资源(文档内
    的某个位置))

    MIME Type

    标识消息内容类型

    文本文件:text/html,text/plain,text/css,application/xhtml+xml,application/xml
    图片文件:image/jpeg,image/gif,image/png.
    视频文件:video/mpeg,video/quicktime

    Accept和Content-Type

    Accept:客户端希望的消息内容类型
    Content-Type:服务端实际返回的消息内容类型如代码resposne.setContentType(“application/json;charset=utf-8”)
    若Accept和Content-Type内容不一致,则浏览器无法解析

    如果用户访问一个不存在的地址呢?

    状态码:描述请求处理结果


    image.png

    大家见得比较多的错误码:
    200:一切正常
    301:永久重定向
    404:请求资源不存在
    500:服务端内部错误

    告诉服务器端当前请求的意图

    浏览器定义了 8 种方法来表示对于不同请求的操作方式
    GET:获取服务器的资源,一般用于查询操作,URL长度有限制,具体限制有浏览器决定。
    POST:将实体传给服务端,让服务端保存,一般用于创建操作
    PUT:向服务器发送数据,一般用于更新操作
    DELETE:删除,一般用于删除操作
    HEAD:获得报文首部
    OPTIONS:询问支持的方法
    TRACE:追踪路径
    CONNECT:用隧道协议连接代理

    http 协议的完整组成

    请求报文

    请求报文格式包含三个部分,(起始行、首部字段、主体)


    image.png
    响应报文

    响应的报文格式也是一样,分为三部分


    image.png

    Http 协议中的扩展

    如果传输的文件过大怎么办

    1 对文件进行压缩,减少文件大小
    首先服务端需要能支持文件的压缩功能,其次浏览器能够针对被压缩的文件进行解压缩。浏览器可以指定 Accept-Encoding 来高速服务器我当前支持的编码类型
    Accept-Encoding:gzip,deflate;那服务端会根据支持的编码类型,选择合适的类型进行压缩。常见的编码方式有:gzip/deflate


    image.png

    2 分割传输
    在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面。这种把实体主体分块的功能称为分块传输编码

    每次请求都要建立连接吗?

    1 Http1.0的版本


    image.png

    2 Http1.1
    持久连接:连接建立后,客户端或服务端没有明确提出断开连接,则tcp保持连接状态。通过Connection:Keep-Alive表示表示希望将此条连接作为持久连接。默认持久连接是开启的,通过在connection增加close头部来关闭连接,客户端或服务端仍然可以随时关闭空闲连接。
    管道化连接:并行发送多个请求,而不需要一个接一个地等待响应


    image.png

    Http 协议的特点

    Http 无状态协议

    HTTP 协议:不会保存请求和响应之间的通信状态

    如何实现带状态的协议呢?

    通过服务端的session来保存状态,通过浏览器的cookie来传递sessionId


    image.png

    Tomcat 实现 session 的代码逻辑分析

    将sessionId放在cookie内容里


    image.png

    Https 协议基本分析

    https 安全传输协议

    HTTPS和HTTP的区别:Https对传输内容进行加密,而Http则是明文传输。
    通过在Http协议或TCP协议增加SSL层来实现的。
    SSL(Secure Socket Layer,安全层)或者 TLS(Transport Layer Security) 安全层传输协议组合使用用于构造加密通道;


    image.png

    如何去建立一个安全的传输通道

    加密的基础知识

    对称加密

    客户端和服务端拥有一个相同的秘钥S,客户端通过秘钥S对消息内容进行加密,服务端通过秘钥S进行解密


    image.png
    非对称加密

    私钥加密且只有一个,属于服务端;公钥解密,输入客户端。


    image.png
    签名算法

    用于验证是否发生修改如md5。

    整体过程

    使用非对称加密

    主要解决秘钥泄密的问题,服务端将公钥发给每个客户端。

    使用第三方机构

    主要解决通过公钥的定位如是第三方机构的公钥还是中间人的公钥
    1 第三方机构和服务端
    服务端将公钥A发给第三方机构,第三方机构利用私钥对公钥A进行加密并返回给服务端即返回数字证书给服务端。


    image.png

    2 客户端和服务端
    客户端向服务端发送请求公钥的的请求
    服务端返回数字证书
    客户端利用本地的第三方机构的公钥对数字证书进行解密,若解密成功则表示该数字证书来自于第三方机构。

    第三方机构的公钥证书存哪里?

    存在浏览器中,浏览器都会默认内置受信任的数据证书如谷歌浏览器的设置-->高级-->证书

    证书编号

    判断证书有没有被修改过。通过客户端和服务端的证书编号是否相同,证书编号生成规则:服务器内容+md5算法


    image.png
    image.png

    HTTPS原理分析

    image.png

    相关文章

      网友评论

          本文标题:HTTP及HTTPS协议原理

          本文链接:https://www.haomeiwen.com/subject/vwwxkhtx.html