这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
1网络传输中的协议
1.1 ARP协议
-
逻辑同网段才能发送ARP
-
ARP请求广播,ARP应答单播
-
免费ARP --新增了一台服务器,发送免费ARP,让其它服务器进行刷新
--某个服务器新增了一个IP,提前发送免费ARP,提前发现同IP冲突
-
ARP代理
中间设备先应答,劫持ARP请求,再回应将数据具体发送到哪个服务器
-
ARP本质就是查找下一跳MAC
1.2IP协议
MAC地址不能代替IP地址原因:IP地址对二层网络进行了统一,二层协议太多,没办法统一,因此IP地址对下层进行了封装,对网络传输进行了统一
1.3NAT
举个NAT的例子:
如果内部网络地址为10.0.1.1的主机希望访问互联网上地址为135.2.1.1的web服务器时,那么它会产生一个源地址S=10.0.1.1,端口号为3342;目的地址D=135.2.1.1,端口号为80的分组,当分组1到达执行网络地址转换的路由器时,该路由器就需要将分组1的源地址从内部专用IP地址转换为全局IP地址。转换后的结果为:源地址S=200.0.1.1,端口号为5001;目的地址D=135.2.1.1,端口号为80的分组
在不同局域网的内部网络的IP地址可以重复,大家都由NAT向外传输数据。
2.网络传输
2.1数据包的发送
2.2TCP协议
-
TCP的KeepAlive(保活)初衷
1.客户端和服务器需要了解什么时候终止进程或者与对方断开连接
2.应用进程之间没有任何数据交换,但仍然需要通过连接保持一个最小的数据流 KeepAlive是通过一个保活计时器实现的。当计时器被激发,连接一端将发送一个保活探测报文,另一端接收报文的同时会发送一个ACK作为响应。
-
拔了网线,连接会断吗?
如果有tcp的保活,则会断开;如果没有则不断开
在握手过程和传输数据过程中seq和ack的变化
seq是我方发送数据部分的第一位在整个data stream的位置,会根据传输了的信息长度进行改变
ack是期望对方的下一次seq是多少,它与当前接收的数据包的seq和数据长度有关
2.3HTTP协议的迭代
http是对TCP的再封装,它让用户更清晰,更简洁
-
http1.1协议的优化
- 长链接
- 部分传输
- Host
- 缓存
-
https:对传输中的消息进行加密
https是http协议的安全版本,是通过数字证书对客户端的验证
-
http2是对http1.1的升级
http2协议新特性
- 连接方式
- 多路复用
- 二进制协议帧
- 服务端推送 http2.0多路复用,网好的环境下传输快,可以一次传多个请求,但当网络环境不好,会有队头阻塞的问题,而根据TCP协议,是要全部重传的,这样效率也会下降的。
TCP对此也进行了优化,option中指定要重传的序列化,只传丢掉的包就可以,但本质上没有解决队头堵塞问题
-
http3.0
http3.0目前处于制订和测试阶段,是未来的全新的http协议,http3.0协议运行在QUIC协议之上,是在UDP的基础上实现了可靠传输,权衡传输速度与传输可靠性并加以优化,使用UDP将避免TCP的队头阻塞问题,并加快网络传输速度,但同样需要实现可靠传输的机制,http3.0不是http2.0的拓展,http3.0将会是一个全新的协议。
3网络提速
-
对协议进行优化
1.多路复用,但在弱网环境下有队头阻塞问题
2.使用http3.0,解决了队头阻塞问题
-
网络路径优化
1.数据中心分布
2.同运营商访问
3.静态资源(图片视频)路径优化(CDN)
对静态资源进行一个缓存,在边缘机房做一些缓存,先检查是否有缓存,如果没有,再去找汇聚机房,然后再核心机房
4.动态API(播放/评论接口)路径优化(DSA)
4.网络稳定
4.1容灾的概念
指在相同间隔较远的异地,建立两套或多套功能相同的IT系统,互相之间可以进行健康状态监视和功能切换,当一处系统因意外(如火灾/地震等)停止工作时,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。
4.2容灾过程
故障发生--->故障感知--->自动切换--->服务恢复
4.3容灾具体案例
- 具体案例1
- 具体案例2
- 具体案例3
场景局限性:①web页面访问,无法嵌入sdk
②权限限制
- 具体案例4
4.4故障排查
-
故障明确
- 什么业务?什么接口故障
- 故障体现在哪里
- 访问其它目标是否正常
- 是否是修改导致的故障
-
故障止损
-
先止损再排查
-
如何止损
- 组件没有容灾,但是系统有没有?- 降级 -
-
分段排查
-
客户端排查
- 客户端访问其他服务没问题吗?
- 其他客户端访问目标服务没问题吗?
-
服务端排查
- 服务端监控/指标都正常吗
- 手动访问一下正常吗
- 分组件排查
-
中间链路排查
- 服务端跟客户端确保都没问题
- 中间网络设备有没有问题?(交换机/路由器/网关LB)
- 旁路的DNS有没有问题?
-
-
网络故障排查常用命令
- dig查询DNS问题
- ping/telnet/nmap查询三层/四层连通性
- Traceroute排查中间链路 ,丢包吗
- iptables 查询客户端 防火墙的问题?
- tcpdump
4.5 排查具体案例
- 具体案例1
健康检查发生异常,导致正常结点被摘掉
- 具体案例2
- 具体案例3
- 具体案例4