这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记」
抖音刷视频会包含什么协议?
-
域名解析DNS
-
图片下载 视频下载 HTTP QUIC HTTP2/3
-
评论API/HTTP
刷抖音网络是怎么交互的?
网络接入
逻辑连通:路由(同网段[n个服务器的中转设备-(逻辑)交换机,接口有限-SDN网络虚拟化]、跨网段)
往同网段如何发包/交互?修改目标ip的MAC为目标ip查到的MAC 跨网段路由配置: 没找到,就default via
路由一定是对称的吗? (可用绕路走,往返路线不一定一样)
路由是工作在哪一层协议? 路由协议本身不一定只在ip层。
路由是改的IP地址吗?不是,改的是MAC地址 找到发包口,目标ip改了,就找不到了。源和目标的IP都不会变,但MAC会变。源MAC变是因为从A节点-B-C,走到B-C,源为B 源mac是设备B了。
为什么要指定网卡?发包是以网卡为单位的。
动态路由BGP/OSPF 找下一跳。
如何找下一跳的MAC? ARP协议。 查询:ARP请求广播,广播是不能跨网段的。只有逻辑同网段才能发送ARP。(抖音服务器和APP不在同一网段,ARP的发送是一节节[找下一跳]发送的,不是两点之间直接发送)。ARP应答单播。
免费ARP?ARP代理?
免费ARP:新增ip、服务器-快速刷新MAC地址,提前判断ip有冲突
ARP代理:中介,扩充边界,劫持ARP请求,让它发往别的地方。
IP协议 为什么需要?
-
唯一标识,全网通用。抖音客户端一个,抖音服务端一个。
-
MAC地址为什么不能代替IP地址?MAC协议 二层协议,二层协议有很多,互联网历史遗留问题,不止有MAC协议,为了向下兼容各协议、统一——向上在增加一层IP协议。
-
IPv4不够用,一般怎么解决的?IPv6或NAT
-
家里路由器如何上网?多个内网NAT ip可复用,端口不同
-
多个内外客户端访问同一个目标地址+端口,源端口恰好一样,冲突了?NAT修改IP+端口
网络传输
根服务器"."
UDP如何保证可靠,要用好很难?(传输视频流)
MTU分片,分片和重组会消耗cpu资源。
什么是TCP连接?
拔了网线,连接会断吗?TCP如果没有探活,连接不会断(看条件)
TCP三次握手? 确认双方收发正常。1.协商双方的序列号 2.确保对方已建立连接 3.防止复用历史连接。同步序列号,发送窗口,确保发送能力
TCP如何防止分片?MSS,何时确认MSS?三次握手过程中确认。如何确认?TCP option字段 取双方设置的MSS的最小值。TCP的时间戳也是option字段确认。
ACK为什么+1?通过期望收到对方下一次的seq,所以发送ACK,期望下一层seq是1,所以ACK是0+1=1
为什么需要TIME_WAIT?要等2MSL。确保连接正常关闭,防止前一次ack丢失。确保这次连接的包全部消失在连接通道中。
丢包怎么办? 重传,ACK机制。
滑动窗口、流量控制、拥塞控制的概念。
tcp负责的内容本身就够多了(复杂),http再包装一层,使用更方便。
如何认证非对称加密的盒子是合法的?CA-第三方机构认证,颁发认证的公钥和证书。
刷抖音为什么又快又稳?(实际问题)
网络提速
协议优化
HTTP2.0多路复用, 并发下载视频、图片等。
stream1 2 3 是串行的,但看起来是并行的。
如果TCP丢包怎么办?tcp队头阻塞,会全部重传。解决:SACK
解决队头阻塞-QUIC
- 改TCP会复杂。基于UDP改。
- 在Kernel(不同操作系统)实现还是Userspace上实现?Userspace上。
- 弱网优势。TCP在弱网容易丢包。
网络路径优化
CDN、p2p、anycast、强化学习、蚁群、模拟退火、数据中心分布、同运营商访问。
动态规划
(网络稳定)刷的快,但总是挂
容灾
专线:内网连接,专线不可用就走外网容灾
自动化:探测感知A挂了,并确保B机房能够承受容量。
云到端(云控)-》主动降级、容灾,什么时候云控控制不到-控制不了用户访问web访问的域名
没有容灾的故障怎么查?
- 故障明确(沟通是前提)
- 什么业务?什么接口故障?
- 故障体现在哪里?
- 访问其他目标是否正常?
- 是否是修改导致的异常?
- 故障止损
- 先止损再排查
- 如何止损 降级
- 分段排查
- 客户端、服务端、中间链路