这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记
课程依赖
- linux 操作系统
- Wireshark 软件 抓包用
- Socket 网络编程开发环境
课程收益
刷新抖音会用到那些协议(应用层)
域名解析:DNS 视频下载:HTTP 图片下载:HTTP 评论API:HTTP
刷抖音网络是怎么交互的?
先让我的手机能访问抖音服务器!
网络接入
互联网(物理)
运营商(联通、电信)的网络与服务器连接 海外业务通过海底光缆与美国网络连接
路由(逻辑)
/26 是掩码
掩码决定子网的范围是多大,ip是在掩码之内的称为:同网段
直连:两台服务器直接相连
同网段需中转设备:集线器、三层的交换机
SDN:网络虚拟化
往同网段如何发包/交互? 修改目标ip的mac
与之对应的是跨网段 跨网络接入,路由 路由一定是对称的吗?不是
路由是工作在哪一层协议?IP层,传输层
那路由是改的IP地址吗?改MAC地址,找到发包口,原MAC一直在变;目标ip地址是一直不变的
同网段直接通信,跨网段找下跳的mac。
ARP协议
怎么跳下一跳的mac?ARP协议
A发广播问:B在哪?
B响应,发现询问的目标是我
- 逻辑同网段才能发送ARP 跨网络不能发ARP,广播不能跨网段
- ARP请求是广播,ARP应答是单薄
- 免费ARP 实际生成中使用,不用请求我,我就告诉你,例如:局域网中要加一台机器,没有缓存,提高效率
- ARP代理 是个代理,中间设备抢先应答eg:虚拟网络中应用 中介作用
ARP本质是查找下一跳的MAC,不是请求目标地址!
TCP 三次握手
什么是tcp连接?
拔了网线,连接会断吗?
TCP传输
timewait是什么?等两倍的msl,确保连接正常关闭,防止前一次的page丢失,可以异常关闭连接
丢包怎么办?重查
滑动窗口、流量控制
网络传输
HTTP/HTTP1.1
分层,兼容协议
http1.1就是比tcp专业些
HTTPS
解密出来依然是HTTP
SSL/TLS握手
非对称加密,把对称加密的算法加密起来。主要通过公钥和私钥来做的
刷抖音为什么又快又稳?
网络框架怎么给抖音提质
网络提速
HTTP2.0
多路服用,串行跟并行区别,在一个tcp上面跑多个http请求
丢包怎么办?对头阻塞:发生丢包,一直在重传这一个包 全部重传
QUIC/HTTP3.0
UDP or TCP? Kernel or Userspace? 选择了用户态
弱网传输优势(解决对头阻塞问题)
除了协议优化,网络路径能不能优化? 数据中心分布,边缘机房
同运营商访问
移动访问移动、电信访问电信(通过解析去做,中国特例出现情况)
静态资源(图片视频)路径
接到请求后先去访问边缘机房,看边缘机房有没有别人访问后的缓存,边缘机房无,就去汇集机房、再无就去核心机房
动态API(播放/评论接口) 路径优化(DSA)
对相邻机房做路径探测,最优路径
刷的快,但是容易挂?
网络稳定
容灾概念
- 故障发生
- 故障感知
- 自动切换
- 服务恢复
具体案例一
专线:把两个机房连接,自己拉线 外网:专线以外,通过internet连接
二
探测机房B的容量够1.1.1.1
三
预装sdk,降级容灾 云到端,云控不可以,web中
四
cache不通的时候返回上一次缓存,降级访问
没有容灾的故障怎么查?
故障排除
- 故障明确
- 故障止损
- 分段排查
故障明确
上面业务?什么接口故障? 沟通是前提,防止大惊小怪。故障体系在哪?访问其他目标是否正常?是否是修改导致的异常?
故障止损
先止损再排查
- 用户体验第一
- 对公司收入的影响按照分钟甚至秒来计算
如何止损
- 组件没有容灾
- 降低
分段排查
- 客户端排查 访问其他服务 其他客户端访问目标
- 服务端排查 服务器啊
- 中间链路排查
网络故障排查常用命令
- dig查询DNS问题
- ping/telnent/nmap 查询三层/四层连通性
- traceroute排查中间链路
- iptabels
- tcpdump
案例
健康检查 个别用户报故障,生产环境大多是客户端的问题 某某地区的电缆被挖断 app故障->后端服务器反馈正常->网络转发设备异常->抓包->路由不对称
故障预防很重要
- 监控报警
- 故障演练/预警
- 故障降级/止损