计算机网络基本概念和实际应用
这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记
网络接入协议
路由
-
同网段发包?
逻辑交换机改MAC就行
-
不同网段发包
to 10.0.1.1/24 via 10.0.0.254 提供中间路由路径 default via 10.0.0.254(网关)
-
不一定是对称的
-
不一定是网络层的,也可能涉及到传输层
-
路由是改MAC,找到发包口
ARP
-
逻辑同网段才能发ARP,广播不能跨网段
-
ARP请求广播,ARP应答单播
-
免费ARP
- 设备新加入网段时主动发送ARP
- 新增IP时,提前判断IP冲突
-
ARP代理
- 劫持ARP请求发向其他地方
IP
-
MAC为什么不能代替IP
向下兼容二层除了MAC之外的协议
-
IPv4不够用的解决方法
- NAT
NAT
- 解决IP不够用
- 用端口号识别不同主机
网络传输协议
DNS
-
UDP
-
分片
- 因为MTU传输有限制
-
丢包
- IP层没有提供可靠传输,丢了一份就要重传
-
TCP
-
拔了网线已经建立的TCP会断吗
- 保活,心跳包
-
Option
-
很多都是在三次握手时进行交互
-
时间戳
-
分片参数
-
MSS
-
三次握手确认的
MTU: Maximum Transmit Unit,最大传输单元,即物理接口(数据链路层)提供给其上层最大一次传输数据的大小,比如IP层、MPLS层等等,因为目前应用最多的接口是以太网,所以谈谈以太网口的MTU,假定其上层协议是IP,缺省MTU=1500,意思是:整个IP包最大从这个接口发送出去的是1500个字节。可以通过配置修改成更大或更小的值,只要在系统的边界值以内即可,但是切记要在链路的两端都要修改,而且要大小一样,如果不一样,会造成大侧的数据被小侧丢弃!
-
-
-
MSS:Maximum Segment Size ,最大TCP分段大小,不包含TCP头和 option,只包含TCP Payload ,TCP用来限制自己每次发送的最大分段尺寸。
-
ACK
- 传输时seq不会+1
- 子主题 2
-
seq
- 当前packet在整个数据流里的位置
-
ack
- 期望接收到的下一次的seq
- ACK的seq不会+1,SYN和FIN会+1
-
TIME_WAIT
-
参数
- reuse
-
HTTP
-
为什么要HTTP
- 已经规定好交互原则,可以专注于代码
- TCP的内容已经很多了
-
HTTP1
- 长连接
- 缓存
-
2.0
-
多路复用
-
多个stream,stream本身是串行的
-
但是丢包的时候可能造成队头阻塞
- SACK解决
-
-
网络稳定
容灾
-
概念
-
故障发生
-
故障感知
- 监控或者上报
-
自动切换
-
服务恢复
-
-
案例
-
机房之间,能走专线走专线,不能也可以走外网
-
子主题 2
-
云控
-
SDK里添加容灾功能
- 所以Web页面是使用不了的
-
云到端 -> 主动降级/容灾,服务器挂掉的时候可以自动切换
-
-
静态资源降级
- bug导致全crash,使用兜底逻辑/cache文件
-
排查
-
故障明确
- 是否是上下游的问题
- 是否是自身修改导致的问题
-
故障止损
-
先止损再排查
- 容灾/降级
-
-
故障排查
-
分段排查
-
客户端
- 客户端访问其他服务
- 其他客户端访问服务
-
服务端
- 监控/指标正常吗
- 手动访问正常吗
-
中间链路
-
-
-
网络排查常用命令
- dig查DNS问题
- ping/telnet/nmap查三层/四层连通性
- traceroute查中间链路
- iptabels
- tcpdump
-
案例
-
客户端个例
- 防火墙问题
-
安徽电信报障某APP无法使用->检测后端服务正常,安徽电信流量突降->安徽电信客户端ping不通目标服务- > 电缆被挖断
-
-
预防
- 监控报警
- 故障演练/预案
- 故障降级/止损
网络优化
协议优化
-
QUIC/HTTP3.0
- 为什么在用户态
- 对2.0的多路复用优化,解决队头阻塞
- 优势是弱网传输
- HTTPs加密
数据中心分布
-
核心机房
- 负责生产,上传的会传到这里
-
边缘机房
- 小运营商
-
POP接入
- 运营商
同运营商访问
- 跨网的访问质量差
- 通过IP解析来实现
cdn
- 静态资源(图片视频)路径优化
DSA
-
动态API(播放/评论接口)路径优化
- 在网络拓扑里找延迟最低路径,算法实现
\