打开抖音互联网会发生什么 | 青训营笔记

71 阅读5分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记

网络接入

路由发包

  • 同网段:端到端直接发包
  • 跨网段:配置网关路由,获取网段mac发送

ARP协议

  • ARP广播/应答:协议原理
  • 免费ARP:主动广播告知MAC地址
  • ARP代理:虚拟网络/伪造MAC地址

IP协议

  • IPv4:互联网终端节点的唯一标识
  • IPv6:不仅仅是IP地址长度的增加

NAT

  • 通过端口号,扩展了ip,使得一个公网ip可以指向多个机器

网络传输

DNS

DNS会把用户输入的url解析成ip地址

  1. 查找hosts文件
  2. 查看本地DNS缓存
  3. 请求DNS服务器

可以通过bind等工具构建权威DNS服务器

HTTP

  • HTTP比TCP好在哪里:方便
  • HTTP1.1的优化:长连接是重点

HTTPS

HTTP协议使用明文传输,容易被攻击

加密算法:

  • 非对称加密:使用公钥和密钥(如rsa)

  • 对称加密,双方使用同一个密钥

访问ip可能出现的问题

  • 服务器容量小,并发量高时容易崩溃
  • 链路自选,可能链路太长,时间久

解决方法

  • 静态资源:CDN缓存
  • 动态资源:寻找最好路径

四层负载均衡

  1. 四层负载均衡是基于传输层协议包来封装的(如:TCP/IP)

  2. 应用场景

  • 四层+七层来做负载均衡,四层可以保证七层的负载均衡的高可用性;nginx就无法保证自己的服务高可用,需要依赖LVS或者keepalive。

  • tcp协议的负载均衡,有些请求是TCP协议的(mysql、ssh),或者说这些请求只需要使用四层进行端口的转发就可以了,所以使用四层负载均衡。

  • 数据库读写分离负载

  • 跳板机端口映射

  1. 四层负载均衡特点

 1、四层负载均衡仅能转发TCP/IP协议、UDP协议、通常用来转发端口,如:tcp/22、udp/53;

 2、四层负载均衡可以用来解决七层负载均衡端口限制问题;(七层负载均衡最大使用65535个端口号)

 3、四层负载均衡可以解决七层负载均衡高可用问题;(多台后端七层负载均衡能同时的使用)

 4、四层的转发效率比七层的高得多,但仅支持tcp/ip协议,不支持http和https协议;

 5、通常大并发场景通常会选择使用在七层负载前面增加四层负载均衡。

  1. LVS优缺点:

优点

高并发连接:LVS基于内核网络层面工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器,可支持上万并发连接。

稳定性强:是工作在网络4层之上仅作分发之用,这个特点也决定了它在负载均衡软件里的性能最强,稳定性最好,对内存和cpu资源消耗极低。

成本低廉:硬件负载均衡器少则十几万,多则几十万上百万,LVS只需一台服务器和就能免费部署使用,性价比极高。

配置简单:LVS配置非常简单,仅需几行命令即可完成配置,也可写成脚本进行管理。

支持多种算法:支持多种论调算法,可根据业务场景灵活调配进行使用

支持多种工作模型:可根据业务场景,使用不同的工作模式来解决生产环境请求处理问题。

应用范围广:因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等等

缺点:

工作在4层,不支持7层规则修改,机制过于庞大,不适合小规模应用。

工作流程 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP

PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链

IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP

POSTROUTING链通过选路,将数据包发送给Real Server

Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP

Director Server 把RS来到响应包,通过FORWORD 转发给client 在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP

七层负载均衡

七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征, 比如同一个 Web 服务器的负载均衡,除了根据 VIP 加 80 端口辨别是否需要处理的流量, 还可根据七层的 URL、浏览器类别、语言来决定是否要进行负载均衡。

网络提速

  1. http2.0
  • 并发访问多个资源

image.png 2. http3.0

  • 优化多路复用,解决对头阻塞