探索计算机网络|青训营笔记

194 阅读4分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记」

抖音刷视频会包含什么协议?

  • 域名解析DNS

  • 图片下载 视频下载 HTTP QUIC HTTP2/3

  • 评论API/HTTP

刷抖音网络是怎么交互的?

网络接入

image.png

逻辑连通:路由(同网段[n个服务器的中转设备-(逻辑)交换机,接口有限-SDN网络虚拟化]、跨网段)

往同网段如何发包/交互?修改目标ip的MAC为目标ip查到的MAC 跨网段路由配置: 没找到,就default via

image.png

路由一定是对称的吗? (可用绕路走,往返路线不一定一样)

image.png

路由是工作在哪一层协议? 路由协议本身不一定只在ip层。

路由是改的IP地址吗?不是,改的是MAC地址 找到发包口,目标ip改了,就找不到了。源和目标的IP都不会变,但MAC会变。源MAC变是因为从A节点-B-C,走到B-C,源为B 源mac是设备B了。

image.png

为什么要指定网卡?发包是以网卡为单位的。

动态路由BGP/OSPF 找下一跳。

image.png

如何找下一跳的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+端口

网络传输

根服务器"."

image.png

image.png 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

image.png

image.png

为什么需要TIME_WAIT?要等2MSL。确保连接正常关闭,防止前一次ack丢失。确保这次连接的包全部消失在连接通道中。

丢包怎么办? 重传,ACK机制。

滑动窗口、流量控制、拥塞控制的概念。

image.png tcp负责的内容本身就够多了(复杂),http再包装一层,使用更方便。

image.png

image.png 如何认证非对称加密的盒子是合法的?CA-第三方机构认证,颁发认证的公钥和证书。

刷抖音为什么又快又稳?(实际问题)

网络提速

协议优化

HTTP2.0多路复用, 并发下载视频、图片等。

stream1 2 3 是串行的,但看起来是并行的。 如果TCP丢包怎么办?tcp队头阻塞,会全部重传。解决:SACK image.png

解决队头阻塞-QUIC

image.png

  • 改TCP会复杂。基于UDP改。
  • 在Kernel(不同操作系统)实现还是Userspace上实现?Userspace上。
  • 弱网优势。TCP在弱网容易丢包。

网络路径优化

CDN、p2p、anycast、强化学习、蚁群、模拟退火、数据中心分布、同运营商访问。

动态规划

image.png

(网络稳定)刷的快,但总是挂

容灾

image.png

专线:内网连接,专线不可用就走外网容灾

image.png

自动化:探测感知A挂了,并确保B机房能够承受容量。 image.png

云到端(云控)-》主动降级、容灾,什么时候云控控制不到-控制不了用户访问web访问的域名

image.png

没有容灾的故障怎么查?

  • 故障明确(沟通是前提)
    • 什么业务?什么接口故障?
    • 故障体现在哪里?
    • 访问其他目标是否正常?
    • 是否是修改导致的异常?
  • 故障止损
    • 先止损再排查
    • 如何止损 降级
  • 分段排查
    • 客户端、服务端、中间链路

image.png

image.png