这是我参与「第三届青训营 -后端场」笔记创作活动的的第6篇笔记
01 刷抖音网络是怎么交互的?
- 网络接入
- 网络传输
1.1 网络接入——互联网
1.2 网络接入——路由
-
同网段:配置网段即可默认添加静态路由。获取对端MAC直接发包
-
SDN
-
往同网段如何发包/交互?
- 改目标IP的MAC
-
-
跨网段:配置网关路由。获取网关MAC地址发包
-
通过交换设备连接起来
-
路由一定是对称的吗?
- 不是,路由是网状的
-
路由是工作在哪一层协议?
- 总体来说路由工作在IP层;路由协议本身不是,属于传输层的协议
-
路由是改的IP地址吗?
- 不是,是改MAC,找到发包口,目标IP地址是不变的
- 源IP地址和⽬标IP地址在传输过程中是不会变化的,只有源 MAC 地址和⽬标 MAC ⼀直在变化。
-
发包需要指定网卡,为什么?
- 发包以网卡为单位,不指定网卡不知道从哪发
-
怎么找到下一跳的MAC?
- 通过ARP协议
-
1.3 网络接入——ARP协议
- 逻辑同网段才能发送ARP
- ARP请求广播,ARP应答单播
- 免费ARP:主动广播告知MAC地址
- ARP代理:虚拟网络/伪造MAC地址
- ARP本质上是查找下一跳的MAC,不是请求目标地址!
1.4 网络接入——IP协议
-
唯一标识,互联网通用。抖音客户端一个,抖音服务端一个。
-
MAC地址不能代替IP地址
- 二层有很多协议,很多设备不支持Mac地址;统一协议
-
IPv4不够用,一般怎么解决?
- NAT
1.5 网络接入——NAT
- NAT上网:家用路由器
- NAT出网:机房内网主机上外网
- NAT原理:注意不仅仅是源地址变换,源端口/校验和/SEQ等都会变化
1.6 网络传输——数据包
- 数据包:本质上是一段内存,里面存储的内存是有序的,一般是按照TCP/IP的多层协议去封装。拆包/封包都是按照协议去写内存/读内存。
02 网络架构怎么给抖音提质
网络稳定——容灾概念
案例
- 专线不可用了,外网容灾
- GTM系统,探测故障感知,机房A挂了,机房B够用,切换到自动切换到机房B
- 云到端→主动降级/容灾
- Bug导致全crash→前置兜底逻辑/cache文件
没有容灾的故障怎么查?
网络稳定——故障排查
-
故障明确
-
出现什么故障?→沟通是前提
- 什么业务?什么接口故障?
- 故障体现在哪里?
- 访问其他目标是否正常?
- 是否是修改导致的异常?
-
-
故障止损
-
先止损再排查
- 用户体验第一
- 对公司收入的影响是按照分钟甚至秒来计算
-
如何止损
- 组件没有容灾,但是系统有没有?
- 降级
-
-
分段排查
- 客户端排查
- 服务端排查
- 中间链路排查
-
网络故障排查常用命令
- dig查询DNS问题
- ping/telnet/nmap查询三层/四层连通性
- Traceroute排查中间链路
- iptabels
- tcpdump
-
故障预防
- 监控报警
- 故障演练/预案
- 故障降级/止损