这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记
08 打开抖音互联网会发生什么
【网络与部署学习资料(上)】第三届字节跳动青训营 - 后端专场 - 掘金 (juejin.cn)
协议细节自学
简历更新(熟悉/了解TCP/IP、计算机网络)
抖音视频刷出来有哪些协议的交互(应用层)
1.刷抖音网络是怎么交互的?
网络接入
网络传输
手机与抖音服务器交互
1.1网络接入-互联网
终端-无线网络接入-有线网络-运营商网络-抖音服务器(海外:光缆接入)
最后一公里:无线网丢包问题
1.2网络接入-路由
同网段(IP在掩码子网以内):中间有一个中转设备(交换机/逻辑交换机)
有一定限制--->SDN:软件虚拟化
如何往同网段发包/交互:改目标IP的mac
跨网段接入
路由不一定是对称的:返回不一定是接入的路
路由是工作在IP层,路由协议不一定只是工作在IP层
路由是改的Mac地址,找到发包口,目标IP地址一直不变
指定网卡:发包时以网卡为单位
怎么找下一跳的Mac?ARP协议
1.3网络接入-ARP协议
跨网段不能发送ARP
不能问Mac地址
抖音客户端访问抖音服务器,怎么访问目标IP?
ARP一级一级发送,找到下一跳、发送ARP,找到narck地址,最终达到抖音服务器
不是直接向目标地址发送ARP(只有同网站可以)
广播不能跨网站
免费ARP:不用请求就告诉ARP地址
场景一:局域网中加一台机器,加一台机器的话,IP新加了,其他机器向新加的机器发包效率慢,这种场景下会发送免费ARP,一旦发出去,就会告诉别人刷新Mac地址,新增机器了
场景二:服务器新增了一个IP之后,按照正常的协议要求会发送一次免费ARP,为防止IP冲突
ARP代理:中介作用,存所有IP和MAC对应
ARP本质上是查找下一跳的Mac,不是请求目标地址的Mac
1.4网络接入-IP协议
Mac地址不能代替IP地址吗?
Mac是二层协议,不是只有以太网一个协议,不能下下兼容,所以用IP来封装和统一
IPV4不够用,一般怎么解决?NAT
1.5网络接入-NAT
家里路由器本质是一个NAT
内部用户通过NAT设备,改原地址
举例:内部局域网地址是1920,假如有很多内部的——公司A和公司B内部IP地址可以是重复地址,都是1920,但是联到互联网设备的外部,都是全局唯一的外网地址,即NAT服务器上面。这是把不同地址映缩到了一个地址上,就节约了IPV4的地址
多个内网客户端访问同一个目标地址+端口,源端口恰好一样,冲突了?
NAT是改变IP+端口的
防止冲突可以自己在NAT设备上维护一张表,每次有现在正在存在的链接时,把端口选另外一个即可
网络打通了视频怎么下载?
1.6网络传输-数据包
课后做抓包wireshark
数据包传输通过封装
1.6网络传输-数据包发送
源机器的网络设备->目的机器的网络设备:在真实的互联网世界中是个比较复杂的网络拓扑
1.7网络传输-先请求DNS
IP不容易记,用域名记
把域名映射到IP用DNS去请求
DNS协议关注递归迭代:客户端发出一个递归请求,本身DNS会请求一个递归解析器,递归解析器会发生一个迭代请求,会先请求根,根是全世界写死的几个,再请求顶级域名(比如com),再请求douyin.com,再请求www.douyin.com
1.8网络传输-DNS的传输协议UDP
MUP传输有限制所以要分片
为什么要避免分片:影响效率,一旦分片就要重组,分片和重组都需要资源
1.9网络传输-TCP三次握手
TCP链接:本质是一个状态
拔了网线,TCP链接会断吗?不一定——心跳包、心跳饱和
假设TCP有探活(定期发包探测)
TCP三次握手
确认
在TCP三次握手时,通过确认MSS字段确定分段传输正常
中间的网络设备确认MSS:取三者最小
MSS在TCP三次握手时怎么确认的?TCP的option字段——MSS在option里面填的时候,在server端也会填,这两边在三次握手时读到TCP option里面的双方的MSS会取最小值作为双方协议出来的MSS;TCP时间戳
1.9网络传输-TCP传输
为什么老问Timewait?状态复杂的东西
为什么有Timewait?确保连接正常关闭,防止前一次的app丢失,可能会异常关闭连接
Timewait recycle:直接自用
Timewait reuse
太多Timewait会占用端口
丢包怎么办?重查——ACK机制
结合SYN和ACK
1.10网络传输-HTTP/HTTP1.1
为什么不直接用TCP通信呢?HTTP分层,TCP负责的内容本身已经足够多了
为什么互联网上那麽多HTTP通信?
TCP本身可以理解为泛中文,HTTP是基于TCP的,HTTP和TCP的关系像军事用语和中文的关系
1.11网络传输-HTTPS
防止窃听可以加密
1.11网络传输-SSL/TLS握手
加密窃听的基础-SSL/TLS握手
盒子合法——第三方CA认证证书合法性
1.12总结
2.网络架构怎么给抖音提质
网络提速
网络稳定
2.1网络提速-HTTP2.0
最重要思想:多路复用 ——图片视频并行下载
2.2网络提速-怎么理解多路复用/stream?
stream123是串行的
TCP发生丢包会发生对头阻塞——多路复用就不能用了
2.3网络提速-QUIC/HTTP3.0
基于UDP推广方便
除了协议优化,网络路径能不能优化?CDN,P2P,就近访问服务器,DSA
2.4网络提速-数据中心分布
边缘机房更靠近用户,每个省每家运营商至少都一个
2.5网络提速-同运营商访问
中国:运营商跨网访问质量差
同运营商:解析域名可做到
2.6网络提速-静态资源(图片视频)路径优化(CDN)
2.7网络提速-动态API(播放/评论接口)路径优化(DSA)
路径优化算法
机房A到DBE做网络延时探测,把探测数据做成一张表
刷的快,但是三天两天挂掉,谁刷抖音?
2.8 网络稳定-容灾概念
2.9网络稳定-故障排查
2.10网络稳定-故障明确
2.11网络稳定-故障止损
先故障止损再定位bug