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

202 阅读3分钟

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

抖音中网络是如何交互?

从计算机网络各层及其协议进行讲解。从容灾和优化方面对提供好的抖音服务进行讲解。

1. 网络接入

  • 通过路由网络接入
void sen_one_pkt(){
rt = find_rt(dst)
...
l2->dst_mac = rt->next_hop->mac
p = append(p,l2)
...
send(p,rt->root)
}

路由不是对称的。作用是更改mac地址,可以找到下一跳,目标ip地址一直不变。

  • 怎么找到下一跳mac地址 ARP协议。
  1. 逻辑同网段才可以发送ARP
  2. ARP请求广播,ARP应答单播

2. 网络接入-ip协议

  • ip唯一标识,互联网通用 如何解决ipv4不够用的问题? NAT.
  1. NAT使路由器对于外部世界来说不像一台路由器,而是一个具有单一IP地址的单一设备。
  2. 路由器从ISP的DHCP服务器得到ip地址,并且路由器运行一个DHCP服务器,为位于NAT-DHCP路由器控制的家庭网络地址空间中的计算机提供地址。
  3. 如果广域网达到NAT路由器的所有数据都有相同的目的ip地址,路由器如何知道应该将某个分组转发给哪个内部主机? NAT路由器中的一张NAT转换表,在表项中包含了端口号和ip地址。

MSS

一旦建立TCP连接,两个应用进程开始发送数据。客户进程通过套接字传递数据流。数据被客户端中的TCP控制。TCP将数据引导到该连接的发送缓存里。发送缓存是发起三次握手期间设置的缓存之一。
TCP从缓存中取出并放入报文段中的数据数量受限于最大报文段长度(MAXIMUM Segment Size).MSS通常根据最初确定的由本地发送主机发送的最大链路层帧长度(Maximum Transmission Unit)来设置。设置该MSS要保证一个TCP报文段(封装在ip数据报中)加上TCP/IP首部长度将适合单个链路层帧。
MSS是报文段中应用层数据的最大长度,而不是包括TCP报文段的最大长度。
在tcp首部的option字段,用于发送方与接收方协商MSS时使用。

3. 网络传输-数据包发送

  • DNS,使用UDP传输协议
  • TCP三次握手
  • TCP传输
  • HTTP/HTTP1.1
  • HTTPS
  • SSL/TLS握手

序号和确认号

  • sequence number 发送方报文段首字节的字节流编号
  • acknowledge number 期望收到对方主机的下一个字节的序号

网络架构如何为抖音提高质量

1. 多路复用/stream

2. QUIC/HTTP3.0

  • UDP
  • Userspace
  • 0 RTT
  • 弱网优势

3. 路径优化

  • 数据中心: 核心机房/边缘机房
  • 同运营商访问
  • 静态资源(如视频、图片)的cnd缓存
  • 动态api(如评论、点赞)的路径优化
    • DSA

4. 容灾

  1. 故障发生
  2. 故障感知
  3. 自动切换
  4. 服务恢复

网络故障排查常用命令

  • dig ->DNS
  • ping/talnet/nmap -> 查询三层/四层连通性
  • Traceroute -> 排查中间链路
  • iptables -> 客户端
  • tcpdump -> 抓包

Q&A

用户态socket和内核态socket的区别?

映射关系,但不是一个事物。用户态socket本质是为了和内核态socket通信,需要将文件映射给内核态socket。

内网穿透ftp为什么被禁止使用?

ftp和ssh一起使用,其他人拥有ssh端口就可以登录该服务器。

socket和http的区别

本质上socket不是协议,而是一个用法。通过编程实现tcp和udp。socket通过套接字实现应用态的使用。
特定场景下socket是http的实现基础。

Http3.0的优化方向

  • 队头阻塞
  • 优化传输

iptables

对一些包的过滤传输。ipVS,负载均衡。阿里二次开源。