打开抖音会发生什么笔记整理 | 青训营

101 阅读4分钟

打开抖音涉及到的网络传输

  • 域名解析DNS
  • 图片下载/视频下载/评论API:HTTP

网络交互

1、网络接入

  • 终端(手机)→wifi→有线网络→运营商网络→服务器/机房
  • 客户端和服务器之间:路由
  • IP在同一掩码下:同网段
  • 同网段:交换机→SDN(虚拟同网段)
跨网段如何发包交互??

依靠路由(路由不一定是对称的);路由协议是传输层的协议;路由改的是MAC地址,没有改IP地址

ARP协议

image.png

  1. 逻辑同网段才能发送ARP
  2. ARP请求广播,ARP应答单播
  3. 免费ARP:局域网加入一个新机器,其他机器没有缓存,要往这个新机器发包会耗时。会直接发送一个ARP对其他机器进行刷新。IPv6防止IP冲突,新增机器时,发送一个免费ARP提前判断IP是否冲突.
  4. ARP代理发送ARP时会抢先应当

ARP本质是寻找下一跳的MAC

IP协议
  1. 唯一标识,互联网通用。抖音客户端一个,抖音服务端一个
  2. Mac地址不能代替IP地址(统一不同协议)
  3. IPv4不够用一般怎么解决?

解决方案:NAT(改的是IP和端口)

image.png

2、网络传输

DNS协议先请求(将域名解析成ip)

递归迭代:

递归DNS解析式

  1. 先请求com
  2. 再请求douyin.com
  3. 再请求www.douyin.com

image.png

UDP协议

想发什么包就分配一个UDP的头把payload里面赛数据发出去就好

TCP协议

什么是TCP连接?

三次握手

Sequence number:表示的是我方这个packet的数据部分的第一位应该在整个datastream中所在的位置

Acknowledge number:表示的时期望对方的下一次Sequence number是多少。注意,SYN。FIN的传输虽然没有多少data但是还是会让下一次传输的packet seq增加一,但是,ACK的传输,不会让下一次传输的packet加一。

  • 和timewait冲突时直接去复用可能会导致异常
  • 丢包?重传,判断丢包act机制
  • 滑动窗口流量控制。
HTTP/HTTP1.1(只关注业务本身)

本身是TCP,只是做了优化

  1. 长连接
  2. 部分传输
  3. HOST
  4. 缓存
HTTPS
  • 如何保护(防止网站劫持)
  • 对HTTP进行加密
  • SSL/TLS握手(非对称加密)

image.png

对加密的算法再进行一次加密(利用随机数封装)

网络架构怎么给抖音提质

HTTP-2.0(多路复用)/stream

在一次http请求中将多个图一次发送请求

image.png

  • 在一个TCP包中进行串行stream
  • 如果TCP丢包怎么办?//队头阻塞
QUIC(基于UDP)解决队头阻塞问题
  • 做在用户态
  • 0RTT
  • 弱网优势
路径优化

数据中心分布:服务器集合

  1. 核心机房
  2. POP点接入:和internet接入
  3. 边缘机房:小运营商

网络提速

  • 同运营商访问:(移动→移动   电信→电信)跨网访问会很差
  • 静态资源--CDN:边缘机房对视频进行缓存
  • 动态API--DSA:通过隔壁机房延时找到最优路径

网络稳定

容灾概念
  1. 故障发生
  2. 故障感知
  3. 自动切换:有故障的部分从系统中切换
  4. 服务恢复

Ⅰ、外网容灾

  • 概念:
  • 专线:直接的物理连接
  • 外网:在机房内部专线以外的网线

image.png

专线不可用时走外网容灾

Ⅱ、调度容灾

GTM系统

  1. 故障感知:发现不可用
  2. 确保其他机房能够承受流量
  3. 将故障切换成可用的

Ⅲ、降级容灾(云到端)

通过SDK(可受用户控制)(限制,需要有SDK) 让端不要去访问故障的机房

Ⅳ、bug导致crash

写一个cache文件,如果发生故障,把缓存的数据先返回回去

故障排查

1、故障明确

(1)什么业务?什么接口故障

(2)故障体现在哪里

(3)访问其他目标是否正常

(4)是否修改导致的异常

2、故障止损

(1)先止损再排查,用户体验第一,对公司收入的影响是以秒计算

(2)如何止损?组件没有容灾,但系统有没有or降级

3、分段排查

(1)客户端排查

(2)服务端排查

(3)中间链路排查

 

网络故障常用命令

Dig查询DNS问题

  • Ping/telnet/nmap
  • Traceroute
  • Iptables
  • Tcpdump

案例1:健康检查异常

案例2:个别用户保障

案例3:电缆被挖断

案例4:默认路由对称

故障预防很重要
  • 监控报警
  • 故障演练
  • 故障降级