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

143 阅读4分钟

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

引言

思考:为了让抖音工作,网络需要哪些交互?

image-20220519102532541

1. 刷抖音网络是怎么交互的

  • 网络连接
  • 网络传输

1.1 网络接入-互联网

  • 互联网的接入:网络拓扑的整体认知

    img

1.2 网络接入-路由

路由发包原理:

  • 同网段:配置网段即可默认添加静态路由。获取对端MAC直接发包

img

image-20220519102602692

  • 跨网段:配置网关路由。获取网关MAC地址发包

img

  • 路由改MAC地址,不改IP地址。
  • 动态路由:BGP/OSPF等,路由表在动态变化
  • 路由是网状的,不一定是对称的

img

1.3 网络接入-ARP协议

image-20220519103428054

  • ARP广播/应答:协议原理
  • 免费ARP:主动广播告知MAC地址
  • ARP代理:虚拟网络/伪造MAC地址
  • ARP本质上是寻找下一跳的MAC,不是请求目标地址!

1.4 网络接入-IP协议

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

1.5 网络接入-NAT

img

  • NAT上网:家用路由器
  • NAT出网:机房内网主机上外网
  • NAT原理:注意不仅仅是源地址变换,源端口/校验和/SEQ等都会变化

1.6 网络传输-数据包

数据包:本质上是一段内存,里面存储的内存是有序的,一般是按照TCP/IP的多层协议去封装。拆包/封包都是按照协议去写内存/读内存。

img

一层层封装

img

1.7 网络传输-现请求DNS

DNS递归迭代

image-20220519104547247

img

1.8 网络传输-DNS的传输协议UDP

UDP

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

1.9 网络传输-TCP三次握手

TCP

  • 三次握手:确认传输的序列号/MSS/Option字段,建立连接

  • TCP连接:是一个虚拟的概念,本质上两倍维持一段内存,记录连接状态,就是session

  • TCP传输:理解sequence number/acknowledge number

    • image-20220519105426038
    • image-20220519105746852
  • 丢包重传:理解丢包怎么感知并重传,理解快速重传发生在什么时候

  • 滑动窗口:课后自学

  • 流量控制:课后自学

1.10 网络传输-HTTP/HTTP1.1

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

1.11 网络传输-HTTPS

  • HTTPS的产生背景:加密/可靠/防劫持。HTTPS解密后仍然是HTTP

1.12 网络传输-SSL/TLS握手

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

image-20220519110329632

2. 网络架构怎么给抖音提质

  • 网络提速
  • 网络稳定

2.1 网络提速-HTTP2.0

  • 多路复用:依然有队头阻塞(如果丢包了)

img

2.2 网络提速-怎么理解多路复用/stream

2.3 网络提速-QUIC/HTTP3.0

  • QUIC的产生背景和背后思考:

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

    img

2.4 网络提速-数据中心建设

img

  • 多运营商接入:同运营商内部访问,避免跨运营商的流量
  • 有边缘机房/汇聚机房/中心机房

2.5 网络提速-同运营商访问

image-20220519160923014

2.6 网络提速-静态资源(图片视频)路径优化(CDN)

  • CDN静态缓存系统:边缘机房的建设,优先访问边缘机房,缓存命中视频/图片等静态内容

img

2.7 网络提速-动态API (播放/评论接口)路径优化( DSA)

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

img

image-20220519161207626

因此我们要加强网络稳定

2.8 网络稳定-容灾概念

  • 对容灾的理解

    img

  • 网络容灾的具体案例

    • 机房专线故障:环路容灾,避免某条专线故障导致机房孤岛问题(专线是连接各个机房的网络物理路径)

    img

    • 单机房接入节点故障:DNS容灾,摘除故障的节点-字节GTM系统

    img

    image-20220519161544593

    • 云控容灾:云端交互,服务器/云上下发命令到终端-字节TNC系统

    img

    image-20220519161616913

    场景局限性(web界面用不了)

    • cache容灾:源站不可用,降级到之前的缓存内容-字节TLB/ByteCDN等系统的容灾建设

    img

2.9 网络稳定-故障排查

img

  • 加强故障沟通-故障明确
  • image-20220519162039680
  • 故障止损要在第一时间做(灾备预案的建设)
  • image-20220519162059542
  • 分段排查
  • image-20220519162400589
  • 熟悉常用的故障排查命令
  • image-20220519162545705
  • 故障排查的具体案例

    • 服务端配置异常(健康检查异常)

    img

    • 客户端某个例异常(客户端自己配置错误)

    img

    • 外部运营商故障

    img

    image-20220519162819316

    • 复杂故障的排查:需要抓包,具体问题具体分析

    img

image-20220519162858939

总结

image.png