学习笔记-LEC6-将我的服务开放给用户 | 青训营
如何将我的服务开放给用户:构建 API 接口和用户认证的实践指南
【网络与部署 学习资料(上)】字节跳动青训营 - 后端专场 - 掘金
如何将我的服务开放给用户.pptx - 飞书云文档 (feishu.cn)
1. 接入问题引入
字节接入框架如下(a life request:
2. 企业接入升级打怪之路
域名|DNS|证书
域名系统 对比 Hosts文件
域名系统(DNS)和hosts文件都是用于将人类可读的域名映射到计算机可识别的IP地址的方法,但它们在实现、功能和应用方面有一些重要的区别:
-
中央化 vs 分布式:
- DNS: 域名系统是一种分布式的、层次化的系统,用于将域名映射到IP地址。它通过一系列的域名服务器来实现映射,这些服务器按照层次结构进行组织,从根域名服务器开始,逐级解析域名,直到找到目标域名对应的IP地址。
- Hosts文件: Hosts文件是一种本地的、分散式的方法,其中包含着域名与IP地址之间的映射。这个文件通常位于操作系统的文件系统中,每个计算机上都有一个独立的Hosts文件。
-
规模和性能:
- DNS: 由于DNS是分布式的,它可以处理全球范围内的大量域名映射。DNS服务器能够缓存查询结果,提高查询性能,并且能够适应互联网上不断变化的域名映射情况。
- Hosts文件: Hosts文件只影响本地计算机,它适用于小规模的域名映射需求。在大规模网络环境下,维护和更新多台计算机上的Hosts文件会变得复杂和繁琐。
-
可管理性:
- DNS: 域名系统可以由专门的DNS服务器来管理,管理员可以添加、修改和删除域名映射记录,从而实现集中管理和更新。
- Hosts文件: Hosts文件通常需要在每台计算机上手动维护,这在大规模环境下可能会变得不便,特别是当需要频繁更新或更改域名映射时。
-
灵活性:
- DNS: DNS系统支持各种记录类型,不仅可以映射域名到IP地址,还可以支持其他类型的记录,如邮件服务器记录(MX记录)、别名记录(CNAME记录)等。
- Hosts文件: Hosts文件只支持简单的域名和IP地址映射,无法支持其他类型的记录。
总的来说,DNS是一种更灵活、可扩展且适用于大规模网络的域名解析系统,而Hosts文件则更适用于小规模环境下的简单域名映射需求。
为什么要自建DNS服务器
- 内网域名的解析也得出公网去获取,效率低下
- 外部用户看到内网ip地址,容易被hacker攻击
- 云厂商权威DNS容易出故障,影响用户体验
- 持续扩大公司品牌技术影响力,使用自己的DNS系统
DNS记录类型
DNS支持多种记录类型,每种类型用于存储不同类型的信息。以下是一些常见的DNS记录类型及其用途:
-
A记录(Address Record) :
- 用途:将域名映射到IPv4地址。
- 示例:example.com A 192.168.1.1
-
AAAA记录(IPv6 Address Record) :
- 用途:将域名映射到IPv6地址。
- 示例:example.com AAAA 2001:0db8:85a3:0000:0000:8a2e:0370:7334
-
CNAME记录(Canonical Name Record) :
-
用途:
创建别名,将一个域名映射到另一个域名。别名记录,配置值为别名或主机名,客户端根据别名继续解析以提取IP地址
-
示例:www.example.com CNAME webserver.example.net
-
-
MX记录(Mail Exchange Record) :
-
用途:指定邮件服务器,用于电子邮件传递。
-
示例:example.com MX 10 mail.example.com
意思就是比如发邮件给123@example.com,就会去mail.example.com去查找用户相关,从而收发邮件
-
-
TXT记录:
- 用途:存储文本信息,通常用于验证域名所有权、SPF记录等。
- 示例:example.com TXT "Some text information"
-
PTR记录(Pointer Record) :
- 用途:用于反向DNS查找,将IP地址映射到域名。
- 示例:1.1.168.192.in-addr.arpa PTR example.com
-
NS记录(Name Server Record) :
- 用途:指定域名的DNS服务器。
- 示例:example.com NS ns1.example.net
-
SRV记录(Service Record) :
- 用途:指定提供特定服务的服务器的位置。
- 示例:sip. tcp.example.com SRV 10 0 5060 sipserver.example.com
-
CAA记录(Certification Authority Authorization Record) :
- 用途:限制为特定证书颁发机构颁发证书。
- 示例:example.com CAA 0 issue "letsencrypt.org"
-
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的主要作用是防止数据包在网络中无限制地循环传输,从而避免网络拥塞或数据包在网络中永远不会消失的问题。
对称加密和非对称加密
对称加密
简单来说就是双方都用同一个秘钥来进行加解密
非对称加密
有公钥和私钥之分
公钥人人都能获取,对数据进行加密,而私钥只有接收方或者说消息的目标阅读方持有,用来解密
一个例子如下:
- 公钥就像是邮箱的地址,每个人都可以知道。这个地址(公钥)可以让其他人(发送者)将信(信息)放入你的邮箱(加密消息)。这意味着任何人都可以用你的地址(公钥)来给你发送信件,但只有你可以打开邮箱(解密消息)。
- 私钥就像是你的钥匙,只有你能够拥有。这个钥匙(私钥)是用来打开你的邮箱(解密信息)的,这样你可以读取里面的信件。你不会与任何人分享你的钥匙(私钥),因为只有你才能打开邮箱。
想象一下,Bob想要给Alice发送一个私密消息:
- Alice首先生成一对公钥和私钥。她把公钥想象成自己的邮箱地址,然后将这个地址告诉了Bob。
- Bob用Alice的公钥(邮箱地址)将他想要发送的消息加密,就好像他把信放进了Alice的邮箱。
- 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 的工作原理的详细解释:
- 就近访问: CDN 在全球范围内设置了多个分布式服务器节点,这些节点位于不同的地理位置。当用户请求访问某个网站上的内容时,CDN 会根据用户的地理位置,选择距离用户最近的服务器节点来响应请求。这样,用户可以从离自己更近的服务器获取内容,减少数据传输的距离,从而降低延迟。
- 缓存: CDN 会将静态资源(如图片、CSS、JavaScript 文件等)缓存到各个服务器节点中。当一个用户首次请求某个资源时,CDN 会从源服务器获取该资源,并将其缓存到服务器节点上。在后续用户请求同样资源时,CDN 会直接从缓存中提供资源,避免了从源服务器获取的时间。
- 负载均衡: CDN 会智能地将用户的请求分配到不同的服务器节点上,以确保服务器负载均衡。这可以防止某个服务器过载,提高整体性能和可靠性。
- 缓存管理: CDN 会根据资源的访问频率和更新频率来管理缓存。静态资源通常有长时间的缓存时间,因为它们不经常改变。然而,当资源更新时,CDN 可以使缓存过期,并从源服务器获取最新的资源。
- 动态内容处理: 一些现代的 CDN 还能够处理动态内容。这些 CDN 能够根据用户的请求,实时地生成和提供内容,而不仅仅是缓存静态资源。这样,动态生成的内容也可以在全球分布的节点上进行缓存和分发,提高性能。
- 安全性: 一些 CDN 提供了安全功能,如防止 DDoS 攻击和恶意流量过滤,以保护网站免受恶意活动的影响。
总之,CDN 通过将内容缓存在全球多个节点上,实现就近访问和缓存提供,从而提高内容传输速度和性能,降低延迟,减轻源服务器负载,并提供额外的安全性能。
显然,他解决了服务器端的“第一公里”问题
因为会从较近的CDN节点获取内容
DCDN原理
简单来说就是对CDN的一种补充和完善,可以加速获取动态的内容,原理不太一样