前端基础知识:URL|http和https的区别

2021年2月2日09:55:34 发表评论 35 views

从 URL 输入到页面展现大致流程概述:

  1. 在浏览器输入 URL;
  2. 浏览器查找域名对应的 IP 地址;
  3. 浏览器根据 IP 地址与服务器建立联系;
  4. 浏览器与服务器通信:浏览器请求,服务器处理请求并呈现页面。

具体流程概述

第一步,在浏览器输入 URL

在地址栏输入相应的 URL 。

第二步,浏览器查找域名对应的 IP 地址

第一步中,我们已经输入了相应的 URL,但浏览器本身并不能识别 URL 是什么,因此从我们输入 URL 开始,浏览器就要进行域名解析来找到对应 IP——DNS 解析是浏览器的实际寻址方式:

  • 查找浏览器缓存——近期浏览过的网站,浏览器会缓存 DNS 记录一段时间 (如果没有则往下) ;
  • 查找系统缓存——从 C 盘的 hosts 文件查找是否有存储的 DNS 信息,查找是否有目标域名和对应的 IP 地址 (如果没有则往下);
  • 查找路由器缓存 (如果没有则往下);
  • 查找 ISP DNS 缓存——从网络服务商(比如电信)的 DNS 缓存信息中查找(如果没有则往下);
  • 经由以上方式都没找到对应 IP 的话,就会向根域名服务器查找目标 URL 对应的 IP,根域名服务器会向下级服务器转达请求,层层下发,直到找到对应的 IP 为止。

第三步,浏览器根据 IP 地址与服务器建立联系

根据IP建立TCP连接(三次握手)

第 2 步中,浏览器通过 IP 寻址找到了对应的服务器,浏览器就将用户发起的 HTTP 请求发送给服务器。

服务器开始处理用户请求:

  • 每台服务器上都会安装处理请求的应用——Web Server;
  • 常见的 Web Server 产品有:Apache 、Nginx 、IIS 和 lighttpd 等;
  • Web Server 可以理解为一个管理者,它不做具体的请求处理,而是会结合配置文件,把不同用户发来的请求委托给服务器上专门处理相应请求的程序(服务器上的相应程序开始处理请求的这一部分,通俗说就是实际后台处理的工作):

后台开发现在有很多框架,但大部分都是按照 MVC(Model View Controller)设计模式搭建的,它将服务器上的应用程序分成 3 个核心部件且分别处理自己的任务,实现输入、处理、输出的分离:

  • 模型(Model)

模型,是将实际开发过程中的业务规则和所涉及的数据格式进行模型化;
应用于模型的代码只需写一次就可以被多个视图重用;
在 MVC 三个部件中,模型拥有最多的处理任务;
一个模型能为多个视图提供数据。

  • 视图(View)

视图是用户看到并与之交互的界面。

  • 控制器(Controller)

作用:接受用户的输入并调用模型(M)和视图(V)去完成用户的需求;
地位:控制器也是处于一个管理者的地位——从视图(V)接收请求并决定调用哪一个模型构件(M)来处理请求,然后再确定用哪个视图(V)来显示模型(M)处理返回的数据。

总而言之:

首先,控制器(C)接收用户的请求,并决定应该调用哪个模型(M)来进行处理;
然后,模型(M)用业务逻辑来处理用户的请求并返回数据;
最后,控制器(C)再用相应的视图(V)来格式化模型(M),进而返回 HTML 字符串给浏览器。

第四步,浏览器与服务器通信

在上边的第 3 步中,服务器返回了 HTML 字符串给浏览器,此时,浏览器将会对其进行解析、渲染并最终绘制网页:

  1. 加载
  • 浏览器对一个 HTML 页面的加载顺序是从上而下的;
  • 浏览器在加载的过程中,同时进行解析、渲染处理;
  • 在这个过程中,遇到 link 标签、image 标签、script 标签时,浏览器会再次向服务器发送请求以获取相应的 CSS 文件、图片资源、JS 文件,并执行 JS 代码,同步进行加载、解析。
  1. 解析、渲染
  • 解析的过程,其实就是生成“”(Document Object Model 文档对象模型);
  • DOM 树是由 DOM 元素及属性节点组成,并且加上 CSS 解析的样式对象和 JS 解析后的动作实现;
  • 渲染:就是将 DOM 树进行可视化表示。
  1. 绘制网页
  • 浏览器通过渲染,将 DOM 树可视化,得到渲染树;
  • 构建渲染树使页面以正确的顺序绘制出来,浏览器遵循一定的渲染规则,实现网站页面的绘制,并最终完成页面的展示。

第五步:关闭TCP连接(四次挥手)

http和https的区别

Http:超文本传输协议(Http,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计Http最初的目的是为了提供一种发布和接收HTML页面的方法。它可以使浏览器更加高效。Http协议是以明文方式发送信息的,如果黑客截取了Web浏览器和服务器之间的传输报文,就可以直接获得其中的信息。

Https:是以安全为目标的Http通道,是Http的安全版。Https的安全基础是SSL。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol),它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol),它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

HTTP与HTTPS的区别

1、HTTP是超文本传输协议,信息是明文传输,HTTPS是具有安全性的SSL加密传输协议。

2、HTTPS协议需要ca申请证书,一般免费证书少,因而需要一定费用。

3、HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样。前者是80,后者是443。

4、HTTP连接是无状态的,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,安全性高于HTTP协议。

https的优点

尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:

1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。

Https的缺点

1)Https协议握手阶段比较费时,会使页面的加载时间延长近。

2)Https连接缓存不如Http高效,会增加数据开销,甚至已有的安全措施也会因此而受到影响;

3)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

4)Https协议的加密范围也比较有限。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: