文章预览
大家好,我是鸟窝。 在前一篇 pping: 被动式ping,计算网络时延 中,我给大家介绍了 pping 这个工具的原理和使用方法。这篇文章中,我将使用 Go 语言实现 pping 工具。 通过这篇文章,你将了解到: 如何使用 gopacket 来捕获和解析网络数据包 如何设置捕获时长和过滤捕获的数据包 如何在 CGO 下静态编译库,如 libpcap 了解 TCP/IP 协议栈的基本知识,如 TCP Option 如何进行数据的统计和定时输出和清理 如何使用 pflag 来解析命令行参数 代码在: github.com/smallnest/pping-go [1] 使用 libpcap 捕获数据包,并进行包过滤 我们并不直接使用 libpcap,而是使用封装好的 gopacket [2] 。 gopacket 是一个用于处理数据包的库,它提供了一个高级的 API,可以用来处理数据包的解析、分析和生成。它支持多种数据包格式,包括 Ethernet、IPv4、IPv6、TCP、UDP、ICMP 等。 我们可以使用 gopacket 来
………………………………