- 网络打通
互联网
路由:同网段-SDN(网络虚拟化);跨网段
- 路由不一定是对称的
- 路由工作在IP层,但不一定只在IP层
ARP协议
- 逻辑同网段才能发送ARP
- ARP请求广播,ARP应答单播
- 免费ARP:不用请求就可得知ARP地址,提前判断IP是否有冲突
- ARP代理
IP协议:唯一标识,互联网通用
Mac地址不能代替IP地址:二层协议有很多
IPv4不够用,如何解决:NAT(家里路由器),内部用户通过NAT设备改源地址IP+端口,不同地址映射到一个地址进行联网
- 网络传输
数据包
数据包发送
先请求DNS:DNS协议UDP,递归请求
TCP三次握手
- Timewait?
- 丢包怎么办?
- 滑动窗口
- 流量控制
HTTP/HTTP1.1
- 为什么不用TCP通信?关注代码本身,不用关注协议具体实现
- HTTP本质还是TCP,使用户更简洁
HTTPS:解密出来仍然是HTTP
SSL/TLS握手:对称加密和非对称加密
- 网络架构
3.1 网络提速
HTTP2.0:多图并发下载
多路复用
HTTP3.0/QUIC:
- TCP(对)/UDP
- kernel/userspace(√)
- 0 RTT:本身支持HTTP协议
- 弱网优势
数据中心分布
同运营商访问
动态API路径优化
- 网络提速优化
容灾:
- 专线
- 外网
- 自动化容灾系统
- SDK,云到端,主动降级容灾
故障排查:故障明确-故障止损-故障排查
dig;ping/telnet/nmap;traceroute;iptables;tcpdump
1. UDP socket实现ack,感知丢包重传
- 学会UDP socket编程
- 简单的ack'学习,客户端等待ack再发包
- 什么时候客户端认为是丢包
- 重传怎么考虑效率
- 能不能不阻塞只穿丢掉的中间的段
2. 三台同网段内服务器,模拟实现一个路由器
1. Linux操作系统配置
- 了解Linux路由配置方式
- 确保是同网段直连可达的环境。在三台机器上另外配置IP网段和路由。
- 一台机器做客户端,一台机器做路由器,一台机器做服务端
- 客户端配置到达服务器的下一跳指向路由器,路由器上配置到达服务器的路由
2. 用户态socket编程实现简易route软件
- 收到指定的包后,做转发
- 注意是修改报文的MAC,不是修改IP
- 实现一个对称路由,可以实现TCP交互
- 通过ping验证
- 可以支持traceroute么