第六课:将我的服务开放给用户 | 青训营

120 阅读6分钟

在这一节课中,我了解了浏览器从 url 的输入到网页加载出来都经历了哪些过程。

大致分为这几个过程:DNS 解析->TCP 建立连接->TLS 握手->HTTP 请求的发送

将我的服务开放给用户,大致分为:域名的配置、DNS的查询、接入https协议、接入全站加速、四层负载均衡、七层负载均衡。

域名的配置

一般去公有云厂商购买域名。在购买完成之后,域名树上就会多了一个域名。在购买域名之后,还需要域名备案。

这样就完成了域名的配置。

DNS 的查询

  1. 当客户端在浏览器中输入域名时,本主机的操作系统会先查看本地的 hosts 文件是否有该域名的映射,如有,则直接使用该映射并返回给浏览器,完成解析。

  2. 如果没有映射,则会查找本地的 DNS 解析器缓存,如果有这个网址映射,则返回给浏览器。

  3. 如果本地的 hosts 和解析器缓存都没有相应的映射关系,则会查找 TCP/IP 参数中的设置的首选 DNS 服务器(本地 DNS 服务器),该服务器收到查询后,则在本地配置区域资源中查看相关的映射,如果有,则返回给客户机,完成域名解析,该解析具有权威性。

  4. 如果本地 DNS 的区域文件和缓存都没有找到相应的解析时,则会看本地 DNS 是否设置了转发器进行查询: 重复 3 的动作,直至找到完整的域名对应的主机。

接入 HTTPS 协议

HTTPS 是一种通过计算机网络进行安全通信的传输协议。

接入 https 是一个比较难的部分,我在这里理解了好几次。

对称加密和非对称加密:

对称加密:使用同一个密钥对数据进行加密和解密,加密和解密的速度较快,但密钥管理困难。常见的对称加密算法有AES、DES等。

非对称加密:使用公钥和私钥对数据进行加密和解密,公钥用于加密,私钥用于解密。非对称加密算法比对称加密算法更安全,因为私钥不易被窃取。常见的非对称加密算法有RSA、ECC等。

SSL的通信过程:

SSL握手阶段:客户端向服务器发送 HELLO 消息,包含客户端支持的加密套件信息,服务器响应 HELLO 消息,选择合适的加密套件,并发送自己的数字证书给客户端。

SSL密钥交换阶段:服务器发送 HELLOagain 消息,包含服务器随机生成的一串字符,客户端使用服务器的公钥对该串字符进行加密,然后发送给服务器。服务器使用私钥解密得到该串字符,这样客户端和服务器就共享了一个密钥。

SSL加密通信阶段:客户端和服务器使用该共享密钥进行加密和解密通信,保证传输数据的安全性。

证书链:

证书链:是指一组数字证书按照一定的顺序连接起来形成的证书链。最上面的是根证书,也就是信任锚,操作系统或浏览器自带的根证书存储中已经预置了这些根证书。中间的是中间证书,最下面是实体证书,包含实体信息。

证书链验证:在 SSL 通信过程中,客户端需要对服务器发送的证书进行验证,验证证书链是否完整、有效、可信。验证过程包括检查证书的有效期、检查证书颁发机构是否可信、检查证书指纹是否一致等。

证书信任锚:在证书链验证过程中,客户端会从根证书存储中查找与服务器证书颁发机构匹配的根证书,如果找到匹配的根证书,就信任该根证书下的所有中间证书和实体证书。如果找不到匹配的根证书,则证书链验证失败,客户端会终止 SSL 连接。

全站加速

如果不使用全站加速,可能会出现以下问题:

  • 源站容量低,可承受的并发请求数低,容易被打垮
  • 报文经过的网络设备越多,出问题的概率越大,丢包、劫持、mtu 等问题
  • 自选网络链路长,延时高

全站加速有静态加速 CDN 和动态加速 DCDN 。

静态加速 CDN

无需再访问源站,访问 CDN 站点就能够获取到静态资源,同时也能够减轻源站的服务器压力。

动态加速 DCDN

针对 POST 等非静态请求不能再用户边缘缓存的业务,基于智能选路技术,从众多回源路线中择优选择一条路线进行传输,极大的提高了效率

四层负载均衡

四层负载均衡是基于 IP + 端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡地落到后端服务器上。

常见调度算法原理

  • RR 轮询:将所有请求平均分配给每个真实服务器 RS
  • 加权 RR 轮询:给每一个后端服务器一个权值比例,将请求按照比例分配
  • 最小连接:把最新的连接请求分配到当前连接数最小的服务器
  • 五元组 hash:根据 sip、sport、proto、dip、dport 对静态分配地服务器做散列取 缺点:当某个后端服务器出现故障,那么所有的连接都需要重新计算,影响了整个 hash 环
  • 一致性 hash:只影响故障服务器上地连接 session,其余服务器上的链接不受影响

七层负载均衡

七层负载均衡是在网络应用层上进行的负载均衡,它通过分析网络流量中的应用层信息(如URL、浏览器类型、语言等)来决定是否进行负载均衡。

七层负载均衡能够更加灵活地处理用户需求,并可根据应用层的特征进行更精细的负载均衡策略设置。例如,可以根据不同的URL或浏览器类型将用户请求转发到不同的服务器组,从而实现更精细的流量控制。

四层负载均衡和七层负载均衡各有其优缺点,应根据具体应用场景选择合适的负载均衡策略

总结

这一节课基本讲的全部是概念知识,关于系统的熟悉和学习到企业级网络接入核心组件及基本原理等等,虽然很难以理解,不过也让我很清晰的了解了各种网站的背后运行机制,我觉得还是很有必要重复观看,反复琢磨。