这是我参与「第三届青训营 -后端场」笔记创作活动的的第10篇笔记, 本次课主要讲了计算机网络相关知识,包括网络接入,传输等。
一、刷抖音网络是怎么交互的
网络接入--互联网
-
同网段不一定是在同一个物理交换机下,也有可能是用SDN做的虚拟网络
-
同网段如何发包、交互
- overlay?
网络接入--路由
路由一定是对称的吗
不是?
- 用户A到用户H有很多路可以到达,所以不一定是对称的
路由是工作在那一层的
总体上是IP层,但是动态路由协议本身是传输层的协议。
路由是改的IP地址吗
不是改IP地址,是改MAC地址,IP地址始终不变,路由是为了找中间的路
-
为什么要指定网卡
- 不指定网卡不知道发包的位置
怎么找到下一层的MAC
ARP协议
网络接入-ARP协议
- 发送广播,目标来响应
- 逻辑同网段才能直接发送ARP
- ARP请求广播,ARP应答单播
- 免费ARP,ARP代理?
- 局域网里面要新加机器,其他机器往新加的机器发包,效率比较慢,这里会使用免费ARP发包,告诉其他机器这里新增了机器
网络接入--IP协议
-
唯一标识,互联网通用。抖音客户端一个,抖音服务端一个。
-
Mac地址不能代替IP地址吗?
- MAC协议是二层的,有很多遗留的设备不支持MAC协议,要做一个向下兼容,统一起来
- IPv4不够用,一般怎么解决的?
-
- IPv6
网络接入--NAT
-
家里路由器怎么上网(本质上就是NAT)
- 内部用户通过NAT设备,改上网的源地址
- 家里设备上网,都是使用路由器的IP上网
-
多个内网客户端访问同一个目标地址+端口,源端口恰好一样,冲突了?
- NAT不仅改IP,也改端口
网络传输--数据包
- 练习:抓包
网络传输--数据发送
网络传输--先请求DNS
网络传输--DNS传输协议UDP
- UDP协议本身相对简单
- UDP用好很难
网络传输--TCP传输
ACK : 期望下一次接收到的序列号
TCP现有的状态机
-
为什么要是问Timewait
-
丢包怎么办
-
滑动窗口的概念
-
流量控制,拥塞控制
网络传输-HTTP1.1
为什么不用TCP通信
- TCP做的东西已经够多了,HTTP只需要关注业务本身,不需要关注协议怎么实现
- 其实HTTP只是多加了一层规矩,HTTP本质依然是TCP,只是让人更容易理解
网络传输-HTTPS
- 非对称加密
- 确保没有劫持,也确保私钥不泄密
二、网络架构怎么给抖音提质
网络提速-HTTP2.0
- 多路复用:多个图一起请求,一起响应
网络提速-怎么理解多路复用/Stream
- 单个TCP连接阻塞
- 如果TCP丢包怎么办
-
- TCP队头阻塞,重传这个包,后面的包都要等待,等重传成功了,后面的才能继续
- TCP优化:有一个option,只需要提供ACK序列号,只需要重传丢掉的,但是没有本质上解决这个问题
网络提速-QUIC/HTTP3.0
-
TCP or UDP?
- TCP不可插拔,牵一发而动全身,使用UDP
-
Kernel or Userspace
- 如果基于Kernel,考虑不同的操作系统是不是都要实现一遍?推广起来很复杂
- 因此选择Userspace
- 0 RTT
- 弱网优势
除了协议优化,能不能做路径优化
网络提速-数据中心分布
- 核心机房
- 边缘机房
网络提速-同运营商访问
- 跨运营商访问丢包情况多
网络提速-静态资源路径优化(CDN)
网络提速-动态API(路径优化)
- 找到最优路径
网络稳定--容灾
具体案例一
- 专线:内部机房,没走外网
- 专线不可用走外网
具体案例二:调度容灾
- 把不可用的去掉
- 流量切换之前,要先计算机房B的容量是不是够用,够用的话才会切
具体案例二:调度容灾
云到端-> 主动降级/容灾
- 控制访问地址,主动降级
- 局限性:在web页面访问时时用不了这个,因为这个是针对sdk设计的,无法控制web页面 访问情况
网络容灾案例四
- bug导致app全部crash, 写一个cache做逻辑兜底
没有容灾的故障怎么查
网络稳定--故障排查
网络稳定--故障明确
网络稳定--故障止损
网络稳定--分段排查
网络稳定--故障排查常用命令
总结
\
课后作业1
课后作业2
QA
-
socket和http的区别
- socket不是一种协议,而是一个用法
- 在特定场景下,socket是http的一种实现方式
-
为什么ipv6没有普及,现在办网还是ipv4+nat
- 现在改造是有风险的,都是走双栈