网络交互
网络接入(打通网络)
路由
从一个接口接收数据包,根据目的地址定向转发到另一个接口
路由不一定对称
如图,从A到H和从H到A可能走不同的路
路由工作在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的结构简单,分配一个头然后塞入数据即可
问题:如何保证可靠性
- 避免分片(分片以及合并消耗CPU)
- 如何知道是否丢包
- ...
TCP三次握手
比较重要的是ack的概念,即期望的下一次seq值
HTTP
本质是TCP,不同是额外加了一些规则
HTTPS
做了个加密,防止中间窃听
加密:先用非对称加密获取密钥,再用对称加密
速度优化
协议优化
HTTP2.0
多路复用,并行下载图片
本质上也是串连的,但有丢包之后等待的问题
QUIC/HTTP3.0
针对丢包后对头阻塞问题
网络路径优化
数据中心分布
POP接入:跟运营商,外网交互的机房
同运营商访问
移动、联通等使用自己的IP接入
静态资源路径优化(CDN)
即将图片视频等缓存在边缘机房中
动态API路径优化(DSA)
如下图,可以计算机房之间的耗时,然后使用算法寻找最优路径(本质上是最短路径问题)
稳定性优化
容灾
相当于提前把一些故障的解决方法写出来,等出现问题之后就通过容灾程序解决问题
没有容灾的故障
故障止损要先止损,止损方法有容灾或降级
分段排查
客户端(大部分)、服务端、中间链路