PROJECT_SUMMARY.md 5.1 KB

网络拓扑发现系统 - 项目总结

项目概述

成功开发了一个运行在Windows系统上的网络拓扑发现程序,可以远程获取网络设备的接口信息并自动生成网络拓扑图。

已完成功能

✅ 核心功能

  1. 多厂商设备支持

    • Cisco路由器/交换机
    • 华为路由器/交换机
    • H3C路由器/交换机
    • ASA防火墙
    • Linux服务器
    • Windows Server
  2. SSH远程采集

    • 支持密码认证
    • 支持密钥认证
    • 智能命令执行和输出解析
    • 并发采集提高效率
  3. 拓扑发现

    • 基于LLDP协议发现邻居关系
    • 基于CDP协议发现邻居关系(Cisco)
    • 自动构建拓扑图
    • 支持网段扫描
  4. Web可视化界面

    • 交互式拓扑图展示(Cytoscape.js)
    • 实时扫描进度显示
    • 设备详情查看
    • 支持缩放、拖拽
    • 拓扑导出功能

✅ 技术实现

后端 (Go)

  • SSH客户端封装 (internal/ssh/client.go)
  • 6种设备解析器 (internal/device/)
  • 拓扑构建器 (internal/topology/builder.go)
  • 网络扫描器 (internal/scanner/scanner.go)
  • 配置管理 (internal/config/config.go)
  • HTTP服务器 (cmd/main.go)

前端 (HTML5/CSS3/JavaScript)

  • 响应式布局
  • Cytoscape.js拓扑渲染
  • AJAX异步通信
  • 模态框交互

项目结构

network-topology-discovery/
├── cmd/
│   └── main.go              # 主程序(278行)
├── internal/
│   ├── ssh/
│   │   └── client.go        # SSH客户端(177行)
│   ├── device/
│   │   ├── parser.go        # 解析器接口(94行)
│   │   ├── cisco.go         # Cisco解析器(285行)
│   │   ├── huawei.go        # 华为解析器(170行)
│   │   ├── h3c.go           # H3C解析器(159行)
│   │   ├── asa.go           # ASA解析器(113行)
│   │   ├── linux.go         # Linux解析器(108行)
│   │   └── windows.go       # Windows解析器(200行)
│   ├── topology/
│   │   └── builder.go       # 拓扑构建器(123行)
│   ├── scanner/
│   │   └── scanner.go       # 网络扫描器(129行)
│   └── config/
│       └── config.go        # 配置管理(126行)
├── web/
│   ├── index.html           # Web界面(113行)
│   ├── css/
│   │   └── style.css        # 样式(272行)
│   └── js/
│       └── app.js           # 应用逻辑(344行)
├── pkg/
│   └── models/
│       └── models.go        # 数据模型(95行)
├── build.bat                # 编译脚本
├── start.bat                # 启动脚本
├── config.example.json      # 配置示例
├── README.md                # 使用文档
├── go.mod                   # Go模块文件
└── network-topology.exe     # 编译后的程序(10MB)

总代码量: 约2,800行

使用方法

快速启动

  1. 双击 start.bat 启动程序
  2. 打开浏览器访问 http://localhost:8080
  3. 输入IP范围和SSH凭据,点击"开始扫描"
  4. 等待扫描完成,查看拓扑图

编译程序

  1. 双击 build.bat 编译
  2. 生成 network-topology.exe

配置设备

config.json 中预配置设备:

{
  "devices": [
    {
      "ip": "192.168.1.1",
      "type": "cisco",
      "username": "admin",
      "password": "password"
    }
  ]
}

技术亮点

  1. 并发扫描: 使用goroutine和channel实现高效并发
  2. 智能解析: 正则表达式解析不同厂商的命令输出
  3. 拓扑算法: 基于LLDP/CDP自动发现设备连接关系
  4. 模块化设计: 清晰的架构,易于扩展新设备类型
  5. 嵌入式Web: 静态资源可直接访问,无需额外部署

支持的设备命令

设备类型 版本信息 接口信息 邻居发现
Cisco show version show interface CDP/LLDP
华为 display version display interface LLDP
H3C display version display interface LLDP
ASA show version show interface -
Linux uname -a ip addr show -
Windows systeminfo Get-NetAdapter -

依赖库

  • golang.org/x/crypto/ssh - SSH客户端
  • crypto/rand - 唯一ID生成
  • 标准库: net/http, encoding/json, sync

注意事项

  1. 网络要求: 需要能够SSH访问目标设备
  2. 权限要求: 需要具有执行show/display命令的权限
  3. 防火墙: 确保22端口(SSH)和8080端口(Web)可访问
  4. 性能: 大网段扫描建议使用较高的并发数

后续扩展建议

  1. 支持SNMP协议采集
  2. 添加设备配置备份功能
  3. 支持拓扑自动刷新
  4. 添加告警功能
  5. 支持更多设备厂商
  6. 添加认证中间件
  7. 数据库持久化
  8. API鉴权

编译信息

  • 编译时间: 2026-04-25
  • 文件大小: 10.5 MB
  • 目标平台: Windows AMD64
  • Go版本: 1.22+

测试建议

  1. 在测试环境验证各厂商设备兼容性
  2. 测试大网段扫描性能
  3. 验证拓扑图准确性
  4. 测试并发连接稳定性

开发完成时间: 2026年4月25日 状态: ✅ 已完成,可编译运行