这是我参与「第三届青训营 -后端场」笔记创作活动的的第五篇笔记
一、网络是如何交互的
- 通过无线网络或者光纤接入电信网, 然后中国电信网通过光缆与美国网络相连
- 同网段一般用交换机(or逻辑交换机)来连通
- 同网段发包: 把目标ip的mac改成查询到的mac(arp协议)
- 跨网段需要路由
- 路由修改的是MAC地址, 找到发包口然后修改包的源MAC地址和目标MAC地址
- 指定网卡, 让计算机以哪个网口发包
ARP
- ARP协议: 查找同网段的目标的mac地址, 或者(跨网段)下一跳的mac地址
- 免费ARP协议: 新机告诉其他机器有新的机器加入, 请求更新新的mac地址
- 新增ip时会发生免费ARP, 防止ip地址冲突
- ARP代理: 中介作用, 扩充边界, 劫持请求发送往另一个地方
NAT
- 连接内网和外网
- NAT修改的是ip和端口(多个内网客户端访问同一个目标地址)
视频下载
- 先请求DNS, 解析域名, 利用递归的方式访问迭代器(host -> 根服务器(从边缘到根))
- 分片: 达到MTU值就会进行数据帧的切分
- UDP(不可靠的特点不大适合)
- Ack加1的原因: Ack(acknowledge number)表示期待对方(接收方)的下一个Seq(sequence number)是什么
- Ack加len的时候是处于数据传输的阶段
- Timewait确保连接正常关闭, 防止前一次ack丢失, 防止异常关闭连接
HTTP1.1优化
- 长连接
- 部分传输
- HOST
- 缓存
HTTPS-SSL/TLS
非对称: 不告诉别人我的加密算法, 只有协商的时候另一方才知道
二、网络提速
- 多图一起请求, 一起响应
- TCP发生丢包时: 对头阻塞(一直等待那一个包)
- QUIC协议: 具有弱网优势, 0 RTT(使用了Diffie-Hellman算法(迪菲-赫尔曼算法)来保证数据交互的安全性并合并了它加密和握手过程来减小连接建立过程中的往返次数,以此来达到0RTT的目的), 改进UDP为可靠传输(解决对头阻塞)
- 数据中心: 简单地理解为服务器集合的地方, POP接入(增加与互联网接入的入口)
- 网络路径优化: CDN优化,
- 同运营商访问: 跨运营商的服务器访问会比较差
- 路径优化: DSA(计算每个机房的最优路径)
容灾
故障发生, 故障感知, 自动切换, 服务回复 方案:
- 设置机房之间的专线(避免走因特网(外网))
- GTN保证自动化容灾, 探测哪个机房挂了, 然后(这一步是防止雪崩)感知另一个机房的容量是否能够承受这个机房(已经挂了)的流量, 如果可以的话, 进行切换
- 云到端: 自动降级/容灾 (需要切域名, 但是浏览器访问就不能做到)
- Bug导致全crash -> 前置兜底逻辑/cache文件
故障排查
- 故障明确(故障出现在哪里)
- 先止损再排查(止损方法: 是否有容灾手段(组件or系统), 没有则降级)
- 分段排查 (客户端排查, 服务端排查, 中间链路排查)
- 预防故障是最重要的(监控报警 -> 故障演练/预案 -> 故障降级/止损)