从抖音看网络传输 | 青训营

81 阅读2分钟

网络交互

网络接入(打通网络)

路由

从一个接口接收数据包,根据目的地址定向转发到另一个接口
路由不一定对称
如图,从A到H和从H到A可能走不同的路
image.jpeg
路由工作在IP层
路由改MAC地址而非IP地址

找到下一跳的MAC

ARP协议

用于找到下一跳
免费ARP:一个特殊的ARP,让所有服务器重新更新MAC。使用场景为新增服务器或者新增IP
本质上是查找下一跳的MAC而非目标地址的MAC,因为ARP用于逻辑同网段

IP协议

将MAC和其他二级地址统一

NET

家里的路由器可以将多个设备的IP地址结合起来压缩到一个地址,然后发到外网,不同NET之内的IP地址可以相同,解决IPV4的IP不足问题。 NET不止改了IP,还改了端口,避免同一IP同一端口收到相同源的多个请求

网络传输(下载视频)

请求DNS

通过递归解析器来解析,如www.douyin.com ,就是从后往前解析的

DNS传输

通过UDP协议
UDP的结构简单,分配一个头然后塞入数据即可
问题:如何保证可靠性

  1. 避免分片(分片以及合并消耗CPU)
  2. 如何知道是否丢包
  3. ...

TCP三次握手

比较重要的是ack的概念,即期望的下一次seq值

HTTP

本质是TCP,不同是额外加了一些规则

HTTPS

做了个加密,防止中间窃听
加密:先用非对称加密获取密钥,再用对称加密

速度优化

协议优化

HTTP2.0

多路复用,并行下载图片
本质上也是串连的,但有丢包之后等待的问题

QUIC/HTTP3.0

针对丢包后对头阻塞问题

网络路径优化

数据中心分布

image.png POP接入:跟运营商,外网交互的机房

同运营商访问

移动、联通等使用自己的IP接入

静态资源路径优化(CDN)

即将图片视频等缓存在边缘机房中

动态API路径优化(DSA)

如下图,可以计算机房之间的耗时,然后使用算法寻找最优路径(本质上是最短路径问题)
image.png

稳定性优化

容灾

相当于提前把一些故障的解决方法写出来,等出现问题之后就通过容灾程序解决问题

没有容灾的故障

故障止损要先止损,止损方法有容灾或降级

分段排查

客户端(大部分)、服务端、中间链路