网络初探 | 青训营笔记

79 阅读6分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

这里是网络交互后半部分相关部分,主要课程设计的就是计算机网络和实际相结合,加深对于计算机网络理解的一些内容。

接入问题引入

经典问题:输入www.bytedance.com到网页加载出来,经历了哪些过程?

  • 域名解析,TCP建连,SSH握手,......

image-20230119161159726

F12开发者模式打开,抓包,浏览器康康,见常便饭了

这里很多请求,重点关注第一条,其他的请求是为了渲染,整个页面的资源获取的昂!!!

image-20230119161437145

字节接入框架

image-20230119161517283

企业介入升级打怪之路

使用域名系统

Host管理

image-20230119161711507

  • 看到有很多问题哈!!!

使用域名系统

image-20230119162025818

域名购买与配置迁移

image-20230119162107103

开放外部用户访问

image-20230119162148210

自建DNS服务器

问题

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

DNS查询过程

image-20230119162356627

image-20230119162443281

指令:dig {$domain} + trace

DNS记录类型

  • A/AAAA: 指向IP,前面是v4,后面是v6
  • CNAME: 别名,配置的值是 别名 or 主机名
  • TXT: 文本记录,购买证书需要
  • MX: 邮件交换记录,指向邮件交换服务器
  • NS: 解析服务器记录,用于指定哪台服务器对于该域名解析
  • SOA记录:起始授权机构记录,每个zone有只有唯一的一条SOA记录,SOA描述zone属性以及主要权威服务器的记录。

image-20230119163002180

TTL: 解析记录在local DNS被缓存的时间昂!!!

image-20230119163142770

  • 权威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系统架构

image-20230119163750486

image-20230119163826263

自己有了自己的Local DNS和权威DNS,就很舒服了。

接入HTTPS协议

HTTP不安全 -> HTTPS

对称和非对称加密

image-20230119164024140

SSL的通信过程

image-20230119164141568

证书链

image-20230119164503918

证书链如何验签:

  • 服务器对证书进行信息摘要计算的时候,会得到一个摘要信息(指纹)。
  • 上级CA会用自己的私钥,把摘要信息进行加密,得到了数字签名。(这就相当于CA认证了这个网站的信息,是正确的,才会给他加签)
  • 连同数字证书和上级CA的信息,发送给客户端。
  • 客户端用上级CA的公钥,来解密数字签名,从而得到摘要信息。

image-20230119170215659

CA不可信这么办,哈哈哈哈,裂开了这就是。很复杂的问题昂!!!

接入全站加速

问题

image-20230119170431193

解决方案

image-20230119170456066

静态加速 CDN

image-20230119170601580

  • 解决服务端的“第一公里”问题
  • 缓解/消除了不同运营商之间的互联的瓶颈造成的问题
  • 减轻了各省的出口带宽压力
  • 优化了网上热点内容的分布

动态加速 DCDN

image-20230119170916396

  • 原理&例子:

image-20230119171140345

可以看到通过计算,节省了40ms昂!!!

  • 不同场景:

image-20230119171248314

  • 升级后架构:

image-20230119171321704

四层负载均衡

image-20230119172713627

什么是四层负载均衡

image-20230119172943456

image-20230119173632883

常见调度算法原理

image-20230119173135808

FULLNAT

内部如何实现的呢?

image-20230119173435213

RS怎么知道真实的CIP?通过TCP option字段传递,通过特殊的内核模块反解

  • 特点:

image-20230119173548910

  • 加了四层厚度架构:

image-20230119173706965

七层负载均衡

问题背景

image-20230119173808391

Nginx

image-20230119173829576

  • 性能对比:

image-20230119173851264

  • 简介:

image-20230119173920828

  • 示意图:

image-20230119173953957

  • 内部架构:

image-20230119174014176

  • Nginx性能为什么这么高呢?事件驱动模型!

image-20230119174254712

  • 异步非阻塞:

image-20230119174319135

  • Nginx简单调优:

image-20230119174338265

  • OS提升Nginx效率:

image-20230119174429369

  • 提升CPU效率:

  • 提升网络效率:

image-20230119174552546

  • 使用七层后的架构:

image-20230119174624849

References

  1. Ngork:

image-20230119175305805

  1. 最终架构:

image-20230119175331720

  1. 课程脑图:

image-20230119175410474