这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
刷抖音网络是怎么交互的?
- 网络接入
- 网络传输
1.1 网络接入-互联网
1.2 网络接入-路由
同网段如何发包/交互? arp协议,改一下mac地址
路由一定是对称的吗?
不一定对称,路很多
路由工作在哪一次? 一般来说是网络层,但是也有工作中传输层的
路由是改ip地址吗? 路由是找到发包口,改mac
1.3 网络接入-ARP协议
ARP协议的本质是查找下一跳的mac,不是请求目标地址!
- 逻辑同网段才能发送ARP
- ARP请求广播,ARP应答单播 免费ARP? 在新加服务器的时候用到,服务器新增一个ip,防止ip冲突 ARP代理? 起中间代理的作用
ip协议
唯一标识,互联网通用
mac地址能代替ip地址吗? 二层的协议已经够多了,并且ip协议是二层协议的一个统一
ipv4不够用,一般怎么解决的? NAT,ipv6
NAT
ip和端口号都改变
1.4 网络传输-数据包
1.5 网络传输-数据包发送
1.6 网络传输-先请求DNS
1.7 网络传输-DNS的传输协议udp
udp本身相对简单,但是用好udp很难
- 发包每次发多少?怎么避免分片? mss,在三次握手的时候确认,在tcp的optin字段里,在里面放入mss,取最小值,还有事件戳。
- 怎么知道没丢包?
- 怎么权衡传输效率和质量?
1.8 网络传输-tcp 三次握手
拔了网线tcp连接会断掉吗? 不会断掉,是否有保活机制,在一定的情况下会断开
sequence number:表示的是我方(发送方)这边,这个packet的数据部分的第一位应该在整个data stream中所在的位置。 acknowledge number:表示的是期望的对方(接受方)的下一次sequence number是多少。注意,SYN/FIN的传输虽然没有data,但是会让下一次传输的packet seq增加一,但是ack的传输,不会让下一次的传输packet加一。
为什么老问Timewait? 影响性能
流量控制/拥塞控制
1.9 网络传输-HTTP/HTTP1.1
为什么不直接用tcp通信? 其实http只是多加了一层规矩。http依然是tcp,只是这个规矩让用户更清晰/更简洁
http1.1哪些优化? 长连接、部分传输、HOST、缓存
HTTPS
https解密出来之后依然是http
SSL/TLS 握手
2 网络架构怎么给抖音提质
- 网络提速
- 网络稳定
2.1 网络提速- HTTP2.0
多路复用
单个tcp链路传输
如果tcp丢包怎么办? 队头阻塞,会全部重传,可以使用option字段,但是治标不治本
QUIC/HTTP3.0
使用udp
0rtt, 用户态保证,弱网优势,
2.4 网络提速-数据中心分布
2.5 网络提速-同运营商访问
不同的运营商之间通信会比较慢,可以通过解析ip地址来做
2.6 网络提速-静态资源(图片视频)路径优化(cdn)
2.7 网络提速-动态API(播放/评论接口)路径优化(dsa)
2.8 网络稳定-容灾概念
故障发生-> 故障感知-> 自动切换-> 服务恢复
案例一
案例二
案例三
案例四
2.9 网络稳定-故障排查
故障明确-> 故障止损-> 分段排查
2.10 网络稳定-故障明确
- 沟通是前提
- 什么业务?什么接口故障?
- 故障具体体现在哪里?
- 访问其他目标是否正常?
- 是否是修改导致的异常?
2.11 网络稳定-故障止损
先止损再排查
- 用户体验第一
- 对公司收入的影响是按照分钟甚至是秒来计算的
如何止损
- 组件没有容灾,但是系统有没有?
- 降级
2.12 网络稳定-分段排查
客户端排查
- 客服端访问其他服务有没有问题?
- 其他客户端访问目标服务有没有问题?
服务排查
- 服务端监控/指标都正常吗?
- 分组件排查
中间链路排查
- 服务端和客户端确保都没有问题
- 中间网络设备有没有问题?(交换机/路由器/网关LB)
- 旁路的DNS有没有问题?
2.13 网络稳定-网络故障排查常用的命令
dig 查新dns问题
- ping/telnet/nmap查询三层/四层联通性
- traceroute排查中间链路
- iptabels
- tcpdump
2.14 网络稳定-故障预防很重要
- 监控报警
- 故障演练/预案
- 故障降级/止损