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

79 阅读3分钟

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

以刷抖音时的底层互联网交互作为切入点,回顾计算机网络的相关知识,并结合实际生产环境去理解网络的优化方向和稳定性建设。

网络接入

路由发包原理:

  • 同网段:配置网段即可默认添加静态路由。获取对端MAC直接发包
  • 跨网段:配置网关路由。获取网关MAC地址发包
  • 路由是网状的,不一定是对称的
  • 路由改的是MAC地址

ARP 协议

  • 逻辑同网段才能发送ARP
  • ARP请求广播,应答单播
  • 免费ARP:局域网内增加机器(IP)自动发送
  • ARP代理:虚拟网络/伪造MAC地址

IP协议

  • 互联网终端节点的唯一标识

NAT协议

  • IP地址不够用的解决方法之一
  • 不仅仅是源地址变换,源端口/校验和/SEQ等都会变化

网络传输

DNS协议

UDP协议

  • 协议简单
  • 需要考虑可靠性的场景使用复杂

TCP协议

  • 三次握手
  • TCP连接
  • TCP传输:理解sequence number/acknowledge number
  • 丢包重传
  • 滑动窗口
  • 流量控制/拥塞控制

HTTP协议

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

HTTPS协议

  • SSL/TLS握手:非对称加密/对称加密

网络提速

协议优化

HTTP2.0 多路复用

  • 多路复用:依然有队头阻塞

QUIC/HTTP3.0

  • 为什么在用户态实现?内核的更新迭代频率较低,不好推广
  • 为什么用UDP?TCP的队头阻塞问题不好解决,推倒重来&复用所有操作系统基本都支持的底层协议

网络路径优化

数据中心建设

  • 多运营商接入:同运营商内部访问,避免跨运营商的流量
  • 有边缘机房/汇聚机房/中心机房 CDN静态缓存系统:边缘机房的建设,优先访问边缘机房,缓存命中视频/图片等静态内容

DSA动态加速系统:分四层/七层动态加速。核心在于利用可控节点做路径探测和规划。

网络稳定

网络容灾

故障发生 - 故障感知 - 自动切换 - 服务恢复

案例:

  • 机房专线故障:环路容灾,避免某条专线故障导致机房孤岛问题(专线是连接各个机房的网络物理路径)
  • 单机房接入节点故障:DNS容灾,摘除故障的节点
  • 云控容灾:云端交互,服务器/云上下发命令到终端
  • cache容灾:源站不可用,降级到之前的缓存内容

故障排查

故障明确 - 故障止损 - 分段排查

  • 加强故障沟通
    • 什么业务/接口故障
    • 故障体现在哪里
    • 访问其他目标是否正常
    • 是否是修改导致的异常
  • 故障止损要在第一时间做(灾备预案的建设)
  • 分段排查
    • 客户端排查:访问其他服务/其他客户端访问目标服务
    • 服务端排查:监控/指标
    • 中间链路排查:网络设备
  • 常用的故障排查命令
    • dig 查询 DNS 问题
    • ping/telnet/nmap 查询三层/四层连通性
    • traceroute 排查中间链路
    • iptables
    • tcpdump

案例

  • 服务端配置异常(健康检查异常)
  • 客户端某个例异常(客户端自己配置错误)
  • 外部运营商故障