Centos Tshark未通过gdb运行以学习tcp和udp解析器

Centos Tshark未通过gdb运行以学习tcp和udp解析器,centos,wireshark-dissector,Centos,Wireshark Dissector,我已经成功地在centos 6.4上安装了wireshark,我可以运行命令tshark,它工作得非常好。我想运行gdb,以便在编写应用程序时了解它是如何解码tcp和udp数据包的,在这个应用程序中,我需要解析这两种类型的数据包。当我运行libtool--mode=executegdbtshark时,它运行并停止在这里(gdb),它不捕获任何东西。我想通过gdb运行它的原因是为了了解tcp和udp是如何被解析的,因为我不想重新发明轮子。我认为仅仅通过gdb学习tcp解析是不现实的 为什么不直接检

我已经成功地在centos 6.4上安装了wireshark,我可以运行命令tshark,它工作得非常好。我想运行gdb,以便在编写应用程序时了解它是如何解码tcp和udp数据包的,在这个应用程序中,我需要解析这两种类型的数据包。当我运行libtool--mode=executegdbtshark时,它运行并停止在这里(gdb),它不捕获任何东西。我想通过gdb运行它的原因是为了了解tcp和udp是如何被解析的,因为我不想重新发明轮子。

我认为仅仅通过gdb学习tcp解析是不现实的

为什么不直接检查源代码呢?可以下载。所有解剖器都可以在“epan/dissectors/”下找到


您可能特别想查看packet tcp.c和packet udp.c文件,特别是函数dissect_tcp()和dissect_udp()。另外,快速阅读创建剖析器的教程可能会帮助您快速理解此项目的编码约定。

谢谢您,但在您提到之前,我已经进入了该文件夹并获取了数据包tcp.c和数据包http.c。现在的问题是,我可以相应地遵循流程。我现在已经成功捕获了以太网数据包的全部有效负载。因此,从那里我想跟随,直到我可以得到的网址,如果它存在。所以我掌握了我不知道如何遍历的代码。现在的问题是我被困在解析tcp(tvbuff\u t*tvb,packet\u info*pinfo,proto\u tree*tree)中。我不太确定tvb、pinfo和tree?这些到底是什么?@在阅读教程后,只是为了确认*tvb是整个负载还是整个数据包?@new14“解析程序的“tvb”参数指向一个缓冲区,该缓冲区包含解析程序要分析的原始数据;例如,对于在UDP上运行的协议,它包含UDP负载(但不是UDP标头或其上的任何协议标头)。tvbuffer是不透明的数据结构,内部数据结构是隐藏的,必须通过tvbuffer访问器访问数据。“检查”doc/README.developer“更多信息。比如说,从以太网开始,有效负载将是ip,然后在ip中,有效负载将是tcp或udp,对吗?那么如何从这里开始?在这种情况下,tvb将是从一开始的整个有效负载,还是仅从特定层开始?