这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
网络接入
互联网框架:
丢包、卡顿问题一般出现在“最后一公里”,运营商一般不会出现故障
路由
路由工作在IP层,路由不是改IP地址,而是改MAC地址。
路由是为了找目标的路,一旦找到下一跳,是为了告诉二层交换时下一跳往哪个MAC地址发
掩码: 决定子网的范围是多大。如果一个ip在子网掩码以内的,称为同网段。
同网段不仅有直连的方式,更多的方式是交换机/逻辑交换机
同网段不一定接入同一个物理逻辑的交换机,可能是软件定义网络的虚拟的同网段
在同网段下已知目标ip,查询ip的mac地址,然后发送报文
在不同网段:
路由不一定是对称的:
用户A到用户H,出发和返回的路不一定是一条路,但一般是一条路
ARP协议
ARP的本质时查找下一跳的MAC,不是请求目标地址
逻辑的同网段才能发送ARP请求,不同网段不能发送ARP。如果是不同网段需要路由器执行下一跳,跳到对应的网段才能发送ARP
ARP请求广播,ARP应答单播
免费ARP:不用请求就告诉ARP地址。常用局域网里新加一台设备,新加的设备通常会发送免费ARP
IP协议
唯一标识,互联网通用。抖音客户端一个、服务端一个
IP协议产生的原因:地址的统一问题,二层协议有很多不兼容的地方,比如有的支持MAC,有的不支持MAC,所以向上又封装了一层,统一用IP地址去标识
IPV4不够用的解决方法:IPV6、net(路由器)
net不仅修改IP,还改端口。解决多个内网客户端访问同一个目标地址+端口,源端口恰好一样的问题
网络传输
数据包:见计算机网络。按层去分的
数据包的发送:
DNS协议:
关注递归迭代,客户端递归请求递归解析器,递归解析器迭代请求DNS服务器
UDP协议
UDP很难用好,比如用UDP实现可靠视频流
TCP协议、HTTP协议、HTTPS协议
重要概念等都在计网,这里不再写
网络架构给抖音做提质
网络提速:HTTP 2.0
最主要的思想:多路复用
多个stream在一个TCP连接通道里面串行访问,看起来像并行访问
QUIC HTTP3.0
使用UDP协议、在用户态实现
网络路径优化:
数据中心分布
POP接入是字节服务器接入运营商的机房
同运营商访问,电信用户接入电信网络等
静态资源(图片视频)路径优化:缓存
动态API(播放/评论接口)路径优化:
网络提速的优化
容灾概念:故障发生、故障感知、自动切换、服务回复
案例一:
一般走专线调用,专线不可用调外网容灾
案例二:
A命令,当发现A机房不可用之后,域名解析自动换成B机房的IP
案例三:
云到端:通过SDK主动降级容灾,但是有场景局限性(用户统一)
案例四:
Bug导致Crash,可以做前置兜底(Cache)。本质上是做降级,将上一层的数据返回去
如果没有容灾系统:
故障明确:
- 什么业务、什么接口故障
- 故障体现在哪里
- 访问其他目标是否正常
- 是否是修改导致的异常
故障止损:先止损再排查
分段排查:
客户端排查、服务端排查、中间链路排查
常见的排查命令:
- dig查询DNS问题
- ping/telnet/nmap查询三层/四层连通性
- Traceroute排查中间链路
- iptabels
- tcpdump
企业接入升级打怪之路
假设一家example公司
域名管理
Host管理: 用一张主机表存储域名解析
使用域名系统替换Host
域名空间:树形结构,划分zone的方式进行分层授权管理,全球公共域名空间仅一棵树。根域名服务器:查询节点
要想拿到域名,首先得在云服务厂商购买域名。
买到域名之后还要域名备案。
example公司可以清除/etc/hosts文件,然后配置/etc/resolv.conf中nameservers为公共DNS迁移原配置,通过控制台添加解析记录即可
开放外部用户访问:
方案:租赁外网ip,专用于外部用户访问门户网站,将www.example.com解析到外网ip上,将改ip绑定到一台物理机上,并发布公网route,用于外部用户访问
自建DNS服务器
目前的问题:
- 内网域名解析也得出公网获取,效率低下
- 外网用户能看到内网ip地址,容易被攻击
- 云厂商权威DNS容易出故障,影响用户体验