wireshark插件,如何关联请求应答(如ping协议)?

缘起 最近工作中,接触的内部协议比较多(项目历史原因),于是想编写 wireshark plugin,来辅助分析业务报文, 从中寻找包含特定请求的报文。 遇到一个问题,如何对请求和应答进行关联,我知道 wireshark 解析 ping 协议,是支持ping-pong相互跳转的。 于是想自己写的协议插件,也具有这种功能,于是开始google。 在 wireshark 社区找到了sindy大神的这段回答,很受启发。原文如下: The dissector code has no access to pinfo of any other packet than the one currently dissected. If some transaction ID exists in modbus which allows you to match requests and responses, you may use two global tables indexed by this transaction ID and store the frame.number of the currently dissected packet to the appropriate table (request{transactionId} or response{transactionId}) during the first pass of the dissector (after loading the file, all packets are dissected in sequence). Whenever……

阅读全文

Go 必须知道的 18 个Go开发库

包含各种使用场景的Go第三方列表。 随着时间的推移,Go语言爱好者已经创建并共享了许多Go框架和库。这些库有不同的功能,从微服务开发到构建web应用程序! 备注:在Go语言中我们都称第三方库为package(包)。 配置文件处理库 配置文件通常以各种格式编写,如JSON和YAML。Go有一个非常有用的包,它使读取和写入各种格式的配置文件成为小菜一碟。 1、Viper:这是一个关于Go应用程序配置处理的完整解决方案,包括12-Factor应用程序。它作用在应用程序中,可以处理所有类型的配置文件和格式。 可以读……

阅读全文

Go 常用的包推荐 (持续更新)

更新日志 2023-12-15 增加 cron, automaxprocs, goquery 常用库介绍 2022-09-05 更新 goup v0.5.2 使用说明 2022-02-13 增加 goup 使用 2021-06-10 增加 go-set 使用 2020-11-17 初始版本 1 Go 常用工具包推荐 1 stringer 为枚举量生成String()方法 go install golang.org/x/tools/cmd/stringer 2 pretty 格式化打印任意 go 对象,开发测试打印大对象,非常有用 (这样就不用json.Marshal再打印) go install github.com/kylelemons/godebug 3 GoMock 2 调试工具 Delve 源码调试工具 安装: go install github.com/go-delve/delve/cmd/dlv@latest 快速上手: 1 2 3 $ dlv debug main.go $ > break main.main $ > continue 3 常用开发库 1 http-router 高性能、可扩展的HTTP路由 2 easyjson 高性能的Json Marshaler, 适用于有schema的Json数据 3 set set集合数据结构,基于原生 map 实现 4 测试框架 1 goconvey 简单易用的go测试框架,……

阅读全文

g++ -Wall 不会提示 narrow-cast 的警告

Preface 最近在使用 go 重构C++旧项目, 发现一个旧代码的bug,很有意思;下面展示一下简化的代码: 1 2 3 4 int64_t ip = 12345678; std::string str; str = ip; std::cout << "str = " << str << std::endl; // str = N 我的第一感觉是: 第三行应该编译报错吧,于是写了个hello world,然后g++ -Wall ..., 竟然编译过了还能正常运行, 神奇吧。 于是探其究竟,原来string重载了赋值符号=, 支持单个字符 char 的赋值,int64在这里发生了窄转换。 源码如下: 1 2 3 4 basic_string& operator=(_CharT __c) { this->assign(1, __c); return *this; } 这就解释了为啥输出字符"N", int64转换成 char,仅保留了最低的一个字节……

阅读全文

Eureka 服务注册与发现-原理分析

1 Preface

Eureka 是Netflix开发的服务发现框架,本身是一个基于REST的服务。

SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务注册与发现功能。

在 Spring 全家桶中, Eureka 是一个微服务注册中心,主要提供服务的注册与发现,另一个功能就是服务配置获取。

2 Eureka 核心概念

Eureka 作为 Spring Cloud 体系中核心、默认的注册中心组件,研究它的运行机制,有助于我们在工作中更好地使用它。

下图: 服务注册+调用示意图, 服务提供者和服务的消费者,本质上也是 Eureka Client 角色。
整体上可以分为两个主体:Eureka ServerEureka Client

Eureka

……

阅读全文

Git 项目仓库中的 OWNERS 文件

1 Git 在开发中的常用术语 在团队开发过程中,我们经常会看到如下术语(terms),下面记录一下: terms means 翻译 WIP Work in progress, do not merge yet. 开发中 LGTM Looks good to me. Riview 完别人的 PR,没有问题,可以合并了 PTAL Please take a look. 帮我看下,一般都是请别人 review 自己的 PR CC Carbon copy 一般代表抄送别人的意思 RFC request for comments. 我觉得这个想法很好, 我们来一起讨论下 IIRC if I recall correctly. 如果我没记错 ACK acknowledgement. 我确认了或者我接受了,我承认了 NACK/NAK negative acknowledgement. 我不同意 2 OWNERS 文件 k8s 使用 owners 文件的灵感来自于Chromium OWNERS文件 owners 文件主要是为了解决代码审查过程中的问题: 项目中代码审查的速度, 受到能够审查代码的……

阅读全文

Seastar 之 ready_future(3)

1 什么是 ready_future

如果一个 future 在当下就已经有结果了,不必等到未来某个时刻, 我们把这个 future 称为 ready_future

ready_future 的不同之处在于:

(1) ready_future 可以单独使用,不必关联一个promise;
(2) ready_future.then(lambda) 会把传入的lambda立即执行掉, 也就是说这个lambda没有机会放入任务队列;
(3) 而not_ready_future每次执行,产生的新任务都会被放入任务队列,然后依此取出来执行。

……

阅读全文

CPU Cache 架构

1 SMP (Symmetric Multi-Processor) 对称式多处理器 (SMP) 是一种计算机系统结构。 多处理器结构有两种: (l) 对称 —— 多个处理器都是等价的,线程每次受调度运行时都可以动态选择在任何一个处理器上运行。 (2) 非对称 —— 处理器的结构、能力、所处的部位、和作用都各不相同,不同的线程只能在特定的处理器上运行。 通用 CPU 一般都是对称多处理器,生活中常见的CPU有 Intel Core 和 AMD 的CPU。 现代CPU朝着多核,多线程的方向发展。因为内存的存取速度远远跟不上CPU的执行速度, 所以引入了L1, L2,L3 级cache,L1 cache最小,分为指令cache和数据cache两种,两者……

阅读全文

Seastar 之核间通信 (2)

1 0核和任一个核通信

Seastar 使用 eventfd 进行核间(线程间)通信,因为每个线程使用内核API sched_set_affinity(),绑定一个 SMP 的 core,所以我们这里称之为核间通信

Seastar 创建了一个 N*N 的 event_fd 矩阵,每个单元格上两个event_fd,每一行event_fds由一个线程(Core)管理。
也就是说每个线程的 epoll 上,一共需要侦听 2N 个 event_fd。

示意图如下:

f-p-inter-code-communication

……

阅读全文

多模匹配之AC自动机

1 Preface

Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法。

AC自动机算法分为3步:(1)构造一棵Trie树,(2)构造Fail指针, (3) 模式匹配过程

ac-automation

……

阅读全文

最近文章

分类

友情链接

标签

其它