01. 接入问题
抓包,分为4个过程:DNS -> TCP -> TLS -> HTTP请求
02. 企业接入升级打怪之路
2.1 域名系统
假设example公司需要注册一个域名。
2.1.1 Host管理
管理Host到ip的映射。
Host局限:当公司业务规模和员工数量增长时,流量和负载、名称冲突、时效性都会出问题。
2.1.2 使用域名系统
使用域名系统来替换hosts文件
被组织为树型结构,全球公共域名空间仅对应一棵树。域名组成格式为:[a-zA-Z0-9],以点划分label。
顶级域gTLD:general Top-level Domains:
- .gov 政府
- .edu 教育
- .com 商业
- .mil 军事
- .org 非盈利组织
2.1.3 域名购买与配置迁移
可以在火山引擎等网页进行域名购买。此时,二级域名多了一个example。
但购买后该域名不可以直接使用,需要在云厂商处进行实名认证并备案。
之后,进行配置的修改:
- 清空
/etc/hosts - 配置
/etc/resolv.conf中nameservers为公共DNS - 通过控制台添加解析记录来迁移原配置
2.1.4 如何开发外部用户访问
族人一个外网ip,专用于外部用户访问门户网站,将www.example.com解析到外网ip100.1.2.3,并将ip绑定到一台物理机上,发布公网route,用于外网的用户访问。
2.2 自建DNS服务器
2.2.1 问题
- 内网域名的解析也需要出公网去获取,效率低。
- 外部用户可以看到内外ip地址,有被hacker攻击的风险。
- 云厂商权威DNS容易出故障。
2.2.2 DNS查询过程
2.2.3 DNS记录类型
- A/AAAA:IP指向记录,用于指向IP,前者为IPv4记录,后者为IPv6记录。
- CNAME:别名记录。
- TXT:文本记录,购买证书时需要。
- MX:邮件交换记录,用于指向邮件交换服务器。
- NS:解析服务记录,用于指定哪台服务器对于该域名解析。
- SOA记录:起始授权机构记录。
2.2.4 权威DNS系统架构
例如,要访问www.example.com,那么首先会解析这个地址,然后Local DNS会向自建权威DNS服务器发起请求,最终会拿到ip地址100.1.2.3,最后用户访问100.1.2.3把请求打到公司的机房内部,从而获取HTTP请求的结果。
2.3 HTTPS协议
2.3.1 出现问题
弹窗广告、页面出现白页、搜索不了东西等
因为HTTP是明文传递,请求的时候可能被篡改。
升级版:从HTTP变成HTTPS
2.3.2 对称加密和非对称加密
对称加密:一份密钥,即双方使用相同的密钥。但由于客户端和服务端使用相同的密钥,那么也就是说在传输文件前双方需要先传输密钥,这个就可能造成密钥泄露。
非对称加密:公钥和私钥。即如果使用公钥对数据进行加密,那么使用私钥对数据进行解密。如果使用私钥对数据进行加密,那么使用公钥对数据进行解密。
2.3.3 SSL通信过程
对称密钥session key,双方使用session key进行数据传输。
2.3.4 证书链
公钥是存在证书链中的。
整数摘要信息,也就是指纹。对其进行加密,形成数字签名。服务器会把数字签名连同上级的CA发给客户端,客户端使用上级CA公钥对信息进行解密,如果解密成功,则摘要信息没有错误,保证了数据的安全性。
2.4 接入全站加速
2.4.1 问题背景
外网用户访问站点,如果源站容量低,那么用户可能无法访问。如果报文经过的网络设备越多,那么出现丢包、劫持等问题概率越大。时延高。
2.4.2 解决方案
| 出现的问题 | 解决方案 |
|---|---|
| 源站容量问题 | 增加后端机器扩容;静态内容使用静态加速缓存 |
| 网络传输问题 | 动态加速DCDN |
全站加速:静态加速 + 动态加速
2.4.3 静态加速 CDN
静态文件:如图片、文字、安装包、压缩包等。
静态加速本质上是缓存。
它解决了服务器端“第一公里”问题,缓解甚至消除不同运行商之间互联的影响,减轻了各省的出口宽带压力,优化网络热点内容的分布。
2.4.4 动态内容 DCDN
终端用户在发送请求的时候会通过DCDN节点进行传输,当有数据拥堵的时候就选择别的DCDN节点。最终将数据传输到源站。
2.4.5 DCDN原理
越往中心,节点越少,容量越小,越远离用户。
越往边缘,节点越多,容量越大,越靠近用户。
2.4.6 使用全站加速
- 用户首次登录抖音,注册用户名手机号等用户信息。 动态加速DCDN
- 抖音用户点开某个特定的短视频加载后观看。 静态加速CDN
- 用户打开头条官网进行网页浏览。 静态加速CDN + 动态加速DCDN 因为第一条请求是使用动态加速的,后面显示的内容是静态加速的
2.5 四层负载均衡
2.5.1 什么是4层负载均衡?
基于IP + 端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡地落到后端服务器上。
三个主要功能:
- 解耦vip和rs
- NAT
- 防攻击: syn proxy
2.5.2 常见的调度算法原理
RR轮询,Round Robin,将所有请求平均分配给每个真实服务器RS。
加权RR轮询,给美国后端服务器一个权值比例,将请求按照比例分配。
最小连接,把新的连接请求分配到当前连接数最小的服务器。
2.5.3 常见实现方式 FULLNAT
2.5.4 4层负载均衡特点
大部分是通过dpdk技术实现;纯用户态协议栈,kernel bypass,消除协议栈瓶颈;无缓冲、零拷贝、大页内存;小宝转发可达到限速,可承受高cps。
2.5.5 使用四层负载均衡
2.6 七层负载均衡
2.6.1 Nginx 简介
使用最广泛的7层负载均衡。
通过模块化设计;基于master/worker架构设计;支持不停机更新配置文件、更换日志文件、更新服务器二进制;较低的内存消耗;事件驱动为异步非阻塞模型,支持aio、mmap。
2.6.2 Nginx 反向代理示意图
03. 动手实践
3.1 如何将本地服务开放到外网访问
可以使用Ngrok, Expose your localhost to the web
使用命令:./jgrok http example.com:8082
04. 参考资料
05. 小结
课程最后老师还留了大作业,如果有同学写了,麻烦在评论区留下言,我想学习学习。