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

182 阅读3分钟

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

课程收益

熟悉TCP/IP、计算机网络!!!
image.png

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

image.png

1.1 网络接入

路由

往同网段如何发包/交互?
路由一定是对称的吗? (不一定)

image.png 路由是工作在哪一层的协议?(网络/IP层)
路由是改的IP地址吗?(找下一跳,改MAC地址,目标IP地址一直是不变的)
路由是改MAC,找到发包口
伪代码:

void send_one_pkt(){
    rt = find_rt(dst)  //包含主机出口网卡&Nexthop
    ...
    l2->dst_mac = rt->next_hop->mac  //怎么获取路由的mac?
    p = append(p,l2)
    ...
    send(p, rt->port) //发包需要指定网卡,为什么?
    //这个port指的网卡的port
    //kernel里面发包是以网卡为单位的
    //网卡概念
}

ARP(Address Resolution Protocol)地址解析协议

根据IP地址获取物理地址的一个TCP/IP协议

  • 逻辑同网段才能发送ARP
  • ARP请求广播,ARP应答单播
  • 免费ARP?ARP代理

IP协议

  • 唯一标识,互联网通用
  • MAC地址不能代替IP地址吗? 答:难记、不同协议的地址需要统一
  • IPv4不够用,一般怎么解决? 答:NAT:IP+端口一起 修改的,防止冲突。自己维护一张记录表

1.2 网络传输

数据包

image.png

wireshark抓包,查看数据

数据包发送

image.png

先请求DNS

客户端发送www.douyin.com的解析请求,递归解析器去解析,自顶向下 DNS传输协议UDP:

image.png

TCP三次握手

拔了网线,连接会断吗?(一定情况下,会断开)
MSS(最大报文段长度)是如何在TCP三次握手里面确认的? Tcpdump+Wireshark
ack number:期望对方的下一次seq number是多少image.png TCP的有限状态机 !!

  • 为什么老问你Timewait?
  • 丢包怎么办?(ack的机制)
  • 滑动窗口
  • 流量控制/拥塞控制

HTTP/HTTP1.1

HTTP只是多加了一层规矩。HTTP依然是TCP
HTTP1.1的优化:

  • 长连接
  • 部分传输
  • HOST
  • 缓存

HTTPS

HTTPS解密出来依然是HTTP
SSL/TLS握手

  • SSL:(Secure Socket Layer,安全套接字层)
  • TLS:(Transport Layer Security, 传输层安全)

image.png

2. 刷抖音为什么又快又稳?---网络结构怎么给抖音提质

2.1 网络提速

HTTP 2.0

eg. 多图并发下载

怎么理解多路复用/stream?

  • 单个TCP链接传输
  • 如果TCP丢包怎么办?(对头阻塞

image.png

Quick/HTTP 3.0

对HTTP 2.0的多路复用做了优化,解决对头阻塞问题。

  • 0 RTT:通信双方发起通信连接时,第一个数据包便可以携带有效的业务数据
  • 最大优势:弱网传输 image.png

除了协议优化,网络路径能不能优化?

  1. 数据中心分布

image.png

  • 核心机房
  • POP接入
  • 边缘机房
  1. 同运营商访问
  2. 静态资源(视频图片)路径优化(CDN) Content Delivery Network:即内容分发网络
  3. 动态API(播放/评论接口)路径优化(DSA)
    差分搜索算法 DSA

抖音三天两天挂掉,怎么提升稳定性

2.2 网络稳定

2.2.1 容灾概念

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

image.png 一系列企业级容灾案例

2.2.2 故障排查

  1. 故障明确
  2. 故障止损
  3. 分段排查

3. 总结回顾

image.png

image.png

4. 课后答案

【第三届青训营-后端专场】课后作业 -《打开抖音互联网会发生什么》 - 掘金 (juejin.cn)