首先浏览器解析URL,即对URL进行拆分,然后生成HTTP请求消息,接着借助DNS解析IP地址,解析器取出IP地址写进浏览器指定的内存地址…

HTTP&HTTPS

请描述发起一个http请求的全过程?

  • 首先浏览器解析URL,即对URL进行拆分,然后生成HTTP请求消息

  • 接着借助DNS解析IP地址

    • 首先浏览器调用解析器,由解析器向DNS服务器发送查询消息
    • DNS服务器响应IP地址到解析器
      • DNS服务器的查询属于不同DNS服务器的接力查询
    • 解析器取出IP地址写进浏览器指定的内存地址

      解析器的原理

  • 浏览器将控制流程转移到解析器

  • 解析器生成消息

  • 调用操作系统内部的协议栈发送消息

  • 协议栈通过网卡发送消息到DNS服务器

    协议栈是如何发送消息

  • 协议栈发送消息是基于socket套接字完成的,首先服务端会创建套接字并进入等待的状;

  • 客户端创建套接字后然后从该套接字延伸出管道,最后管道连接到服务端的套接字;

  • 关于套接字的创建其实是一个描述符,进行收发数据的时候,只需要将描述符出示给协议栈看,连接服务器的时候需要指定ip和端口;

HTTP与HTTPS的区别

  • https协议需要到证书颁发机构申请证书,一般免费的证书比较少,因而需要一定的费用;
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议;
  • http和https使用的连接不同,https是在http协议的基础上加上了一层ssl协议,端口也不同,前者是80,https是443;

HTTP的缺点

  • 明文传输,信息容易被窃取;
  • 通信的时候,不会验证通信方的身份,通信方有可能是伪装的;
  • 无法证明报文的完整性,有可能报文在传输的过程中被修改;

HTTPS的加密

对称密钥的加密

此种加密方法是加密和解密使用了同一密钥;双方拥有同一密钥,运算速度快,但是此种方式也有缺点:

  • 客户的数量众多,维护密钥需要一定的成本;
  • 对于不同的客户端,服务器的安全级别不同,有可能导致密钥被泄露;

非对称加密

此种加密方法是将对称加密进行改进,加密和解密使用的密钥是不同的;加密使用公开的密钥,所有人都可获得,解密需要使用私钥,反之亦然;
此外非对称加密还用于签名,因为私钥无法被其它人获取,因此采用私钥对内容加密,然后通信的一方使用发送方的公开密钥进行签名的解密;它的优点是更加的安全,缺点是运算的速度慢,使用私钥进行加密的内容有可能被获取;

HTTPS的加密方式

https是采用的混合加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全,之后使用对称密钥加密通信进行保证通信的效率;

  • 客户端使用公钥进行加密(加密的内容为对称加密需要用到的密钥和加密算法),服务端收到之后使用私钥进行解密
  • 然后服务端和客户端就都有了对称加密的密钥和算法,双方使用对称加密进行通信;

认证

认证是使用客户端和服务端都依赖的第三方认证机构;

  • 服务器首先申请公开密钥,由CA(第三方机构)进行 确认身份,对已经申请的公开密钥做数字签名,然后分配这个签名的公开密钥,并将该密钥放入公开密钥证书后进行绑定;
  • 当进行HTTPS通信 的时候,服务器会把证书发送给客户端,客户端 取得其中的公开密钥,先使用数字签名进行验证,如果验证成功就可以开始通信;