学习笔记-LEC6-将我的服务开放给用户 | 青训营

186 阅读11分钟

学习笔记-LEC6-将我的服务开放给用户 | 青训营

如何将我的服务开放给用户:构建 API 接口和用户认证的实践指南

【网络与部署 学习资料(上)】字节跳动青训营 - 后端专场 - 掘金

‍⁣⁡⁢⁢⁡‌‍‌⁡⁤‬⁣⁤⁢⁢⁣⁣⁤⁤⁣‍‌⁡⁣⁣‬‬‌‍‍‍⁢⁡⁤⁤⁡‍⁢⁡⁡⁤⁢⁤如何将我的服务开放给用户.pptx - 飞书云文档 (feishu.cn)

1. 接入问题引入

字节接入框架如下(a life request:

image-20230819223018105

2. 企业接入升级打怪之路

域名|DNS|证书

域名系统 对比 Hosts文件

域名系统(DNS)和hosts文件都是用于将人类可读的域名映射到计算机可识别的IP地址的方法,但它们在实现、功能和应用方面有一些重要的区别:

  1. 中央化 vs 分布式:

    • DNS: 域名系统是一种分布式的、层次化的系统,用于将域名映射到IP地址。它通过一系列的域名服务器来实现映射,这些服务器按照层次结构进行组织,从根域名服务器开始,逐级解析域名,直到找到目标域名对应的IP地址。
    • Hosts文件: Hosts文件是一种本地的、分散式的方法,其中包含着域名与IP地址之间的映射。这个文件通常位于操作系统的文件系统中,每个计算机上都有一个独立的Hosts文件。
  2. 规模和性能:

    • DNS: 由于DNS是分布式的,它可以处理全球范围内的大量域名映射。DNS服务器能够缓存查询结果,提高查询性能,并且能够适应互联网上不断变化的域名映射情况。
    • Hosts文件: Hosts文件只影响本地计算机,它适用于小规模的域名映射需求。在大规模网络环境下,维护和更新多台计算机上的Hosts文件会变得复杂和繁琐。
  3. 可管理性:

    • DNS: 域名系统可以由专门的DNS服务器来管理,管理员可以添加、修改和删除域名映射记录,从而实现集中管理和更新。
    • Hosts文件: Hosts文件通常需要在每台计算机上手动维护,这在大规模环境下可能会变得不便,特别是当需要频繁更新或更改域名映射时。
  4. 灵活性:

    • DNS: DNS系统支持各种记录类型,不仅可以映射域名到IP地址,还可以支持其他类型的记录,如邮件服务器记录(MX记录)、别名记录(CNAME记录)等。
    • Hosts文件: Hosts文件只支持简单的域名和IP地址映射,无法支持其他类型的记录。

总的来说,DNS是一种更灵活、可扩展且适用于大规模网络的域名解析系统,而Hosts文件则更适用于小规模环境下的简单域名映射需求。

为什么要自建DNS服务器

  1. 内网域名的解析也得出公网去获取,效率低下
  2. 外部用户看到内网ip地址,容易被hacker攻击
  3. 云厂商权威DNS容易出故障,影响用户体验
  4. 持续扩大公司品牌技术影响力,使用自己的DNS系统

DNS记录类型

DNS支持多种记录类型,每种类型用于存储不同类型的信息。以下是一些常见的DNS记录类型及其用途:

  1. A记录(Address Record) :

    • 用途:将域名映射到IPv4地址。
    • 示例:example.com A 192.168.1.1
  2. AAAA记录(IPv6 Address Record) :

    • 用途:将域名映射到IPv6地址。
    • 示例:example.com AAAA 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  3. CNAME记录(Canonical Name Record) :

    • 用途:

      创建别名,将一个域名映射到另一个域名。别名记录,配置值为别名或主机名,客户端根据别名继续解析以提取IP地址

    • 示例:www.example.com CNAME webserver.example.net

  4. MX记录(Mail Exchange Record) :

    • 用途:指定邮件服务器,用于电子邮件传递。

    • 示例:example.com MX 10 mail.example.com

      意思就是比如发邮件给123@example.com,就会去mail.example.com去查找用户相关,从而收发邮件

  5. TXT记录:

    • 用途:存储文本信息,通常用于验证域名所有权、SPF记录等。
    • 示例:example.com TXT "Some text information"
  6. PTR记录(Pointer Record) :

    • 用途:用于反向DNS查找,将IP地址映射到域名。
    • 示例:1.1.168.192.in-addr.arpa PTR example.com
  7. NS记录(Name Server Record) :

    • 用途:指定域名的DNS服务器。
    • 示例:example.com NS ns1.example.net
  8. SRV记录(Service Record) :

    • 用途:指定提供特定服务的服务器的位置。
    • 示例:sip. tcp.example.com SRV 10 0 5060 sipserver.example.com
  9. CAA记录(Certification Authority Authorization Record) :

    • 用途:限制为特定证书颁发机构颁发证书。
    • 示例:example.com CAA 0 issue "letsencrypt.org"
  10. SOA记录(Start of Authority Record) :

    • 用途:指定区域的授权服务器和相关参数,每个区域只有一个SOA记录。
    • 示例:example.com SOA ns1.example.com admin.example.com 2023082001 7200 3600 1209600 86400

什么是TTL(Time To Live

TTL(Time to Live)是一种网络和计算机术语,用于指定数据包或信息在网络中可以存在的时间长度。TTL的主要作用是防止数据包在网络中无限制地循环传输,从而避免网络拥塞或数据包在网络中永远不会消失的问题。

对称加密和非对称加密

对称加密

简单来说就是双方都用同一个秘钥来进行加解密

非对称加密

有公钥和私钥之分

公钥人人都能获取,对数据进行加密,而私钥只有接收方或者说消息的目标阅读方持有,用来解密

一个例子如下:

  1. 公钥就像是邮箱的地址,每个人都可以知道。这个地址(公钥)可以让其他人(发送者)将信(信息)放入你的邮箱(加密消息)。这意味着任何人都可以用你的地址(公钥)来给你发送信件,但只有你可以打开邮箱(解密消息)。
  2. 私钥就像是你的钥匙,只有你能够拥有。这个钥匙(私钥)是用来打开你的邮箱(解密信息)的,这样你可以读取里面的信件。你不会与任何人分享你的钥匙(私钥),因为只有你才能打开邮箱。

想象一下,Bob想要给Alice发送一个私密消息:

  1. Alice首先生成一对公钥和私钥。她把公钥想象成自己的邮箱地址,然后将这个地址告诉了Bob。
  2. Bob用Alice的公钥(邮箱地址)将他想要发送的消息加密,就好像他把信放进了Alice的邮箱。
  3. Alice用她的私钥(钥匙)打开她的邮箱(解密消息),这样她就可以读取Bob发给她的私密消息。

这样,通过使用非对称加密,Bob可以安全地将消息发送给Alice,因为只有Alice拥有解密消息所需的私钥。同时,其他人即使知道了公钥(邮箱地址),也无法解密消息,因为他们没有对应的私钥(钥匙)。这种方式确保了通信的保密性和安全性。

数字签名|https|SSL|RSA

  • 数字签名

    数字签名是一种用于确保数字信息的真实性、完整性和不可抵赖性的加密技术。它是通过将特定数据(通常是消息的哈希值)用发送者的私钥进行加密,以创建一个加密的数字签名。接收者可以使用发送者的公钥来解密签名,然后与原始数据进行比较,以验证数据是否未被篡改,并且确实由拥有私钥的发送者创建。

  • HTTPS: HTTPS代表“超文本传输安全协议”(Hypertext Transfer Protocol Secure)。它是一种用于在网络上安全传输数据的协议。HTTPS在HTTP协议的基础上添加了加密层,确保数据在传输过程中不被窃听、篡改或伪造。它通常用于保护敏感信息(如登录凭据、信用卡信息等)在用户和网站之间的传输。
  • SSL: SSL代表“安全套接层”(Secure Sockets Layer)。它是一种加密技术,用于在计算机网络上实现安全的通信。SSL使用公钥和私钥来加密和解密数据,从而确保传输的数据在网络上不被窃听。SSL最初是由Netscape开发的,后来逐渐发展成为TLS(传输层安全协议),TLS继承了SSL的概念和机制,并进行了改进。
  • RSA: RSA是一种非对称加密算法,得名于其发明者Ron Rivest、Adi Shamir和Leonard Adleman。RSA使用两个密钥,即公钥和私钥,来实现加密和解密。公钥用于加密数据,私钥用于解密数据。此外,RSA还可用于数字签名,以保证数据的真实性和完整性。RSA在HTTPS中常用于建立安全连接,其中服务器的公钥用于加密会话密钥,而私钥用于解密。

关系:

  • HTTPS是基于HTTP的安全版本,它通过使用加密协议(如SSL或TLS)来保护数据的传输。
  • SSL是早期的加密技术,用于创建安全的连接,但现在更常用的是它的继承者TLS(Transport Layer Security)。
  • RSA是一种加密算法,用于在SSL/TLS等协议中进行加密、解密和数字签名操作,以实现安全的通信和数据传输。RSA在TLS握手过程中用于密钥交换和建立安全通道。

总之,HTTPS使用SSL或TLS协议来保护数据的传输安全,而RSA作为其中的一种加密算法,用于在安全通信中实现加密和解密,以及数字签名等操作。

接入全站加速

解决响应慢、卡顿

静态加速CDN

就像Cache,内存一样,都是用缓存的思想来解决

工作原理

CDN(内容分发网络)的工作原理基于就近访问、缓存和负载均衡等关键概念,旨在提高内容传输的速度、可靠性和性能。以下是 CDN 的工作原理的详细解释:

  1. 就近访问: CDN 在全球范围内设置了多个分布式服务器节点,这些节点位于不同的地理位置。当用户请求访问某个网站上的内容时,CDN 会根据用户的地理位置,选择距离用户最近的服务器节点来响应请求。这样,用户可以从离自己更近的服务器获取内容,减少数据传输的距离,从而降低延迟。
  2. 缓存: CDN 会将静态资源(如图片、CSS、JavaScript 文件等)缓存到各个服务器节点中。当一个用户首次请求某个资源时,CDN 会从源服务器获取该资源,并将其缓存到服务器节点上。在后续用户请求同样资源时,CDN 会直接从缓存中提供资源,避免了从源服务器获取的时间。
  3. 负载均衡: CDN 会智能地将用户的请求分配到不同的服务器节点上,以确保服务器负载均衡。这可以防止某个服务器过载,提高整体性能和可靠性。
  4. 缓存管理: CDN 会根据资源的访问频率和更新频率来管理缓存。静态资源通常有长时间的缓存时间,因为它们不经常改变。然而,当资源更新时,CDN 可以使缓存过期,并从源服务器获取最新的资源。
  5. 动态内容处理: 一些现代的 CDN 还能够处理动态内容。这些 CDN 能够根据用户的请求,实时地生成和提供内容,而不仅仅是缓存静态资源。这样,动态生成的内容也可以在全球分布的节点上进行缓存和分发,提高性能。
  6. 安全性: 一些 CDN 提供了安全功能,如防止 DDoS 攻击和恶意流量过滤,以保护网站免受恶意活动的影响。

总之,CDN 通过将内容缓存在全球多个节点上,实现就近访问和缓存提供,从而提高内容传输速度和性能,降低延迟,减轻源服务器负载,并提供额外的安全性能。

显然,他解决了服务器端的“第一公里”问题

因为会从较近的CDN节点获取内容

image-20230823205944968

DCDN原理

简单来说就是对CDN的一种补充和完善,可以加速获取动态的内容,原理不太一样