引言
字节跳动公司的网络架构图:注意报文的生命周期
1、域名系统
1.1、host管理
简单直白,将不同域名一一映射在一张host表上:Host->ip
- 流量和负载:用户越多负载会指数级增长
- 名称冲突:无法保证主机名称的唯一性
- 时效性:分发靠员工上传,时效性太差
1.2、使用域名系统
使用域名系统替换hosts文件
- 域名空间被组织成树形结构
- 域名空间通过划分zone的方式进行分层管理
1.3、域名购买与配置
可以去火山或者阿里云上购买,购买的域名一般为二级域名,如:example.com
-
域名报备:一般在云产商处即可进行实名认证并报备
-
修改配置:
清空/etc/hosts,配置/etc/resolv.conf中nameservers为公共DNS迁移原配置,通过控制台添加解析记录即可
1.4、如何开放外部用户访问
方案:租界一个外网ip,专用于外部用户访问网站,将www.example.com 解析到外网ip 100.1.2.3,将该ip绑定到一台物理机上,并发布公网route,用于外部用户访问
2、自建DNS服务器
2.1、问题背景
- 内网域名的解析也得出公网去获取,效率低下
- 外部用户看到内网ip地址,容易被hacker攻击
- 云厂商DNS容易出故障,影响用户体验
- 持续扩大公司品牌技术影响力,使用自己的DNS系统
2.2、DNS查询过程
2.3 DNS记录类型
- A/AAAA: IP指向记录,用于指向IP,前者为IPv4记录,后者为IPv6记录
- CNAME: 别名记录,配置值为别名或主机名,客户端根据别名继续解析以提取IP地址
- TXT:文本记录,购买证书时需要
- MX:邮件交换记录,用于指向邮件交换服务器
- NS:解析服务器记录,用于指定那台服务器对于该域名解析
- SOA 记录:起始授权记录,每个zone有且仅有唯一的一条SOA记录,SOA是描述zone属性以及主要权威服务器的记录
2.4、权威DNS系统架构
一般企业只需要搭建权威DNS,localDNS是可选项 常见的开源DNS:bind、nsd、knot、coredns
- DNS Query
- DNS Responese
- DNS Update
- DNS Notify
- DNS XFR
权威DNS系统架构
3、HTTPS协议
3.1、问题背景
HTTP明文传输,弊端十分明显,为此我们引入了HTTPS,来解决这一问题。
3.2、对称加密和非对称加密
- 对称加密
- 非对称加密:公钥和私钥(更安全)
3.3 SSL的通信过程
- client random
- server random
- premaster secret
- 加密算法协商