这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
这里是网络交互后半部分相关部分,主要课程设计的就是计算机网络和实际相结合,加深对于计算机网络理解的一些内容。
接入问题引入
经典问题:输入www.bytedance.com到网页加载出来,经历了哪些过程?
- 域名解析,TCP建连,SSH握手,......
F12开发者模式打开,抓包,浏览器康康,见常便饭了
这里很多请求,重点关注第一条,其他的请求是为了渲染,整个页面的资源获取的昂!!!
字节接入框架
企业介入升级打怪之路
使用域名系统
Host管理
- 看到有很多问题哈!!!
使用域名系统
域名购买与配置迁移
开放外部用户访问
自建DNS服务器
问题
- 内网域名的解析,也要去公网获取,效率低下
- 外部用户看到内网ip地址,容易被hack
- 云厂商权威DNS出了故障,会影响用户体验
- 持续扩大公司品牌技术影响力,使用自己的DNS系统
DNS查询过程
指令:
dig {$domain} + trace
DNS记录类型
- A/AAAA: 指向IP,前面是v4,后面是v6
- CNAME: 别名,配置的值是 别名 or 主机名
- TXT: 文本记录,购买证书需要
- MX: 邮件交换记录,指向邮件交换服务器
- NS: 解析服务器记录,用于指定哪台服务器对于该域名解析
- SOA记录:起始授权机构记录,每个zone有只有唯一的一条SOA记录,SOA描述zone属性以及主要权威服务器的记录。
TTL: 解析记录在local DNS被缓存的时间昂!!!
- 权威NS: ns1.domain.com
- 管理员:admin.example.com
后面是主从模式的一些配置管理项:
- serial number: version num
- refresh interval: slave多长时间会和master版本核对
- 某些支持notify: master多长时间主动向slave进行通知
- retry interval: slave向master获取失败,重新检查间隔
- expiry period: slave没有master响应的情况下,提供权威DNS解析的时间长短
- negative DDL: 针对于local DNS Domain缓存的结果。(例如查询某个网页没有结果,local DNS会缓存,这就是那个缓存的时长昂!!!)
权威DNS系统架构
自己有了自己的Local DNS和权威DNS,就很舒服了。
接入HTTPS协议
HTTP不安全 -> HTTPS
对称和非对称加密
SSL的通信过程
证书链
证书链如何验签:
- 服务器对证书进行信息摘要计算的时候,会得到一个摘要信息(指纹)。
- 上级CA会用自己的私钥,把摘要信息进行加密,得到了数字签名。(这就相当于CA认证了这个网站的信息,是正确的,才会给他加签)
- 连同数字证书和上级CA的信息,发送给客户端。
- 客户端用上级CA的公钥,来解密数字签名,从而得到摘要信息。
CA不可信这么办,哈哈哈哈,裂开了这就是。很复杂的问题昂!!!
接入全站加速
问题
解决方案
静态加速 CDN
- 解决服务端的“第一公里”问题
- 缓解/消除了不同运营商之间的互联的瓶颈造成的问题
- 减轻了各省的出口带宽压力
- 优化了网上热点内容的分布
动态加速 DCDN
- 原理&例子:
可以看到通过计算,节省了40ms昂!!!
- 不同场景:
- 升级后架构:
四层负载均衡
什么是四层负载均衡
常见调度算法原理
FULLNAT
内部如何实现的呢?
RS怎么知道真实的CIP?通过TCP option字段传递,通过特殊的内核模块反解
- 特点:
- 加了四层厚度架构:
七层负载均衡
问题背景
Nginx
- 性能对比:
- 简介:
- 示意图:
- 内部架构:
- Nginx性能为什么这么高呢?事件驱动模型!
- 异步非阻塞:
- Nginx简单调优:
- OS提升Nginx效率:
- 提升CPU效率:
- 提升网络效率:
- 使用七层后的架构:
References
- Ngork:
- 最终架构:
- 课程脑图: