这是我参与「第三届青训营 -后端场」笔记创作活动的的第6篇笔记
刷抖音网络是怎么交互的
- 网络接入
- 网络传输
网络接入-互联网
网络接入-路由
- 路由不一定是对称的
- 路由是改Mac,找到发包口
网络接入-ARP协议
- 逻辑同网段才能发送ARP
- ARP请求广播,ARP应答单播
- 免费ARP? ARP代理?
ARP本质上是查找下一跳的MAC,不是请求目标地址!
网络接入-IP协议
唯—标识,互联网通用。抖音客户端一个,抖音服务端一个。
网络接入-NAT
网络传输-数据包
网络传输-数据包发送
网络传输-先请求DNS
- 客户端发 www.douyin.com 的解析请求
- 递归解析器去问"." , com去哪里解析
- 递归解析器去问"com." , douyin.com去哪里解析
- douyin.com告诉递归解析器www.douyin.com解析到xxx
网络传输-DNS的传输协议UDP
- UDP本身相对简单
总结:想发什么包,就分配一个UDP的头,把payload里面塞数据发出去就好!
网络传输-TCP 三次握手
Tcpdump+Wireshark
网络传输-TCP传输
- sequence number:表示的是我方(发送方)这边,这个packet的数据部分的第一位应该在整个data stream中所在的位置。
- acknowledge number:表示的是期望的对方(接收方)的下一次sequence number是多少。注意,SYN/FIN的传输虽然没有data,但是会让下一次传输的packet seq增加一,但是,ACK的传输,不会让下一次的传输packet加—。
网络传输-HTTP/HTTP1.1
HTTP1.1有哪些优化
- 长连接
- 部分传输
- HOST
- 缓存
其实HTTP只是多加了一层规矩。HTTP依然是TCP,只是这个规矩让用户更清晰/更简洁。
网络传输-HTTPS
HTTPS解密出来仍然是HTTP
网络传输-SSL/TLS握手
对称加密与非对称加密
确保没有劫持,也确保私钥不泄密
网络架构怎么给抖音提质
- 网络提速
- 网络稳定
网络提速-HTTP2.0
网络提速-多路复用/stream
网络提速-QUIC/HTTP3.0
网络提速-数据中心分布
网络提速-同运营商访问
网络提速-静态资源(图片视频)路径优化(CDN)
网络提速-动态API(播放/评论接口)路径优化(DSA)
网络稳定-容灾概念
- 故障发生
- 故障感知
- 自动切换
- 服务恢复
网络容灾
网络稳定-故障排查
- 故障明确
- 故障止损
- 分段排查
故障明确
- 出现什么故障?->沟通是前提
- 什么业务?什么接口故障?
- 故障体现在哪里?
- 访问其他目标是否正常?
- 是否是修改导致的异常?
故障止损
-
先止损再排查
- 用户体验第一
- 对公司收入的影响是按照分钟甚至秒来计算
-
如何止损
- 组件没有容灾,但是系统有没有?
- 降级
分段排查
- 客户端排查
- 客户端访问其他服务没问题吗?
- 其他客户端访问目标服务没问题吗?
- 服务端排查
- 服务端监控/指标都正常吗?
- 手动访问一下正常吗?
- 分组件排查
- 中间链路排查
- 服务端跟客户端确保都没问题
- 中间网络设备有没有问题?(交换机/路由器/网关LB)
- 旁路的DNS有没有问题?
网络稳定-网络故障排查常用命令
- dig查询DNS问题
- ping/telnet/nmap查询三层/四层连通性
- Traceroute排查中间链路
- iptabels
- tcpdump
网络故障
客户端异常->服务端自测正常->网关转发异常->健康检查异常
个别用户报故障,生产环境大多是客户端的问题
某APP故障->后端服务器反馈服务正常->网络转发设备异常->抓包->路由不对称
网络稳定-故障预防很重要
- 监控报警
- 故障演练/预案
- 故障降级/止损