网络接入详解 | 青训营

90 阅读3分钟

网络接入

image.png

路由

1、路由不一定是对称

image.png

2、路由是改Mac,找到发包口

ARP协议

image.png

1、逻辑同网段才能发送ARP

2、ARP请求广播,ARP应答单播

3、免费ARP

4、ARP代理

ARP本质上是查找下一跳的MAC,不是请求目标地址!

IP协议

1、唯一标识,互联网通用

2、Mac地址不能代替IP地址(为了向下兼容)

NAT

image.png

网络传输

数据包发送

image.png

先请求DNS

客户端发www.douyin.com 的解析请求递归解析器去问com.去哪里解析递归解析器去问“com.”douyin.com去哪里解析douyin.com告诉递归解 www.douyin.com/ 解析到 xxx

image.png

DNS的传输协议UDP

image.png

1、UDP本身相对简单

2、UDP用好很难

  • 发包每次发多少? 怎么避免分片

  • 怎么知道没丢包?

  • 怎么权衡传输效率和质量?

总结: 想发什么包,就分配一个UDP的头,把payload里面塞数据发出去就好!

TCP 传输

sequence number: 表示的是我方 (发送方) 这边,这个packet的数据部分的第一位应该在整个data stream中所在的位置

acknowledge number: 表示的是期望的对方(接收方) 的下一次sequence number是多小注意,SYN/FIN的传输虽然没有data,但是会让下一次传输的packet seg增加一,但是,ACK的传输,不会让下一次的传输packet加一

image.png

image.png

HTTP/HTTP1.1

Socket TCP stream流去发包,一样不用我们去关心TCP的细节,怎么去ack,怎么流控都是内核帮我做好了

但是这个stream流你自己写代码的时候,肯定还会做一些约束自定义协议),那HTTP本质上就是一种在TCP之上的自定义协议

image.png

其实HTTP只是多加了一层规矩。HTTP依然是TCP,只是这个规矩让用户更清晰/更简洁

HTTPS

HTTPS解密出来依然是HTTP

SSL/TLS 握手

箱子非常难开,非对称加密非常消耗资源。TLS的优化也主要集中在非对称加密.

对称加密和非对称加密

image.png

确保没有劫持,也确保私钥不泄密

image.png

网络提速

HTTP2.0

多图并发下载

image.png

多路复用/stream

image.png

QUIC/HTTP3.0

Quic不是四层协议

1、UDP

2、Userspace

3、0 RTT

4、弱网优势

image.png

1、数据中心分布

2、同运营商访问

image.png

3、静态资源(图片视频)路径优化 (CDN)

image.png

4、动态AP(播放/评论接口) 路径优化 (DSA)

image.png

网络稳定

容灾

容灾大多是通过网络手段去控制的

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、故障降级/止损