美文网首页php
一次https从请求到返回的过程:

一次https从请求到返回的过程:

作者: zhglance | 来源:发表于2020-08-01 20:42 被阅读0次

    本文以https://www.abc123.com为例。

    1.域名解析:

    1.1 尝试从浏览器DNS缓存获取对应的IP,如果没有获得IP,则执行下一步骤;
    1.2 尝试从操作系统的DNS缓存获取对应的IP,如果没有获得IP,则执行下一步骤;
    1.3 尝试从hosts文件进行域名解析,如果没有获得IP,则执行下一步骤;
    1.4 电信运营商的本地DNS的DNS缓存进行搜索,如果没有获得IP,则执行下一步骤;
    1.5 从运营商的根DNS服务器解析域名,如果是.com返回.com域的IP,如果是.cn返回.cn的域的IP;
    1.6 获得.com的域IP之后,访问.com域的服务器,从.com域服务器返回baidu.com域名的IP。

    获得IP之后,则尝试建立Browser和Server之间的链接。

    2.TCP链接的建立-三次握手:

    TCP链接的建立-三次握手
    TCP链接的建立-三次握手.png

    3.密钥协商:

    3.1 Browser发往服务器的443端口,并携带Browser支持的加密和哈希算法;
    3.2 Server收到请求,选择Browser支持的加密算法和哈希算法,返回Server数字证书(一般是RSA非对称加密的签名);
    3.3 Browser得到Server的数字证书之后,Browser从内置的CA列表中查找对应CA的证书,如果查到,使用CA证书的公钥验证Server的数字证书是否合法,并判断是否已经过期等。如果验证合法,且证书没有过期,则使用Server返回的公钥PKs,否则告警Server的数字证书不可信;
    3.4 Browser生成随机数N(不能使用伪随机数),PKs(N) = m发送给Server;
    3.5 Server使用自己的SKs进行解密,即SKs(PKs(N)) = N;
    3.6 这样Browser和Server获得了同样的一个保密的随机数N,二则将N作为对称加密(如AES,DES等对称加密算法)的密码。

    备注:针对密码学的相关技术,可参考我之前的文章密码学-札记

    4.发送请求:

    Browser的http请求到Server,方法如GET/POST/PUT等。

    5.Server端处理请求:

    5.1 Server读取cache或者数据库DB中的数据,并返回给Browser。

    关于cache和DB数据一致性,缓存失效问题,可参考我之前的文章:
    1.数据库-缓存数据一致性问题;
    2.缓存失效的经典问题;

    6.Browser渲染处理:

    6.1 Browser得到html标签代码,解析html代码中的资源,如js、css、jpg、png等;
    6.2 Browser进行内容渲染,呈现给用户.

    7.TCP链接的释放-四次挥手:

    TCP链接的释放-四次挥手.png

    相关文章

      网友评论

        本文标题:一次https从请求到返回的过程:

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