- ✅ Task1基础
⚠️ Task1提高- ✅ Task2
- ✅ Task3基础
- ✅ Task3提高
- ✅ Task4基础
- ✅ Task4提高
- ✅ Task5基础
⚠️ Task5提高- ✅ Task6基础
⚠️ Task6提高
.
├── cache
│ └── __init__.py # dns查询缓存模块
├── client
│ ├── __init__.py # socket客户端模块init,空
│ ├── tcp.py # tcp客户端模块
│ └── udp.py # udp客户端模块
├── decoder
│ ├── __init__.py # dns查询解码模块init,空
│ ├── fetch_data.py # 发送查询模块,将请求转发到dns服务器,并返回结果
│ └── process_query.py # 解码查询模块,将二进制解码为人类可读
├── generator
│ └── generate.py # dns查询生成模块
├── server
│ ├── __init__.py # socket服务端模块init,空
│ ├── tcp.py # tcp服务端模块
│ └── udp.py # udp服务端模块
├── README.md # 本文件
├── cache.pickle # 查询缓存
├── client.py # socket客户端
├── diary.md # 开发日志
├── query.py # dns查询器,支持命令传参/cli使用
├── query_server.py # dns服务器
├── requirements.txt # 依赖库
├── server.py # socket服务端
├── server_conf.yaml # socket服务端配置
└── task2.md # task2
- ✅ 简单的client,可自定义协议
- ✅ 简单的server,通过更改配置文件改变监听端口、地址、类型
参考资料: socket使用 调用其他文件中的class
- ✅ 命令行支持
- ✅ 发送文件
- ❌ 并发处理
- ❌ 限制请求频率
- ❓ 支持POST/GET
参考资料: argparse使用
详见 task2.md
- ✅ 支持解析与编码A
- ✅ 支持解析多个返回
- ✅ 支持存储不支持的type
- ✅ 支持解析与编码MX TXT NS CNAME AAAA
- ✅ 可指定服务器、端口
- ✅ 支持指定是否进行递归
- ✅ 解析输出
- ✅ 显示错误
- ✅ 支持命令行处理
- ✅ 支持AAAA MX CNAME NS TXT
- ✅ 超时、重试
- ✅ 支持tcp
- ✅ 接受请求并返回查询结果
- ✅ 可拒绝递归请求
- ✅ 内存cache
- ✅ cache根据ttl自动刷新
- ✅ 可指定不缓存
- ✅ 支持超时重试
- ✅ 可本地部署
- ✅ 支持A AAAA MX CNAME TXT NS
- ✅ tcp查询
- ✅ 支持将缓存保存为文件(使用pickle处理)
- ✅ 支持重试、错误
- ❌ 负载均衡
- ❌ 并发
- ✅ 支持递归查询
- ✅ 支持历史记录
- ✅ 支持输出差异
- ✅ 支持收藏
- ✅ 添加排行榜
- ✅添加cli
- ❌发送查询记录
- ❌共享收藏夹