gpt4 book ai didi

tcp - TCP 选项的解析器

转载 作者:可可西里 更新时间:2023-11-01 02:33:12 28 4
gpt4 key购买 nike

我是在 Lua 中编写解析器的新手,我有两个简短的问题。我有一个包含 TCP 选项的数据包,如 MSS、TCP SACK、时间戳、NOP、窗口比例、未知。我基本上是在尝试剖析 TCP 选项字段中的未知部分。我知道我将不得不使用链式解剖器。

第一个问题是在使用链式解析器解析TCP选项时,我是否必须从头解析所有选项。例如,我是否需要解析 MSS、TCP SACK、...,然后最终解析未知部分,或者是否有任何直接方法可以让我跳转到未知部分。

我的第二个问题是我已经看过许多自定义协议(protocol)解析器的代码,如果我需要解析遵循(例如)TCP 的协议(protocol),那么我必须包括以下内容:

-- load the tcp.port table
tcp_table = DissectorTable.get("tcp.port")
-- register our protocol to handle tcp port
tcp_table:add(port,myproto_tcp_proto)

我的问题是,无论如何我都可以跳到协议(protocol)的中间。例如,在我的例子中,我想解析 TCP 选项。我可以直接调用 tcp.options 并且解析器将从选项开始的地方开始剖析吗?

最佳答案

TCP选项是“uint8_t type; uint8_t len; uint8_t* data”结构。我通常给常用的起一个名字。例如getSack()、getMss()。对于其他人,将它们保存在一个数组中(最大大小如 20)。

对于你的第二个问题,你的意思是你不关心 TCP header ,对吗?如果是这样,只需将指针再移动 20 个字节即可访问 TCP 选项。

关于tcp - TCP 选项的解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19044592/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com