web前端网络知识体系梳理之一:DNS 和 https 的局限性

在这里插入图片描述

写在前面:

(1)写作目的
本篇文章作为一项长期的写作计划进行,主要用于将笔者学习到的零散的web网络知识进行梳理和整合。
(2)知识来源

  • 图解TCP/TP
  • 图解HTTP
  • 优秀的web前端网络文章

你将会了解到:

  • DNS(Domain Name System)域名解析
  • DNS分类与区别
  • http的局限性以及相应的解决方法
  • koa2服务器如何升级成为https
1.DNS(Domain Name System) 域名解析

(1)意义:

网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。

(2)流程
在这里插入图片描述
步骤一:

输入一个域名,比如输入www.163.com,这时,你使用的电脑会发出一个DNS请求到本地DNS服务器。本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动。

步骤二:
查询www.163.com的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地DNS服务器还要向DNS根服务器进行查询。

步骤三:
根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到域服务器上去继续查询,并给出域服务器的地址。

步骤四:
本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器。.com域服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的解析服务器的地址。

步骤五:
最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。

在这里插入图片描述
(3)解析方式

  • 递归查询
    在这里插入图片描述

  • 迭代查询
    在这里插入图片描述

2.DNS 分类与区别

(1)权威DNS:

权威DNS是经过上一级授权对域名进行解析的服务器,同时它可以把解析授权转授给其他人,如COM顶级服务器可以授权dns.com这个域名的的权威服务器为NS.ABC.COM,同时NS.ABC.COM还可以把授权转授给NS.DDD.COM,这样NS.DDD.COM就成了ABC.COM实际上的权威服务器了。平时我们解析域名的结果都源自权威DNS。比如dns.com的权威DNS服务器就是帝恩思的ns1.dns.com ns2.dns.com

(2)递归DNS:

负责接受用户对任意域名查询,并返回结果给用户。递归DNS可以缓存结果以避免重复向上查询。我们平时使用最多的就是这类DNS,他对公众开放服务,一般由网络运营商提供,大家都自己可以架递归DNS提供服务。递归DNS一定要有可靠的互联网连接方可使用。比如谷歌的8.8.8.8和8.8.4.4以及114的114.114.114.114和114.114.115.115都属于这一类DNS。你本地电脑上设置的DNS就是这类DNS。

(3)转发DNS:

可以理解为递归DNS和用户之间的一个中转站,它不提供直接解析域名的服务,它将请求转发给递归DNS,然后将递归DNS的结果转发一下,也提供缓存作用。比如,日常家用的路由器,它的DNS服务器一般都是192.168.1.1,只是转发给递归DNS。

3.DNS域名空间的分层(权威DNS)

(1)根域(Root DNS)

美国VeriSign公司 2台

美国PSINet公司 1台

美国ISI(Information Sciences Institute) 1台

美国ISC(Internet Software Consortium) 1台

美国马里兰大学(University of Maryland) 1台

美国太空总署(NASA) 1台

美国国防部 1台

美国陆军研究所 1台

挪威NORDUnet 1台

日本WIDE(Widely Integrated Distributed Environments)研究计划 1台

网络管理组织IANA(Internet Assigned Number Authority) 1台

欧洲网络管理组织RIPE-NCC(Resource IP Europeens Network Coordination Centre) 1台

(2)顶级域

组织域:.com, .org, .net, 等

国家或地区域:中国的.cn等

其他域:很多,不细分了

4.HTTP协议

(1)HTTP的局限性

  1. 通讯使用明文,未加密,并且 TCP/IP 协议是可能会被窃听的网络,所以通讯内容可能会被窃听
  2. 没有验证通讯方的身份,因此可能会遭遇伪装
  3. 没有办法验证报文的完整性,所以可能会被篡改

(2)如何解决其局限性问题

统一解决上述这些问题: HTTPS = HTTP+ 加密 + 认证 + 完整性保护 = HTTP + SSL(Secure Socket Layer 安全套接层)

在这里插入图片描述

  • https解决明文问题是采用混合密钥加密的方法。即并用共享密钥加密和公开密钥加密

首先,我们来了解一下共享密钥加密(对称密钥加密),要点如下

  • 含义:加密和解密同用一个密钥的方式,称为共享密钥加密(Common key crypto system)
  • 问题:在互联网上转发密钥时,如果通信被监听那么密钥 就可会落入攻击者之手,同时也就失去了加密的意义。

在这里插入图片描述

  • 解决方案:公开密钥加密技术,要点如下:

在这里插入图片描述

  • 使用一对非对称的密钥。一把叫做私有密钥 (private key),另一把叫做公开密钥(public key)。顾名思义,私有密钥不能让其他任何人知道,而公开密钥则可以随意发 布,任何人都可以获得。
  • 发送密文的一方使用对方的公开密钥进 行加密处理
  • 对方收到被加密的信息后,再使用自己的私有密钥 进行解密。
  • 意义:一方面不需要公开传递私钥,避免了密钥被攻击者盗走的风险;另外想根据密文和公开密钥,恢复到信息原文是异常困难的,现有的技术无法破解。

最后需要说明的是,由于建立SSL对于计算机内存占有较高,会导致通信的速度变慢,因此 https 采用的是混合加密机制,即共享密钥加密和公开密钥加密两者并用,在交换密钥环节使用公开密钥加密方式,之后的建立通信交 换报文阶段则使用共享密钥加密方式。
ps:其实现阶段基本上都已经全面拥抱https了


  • https 解决混合加密方式的局限性:证明公开密钥正确性的证书

    首先,混合加密方式仍然存在着一定的局限性,那就是无法证明公开密钥本身就是货真价实的公开密钥,有可能在公开密钥传输途中,真正的公开密钥已经被攻击者替换掉了。
    而相应的解决方案,就是使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书。
    在这里插入图片描述
    下面,以笔者自己配置https的过程为例:
    需要配置的,一共有三个地方:阿里云服务器、koa2服务器应用、服务器

1.配置证书
笔者使用的是阿里云提供的免费SSL证书
在这里插入图片描述
2.申请域名,https一定要与相关的域名绑定

3.安装依赖(笔者使用的是koa2)

npm install koa-sslify https --save

在app.js中引入(笔者在这里只展示有关https配置的代码)

const sslify = require('koa-sslify').default;
const https = require('https')

app.use(sslify());

// bin 目录下 www,找到下载下来的证书文件,然后引入一个你找的到的位置
const options = {
  key: fs.readFileSync('./httpskey/xxx.key'),
  cert: fs.readFileSync('./httpskey/xxx.pem'),
 }

https.createServer(options, app.callback()).listen(3000);


4.nginx配置https

大家可以详细的看一下这篇文章

推荐阅读:


DNS解析过程原理
DNS域名解析过程
Nginx 配置 HTTPS 服务器
DNS分类与区别-权威DNS、递归DNS、转发DNS


感谢阅读,欢迎批评指正,如果觉得还可以的话,麻烦点赞关注,谢谢啦!希望大家能够在追求卓越中不断进步,让优秀成为一种习惯~

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值