网络接入
路由
1、路由不一定是对称
2、路由是改Mac,找到发包口
ARP协议
1、逻辑同网段才能发送ARP
2、ARP请求广播,ARP应答单播
3、免费ARP
4、ARP代理
ARP本质上是查找下一跳的MAC,不是请求目标地址!
IP协议
1、唯一标识,互联网通用
2、Mac地址不能代替IP地址(为了向下兼容)
NAT
网络传输
数据包发送
先请求DNS
客户端发www.douyin.com 的解析请求递归解析器去问com.去哪里解析递归解析器去问“com.”douyin.com去哪里解析douyin.com告诉递归解 www.douyin.com/ 解析到 xxx
DNS的传输协议UDP
1、UDP本身相对简单
2、UDP用好很难
-
发包每次发多少? 怎么避免分片
-
怎么知道没丢包?
-
怎么权衡传输效率和质量?
总结: 想发什么包,就分配一个UDP的头,把payload里面塞数据发出去就好!
TCP 传输
sequence number: 表示的是我方 (发送方) 这边,这个packet的数据部分的第一位应该在整个data stream中所在的位置
acknowledge number: 表示的是期望的对方(接收方) 的下一次sequence number是多小注意,SYN/FIN的传输虽然没有data,但是会让下一次传输的packet seg增加一,但是,ACK的传输,不会让下一次的传输packet加一
HTTP/HTTP1.1
Socket TCP stream流去发包,一样不用我们去关心TCP的细节,怎么去ack,怎么流控都是内核帮我做好了
但是这个stream流你自己写代码的时候,肯定还会做一些约束自定义协议),那HTTP本质上就是一种在TCP之上的自定义协议
其实HTTP只是多加了一层规矩。HTTP依然是TCP,只是这个规矩让用户更清晰/更简洁
HTTPS
HTTPS解密出来依然是HTTP
SSL/TLS 握手
箱子非常难开,非对称加密非常消耗资源。TLS的优化也主要集中在非对称加密.
对称加密和非对称加密
确保没有劫持,也确保私钥不泄密
网络提速
HTTP2.0
多图并发下载
多路复用/stream
QUIC/HTTP3.0
Quic不是四层协议
1、UDP
2、Userspace
3、0 RTT
4、弱网优势
1、数据中心分布
2、同运营商访问
3、静态资源(图片视频)路径优化 (CDN)
4、动态AP(播放/评论接口) 路径优化 (DSA)
网络稳定
容灾
容灾大多是通过网络手段去控制的
1、故障发生
2、故障感知
3、自动切换
4、服务恢复
故障排查
1、故障明确
2、故障止损
3、分段排查
故障明确
出现什么故障? >沟通是前提
1、什么业务? 什么接口故障?
2、故障体现在哪里?
3、访问其他目标是否正常?
4、是否是修改导致的异常?
故障止损
先止损再排查
1、用户体验第一
2、对公司收入的影响是按照分钟甚至秒来计算
如何止损
1、组件没有容灾,但是系统有没有?
2、降级
分段排查
客户端排查
1、客户端访问其他服务没问题吗?
2、其他客户端访问目标服务没问题吗?
服务端排查
1、服务端监控/指标都正常吗?
2、手动访问一下正常吗?
3、分组件排查
中间链路排查
1、服务端跟客户端确保都没问题
2、中间网络设备有没有问题?(交换机/路由器/网关LB)
3、旁路的DNS有没有问题?
网络故障排查常用命令
1、dig查询DNS问题
2、ping/telnet/nmap查询三层/四层连通性
3、Traceroute排查中间链路
4、iptabels
5、tcpdump
故障预防很重要
1、监控报警
2、故障演练/预案
3、故障降级/止损