使用rust重写: 和Go版本mping比较

使用rust重写: 和Go版本mping比较

💡 原文中文,约15000字,阅读约需36分钟。
📝

内容提要

本文介绍了使用Rust重写高频探测程序mping的经历和技术考量,详细介绍了获取软硬件时间戳的方法,并对Rust和Go版本mping进行了性能对比。优化后的Rust版本mping在二进制大小、CPU和内存占用方面占优。

🎯

关键要点

  • 本文介绍了使用Rust重写高频探测程序mping的经历和技术考量。
  • 重写mping的目的包括评估Rust开发工具的难度、生态圈成熟度、程序性能及积累网络编程经验。
  • Go版本的mping支持多目标IP探测、网段探测、域名探测、高频探测等功能。
  • mping的实现分为主程序入口、发送、接收和统计打印四个模块。
  • Rust实现中使用structopt库简化命令行参数解析,采用线程代替goroutine。
  • 选择socket2库以实现ICMP包的收发,提供更多设置选项。
  • 实现软硬件时间戳的过程复杂,最终通过chatgpt4.0和Go版本的实现获得成功。
  • Rust版本mping的二进制大小经过优化后为1.6M,Go版本为2.1M,Rust版本占优。
  • 在CPU和内存占用方面,Rust版本的mping CPU占用为0.6%,Go版本为4.2%,Rust版本占优。
  • 时延测试显示Rust版本的mping在探测时延方面表现良好。
➡️

继续阅读