这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记。本文旨在对网络原理和网络协议建立起整体的认识,并介绍网络提速和网络稳定的技术手段。
1. 网络接入
路由
- 路由不一定是对称的,其工作在IP层和传输层(动态路由协议)
- 路由修改MAC地址,找发包口,IP地址保持不变
ARP协议
- 逻辑同网段才能发送ARP,本质是查找下一跳的MAC
- ARP请求广播,应答单播
- 免费ARP(防止IP冲突) vs. ARP代理(网关,进行抢先应答) IP协议
- MAC地址不能代替IP地址,IP协议为了向下兼容
- NAT:利用IP+端口来解决IPv4地址不足的问题。
2. 网络传输
数据包发送全流程
- 先请求DNS
- 递归解析、迭代解析
- DNS传输协议:UDP协议
- TCP三次握手
- 拔了网线,TCP连接不会中断。引入心跳检测机制
- TCP协议Options字段可以携带MSS和时间戳信息
- 第一次握手:客户端给服务器发送一个SYN段(在 TCP 标头中 SYN 位字段为 1 的 TCP/IP 数据包), 该段中也包含客户端的初始序列号(Sequence number = J)。
- 第二次握手:服务器返回客户端 SYN +ACK 段(在 TCP 标头中SYN和ACK位字段都为 1 的 TCP/IP 数据包), 该段中包含服务器的初始序列号(Sequence number = K);同时使 Acknowledgment number = J + 1来表示确认已收到客户端的 SYN段(Sequence number = J)。
- 第三次握手:客户端给服务器响应一个ACK段(在 TCP 标头中 ACK 位字段为 1 的 TCP/IP 数据包), 该段中使 Acknowledgment number = K + 1来表示确认已收到服务器的 SYN段(Sequence number = K)。
- HTTP/HTTP1.1
- HTTP只是对TCP多加了一层规则,HTTP依然是TCP。
- 主要的优化点:长连接、部分传输、HOST、缓存
- HTTPS:非对称加密加密密钥,对称加密加密HTTP
3. 网络提速
- HTTP2.0:多路复用(streams)
- QUIC/HTTP3.0:解决对头阻塞问题
- UDP协议
- 用户态实现
- 0 RTT
- 弱网传输优势
- 静态资源路径优化(CDN):图片、视频
- 动态API路径优化:播放、评论接口
4. 网络稳定
- 容灾概念:故障发生、故障感知、自动切换、服务恢复
- 故障明确、故障止损、分段排查(客户端排查、服务端排查、中间链路排查)
- dig查询DNS问题
- ping/telnet/nmap查询三层/四层问题
- traceroute排查中间链路
- iptables
- tcpdump