编 者 按
在 github 上看到的一个开源工具 protocol,是采用 python 进行编写,通过打包成命令行的形式,主要用于通过 ASCII 码来绘制网络报文协议,效果颇为不错,在其源代码的基础上进行了改写,以适用于不同的应用场景。
protocol
但凡是接触过网络报文协议的人大概都对于这种类型的图并不陌生:
在各类标准协议里不乏这样的协议字段定义。前段时间逛 github 发现一个比较不错的开源库:luismartingarcia/protocol,其采用 python 进行编写:An ASCII Header Generator for Network Protocols.感兴趣的小伙伴可以自行去 github 上搜索,其上面的说明文档也比较全面。protocol 内部预定义了大量的网络协议类型定义,其通过打包成命令行的形式可以便捷的绘制各种协议类型的字段分布图:
除此之外,其也可以通过命令行传参的形式自定义协议类型:
在使用时非常简单,通过传入字符串的形式来定义协议类型,每个协议字段通过协议名:比特数的形式进行定义,协议字段之间通过,进行分割。
protocol 工具适用起来还是非常便捷的,但其目的主要是为了实现网络报文协议,所以其遵循的是网络字节序,为了实现更通用,在原作者的基础上自行又添加了一些其他功能。
-lsb
由于 protocol 默认字节序为大尾端,为了更通用,扩展了一个命令行参数-lsb 用于实现小尾端:
默认情况下仍为大尾端,通过添加-lsb 参数可以在显示时转换为小尾端,如此更加通用。
-ph
来看下下面的 demo:
由于协议字段名称所用字符过多,导致无法显示完全,故以 BB.形式进行显示。
在 protocol 中,一个 bit 默认会对应两个占位符,这里以两个展位符为一个单位,通过给命令行新增一个-ph 参数用于指定每个字符需要的展位符个数,以便进行调整,使用效果如下:
写在最后
扩展后的 protocol 目前暂存在个人的 github 目录上,感兴趣的小伙伴可以通过“阅读原文”的形式跳转到 github 链接。
END
作者:玉骐
文章来源:Spinal FPGA
推荐阅读
- PCIe 调试:超级好用的 rescan 与 remove 命令
- 使用 scp 命令跨服务器传输文件
- PCIE , USB , SATA , Ethernet 都在用的 SerDes 到底是个啥?
- 学会用代码绘制接口时序图
- RISC-V笔记——内存模型公理
更多 IC 设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。