这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记。
本文章主要讲计算机网络相关知识及网络的优化和稳定建设相关内容。
背景:打开抖音网络发生了什么? 应用层:域名解析DNS、 视频下载HTTP:http2、quic 图片下载、http 评论:api、 HTTP、UDP、IP、ARP、
1.网络接入协议
手机访问抖音服务器:
从终端出发、路由器转到各个网络。
路由:
同网段:配置网段即可默认添加静态路由。获取对端MAC直接发包
同网段发包:根据ARP广播寻MAC地址
虚拟网络形成同网段
跨网段:配置网关路由。获取网关MAC地址发包
配置路由、默认按照最有配置转发
路由一定是对称的吗? 不是,两者之间的路可以走不同的,一般是对象的
路由工作在哪一层: 用到路由协议,OSPF、BGP 会涉及传输层
路由是改IP地址吗? 不是,MAC地址(ARP协议)
发包需要指定网卡? 以网卡为单位发包
ARP协议
注意:逻辑同网段才能发送ARP(广播不能跨网段)
ARP请求广播,ARP应答单播
免费ARP? 请求IP为本地IP,避免IP地址冲突
ARP代理? 虚拟网络/伪造MAC地址
IP协议
唯一标识,互联网通用
MAC不能替代IP地址? 链路层不止一个MAC地址协议,用IP统一管理
IPv4不够怎么解决?
NAT
家里路由器如何上网,通过路由统一IP与外网访问 (插图) 内部用户访问同一个目标地址+端口 内网
2. 网络传输协议
网络传输-数据包
五层模型
数据包发送
DNS协议
域名解析获得IP地址,
递归迭代:递归解析器访问“.”,从后往前
基于UDP传输:
UDP怎么保证协议可靠?
TCP协议
三次握手 拔了网线,连接会断吗? 探活,keep alive;
TCP尽量防止分片 MSS(最大报文段长度),三次握手确认;可选字段中定义MSS、时间戳
TCP传输
SYN:packet的数据部分的第一位? ACK:期望对方下一次序列号多少;增加一个数据的长度
TCP传输有限状态机
-
相关问题
Timewait 2MSL, timewait recycle(复用) 丢包怎么办? 重传 ACK机制 滑动窗口 流量控制/拥塞控制
HTTP/HTTP1.1
http分层,关注代码的逻辑
http1.1优化:
长连接
部分传输
Host
缓存
HTTPS
HTTP+加密
SSL/TLS握手:SSL(Secure Socket Layer)安全套接层、TLS(Transport Layer Security)传输层安全
3. 网络优化
网络提速 HTTP2.0
多图并发下载
stream
单个TCP链接传输
TCP丢包怎么办?对头阻塞、等待一个包;->SACK
QUIC/http3.0
QUIC quick udp internet connection
使用UDP,基于用户态实现,0RTT传输,弱网传输优势
路径优化
-
数据中心化:
-
同运营商访问:三大运营商跨网丢包大
-
静态资源(图片视频)路径优化(CDN) 缓存:在边缘机房缓存
-
动态API路径优化(DSA) 根据网络拓扑寻找最优路径
4. 网络稳定
容灾概念:
故障发生、
故障感知、
自动切换、
服务恢复
案例一:
专线:内部机房之间的连接;
案例二:部署两个机房、切断一个使用另一个
1、机房B能够承载机房A
案例三 云到端->主动降级/容灾
案例四 前置兜底逻辑/cache
容灾排查
故障明确
沟通!!! 什么业务?什么接口故障? 故障出现在哪? 访问其他目标是否正常? 是否是修改导致的异常?(回退)
故障止损
先止损再排查:用户体验第一 组件没有容灾,但系统没有 降级
分段排查
客户端排查:客户端访问其他服务;其他服务端 服务端排查:服务端监控/指标正常 手动访问是否正常 分组件排查 中间链路排查:中间网络设备,如交换机/路由器;旁路的DNS有没有问题
网络排查命令
dig 查询DNS问题
排查案例
健康检测异常
-
客户端个例故障: 访问其他网段不同,如防火墙设置禁止访问IP
-
链路故障 服务端正常,某区域流量下降
-
Debug
APP出现故障->后端服务器反馈正常->网络转发设备异常->抓包(认为路由对称)->路由不对称
故障预防!!!
监控报警 故障演练 容灾降级