zoukankan      html  css  js  c++  java
  • 网络通信必备基础之SSL握手&DNS解析(三)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680
    本篇文章将继续从以下两个内容来介绍网络通信必备基础:

    • [SSL握手过程详解]
    • [DNS解析]

    一、SSL握手过程详解

    1.1、客户端发出加密通信请求ClientHello

    提供:
    1,协议版本(如TSL1.0)
    2,随机数1(用于生成对话密钥)
    3,支持的加密方法(如RSA公钥加密)
    4,支持的压缩方法

    1.2、服务器回应SeverHello

    回应内容:
    1,确认使用的加密通信协议版本(TSL1.0)
    2,随机数2(用于生成对话密钥)
    3,确认加密方法(RSA)
    4,服务器证书(包含非对称加密的公钥)
    5,(可选)要求客户端提供证书的请求

    1.3、客户端验证证书

    如果证书不是可信机构颁布,或证书域名与实际域名不符,或者证书已经过期,就会向访问者显示一个警告,是否继续通信

    1.4 、客户端回应

    证书没有问题,就会取出证书中的服务器公钥
    然后发送:
    1,随机数3(pre-master key,此随机数用服务器公钥加密,防止被窃听)
    2,编码改变通知(表示随后的信息都将用双方商定的方法和密钥发送)
    3,客户端握手结束通知

    1.5、双方生成会话密钥

    双方同时有了三个随机数,接着就用事先商定的加密方法,各自生成同一把“会话密钥”
    服务器端用自己的私钥(非对称加密的)获取第三个随机数,会计算生成本次所用的会话密钥(对称加密的密钥),如果前一步要求客户端证书,会在这一步验证

    1.6、服务器最后响应

    服务器生成会话密钥后,向客户端发送:
    1,编码改变通知(后面的信息都用双方的加密方法和密钥来发送)
    2,服务器握手结束通知

    至此,握手阶段全部结束,接下来客户端与服务器进入加密通信,用会话密钥加密内容

    二、DNS解析

    我们知道,网络中的大部分通讯都是基于TCP/IP协议的,而TCP/IP协议中有个很重要的协议——IP协议,它是基于IP地址的。我们无法记住大量的IP地址,所以就需要DNS服务器能把域名翻译成IP地址。

    2.1、什么是DNS?

    它所提供的服务是用来将主机名和域名转换为IP地址的工作。我们知道域名和IP地址是一一对应的关系,但是多个域名可以对应同一个IP地址。

     
    19956127-7d0f38f27f9d6335.png
     

    2.2、DNS查询过程

    递归:DNS服务器可使用其自身的资源记录信息缓存来应答查询,也可代表请求客户机来查询或联系其他DNS服务器,以完全解析该名称,并随后将应答返回至客户机。

    迭代:客户机自己也可尝试l联系其他的DNS服务器来解析名称。如果客户机这么做,它会使用基于服务器应答的独立和附加的查询。

    1、在浏览器中输入域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系。
    
    2、如果hosts里没有映射关系,查找本地DNS解析器缓存。
    
    3、如果还是没有,首先会找TCP/IP参数中设置的首选DNS服务器。
    
     
    19956127-bf92268702ce1a98.png
     


    参考https://blog.csdn.net/colinandroid/article/details/79327847
    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680

  • 相关阅读:
    简单爬虫架构解析
    三种urllib实现网页下载,含cookie模拟登陆
    MySQL 从入门到删库
    Python Set
    Python dict
    Python tuple
    Python List
    死锁问题
    线程通信之生产者和消费者案例
    多线程安全和线程同步
  • 原文地址:https://www.cnblogs.com/Android-Alvin/p/12102770.html
Copyright © 2011-2022 走看看