Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在单个TCP标头中多次出现diameter消息_Tcp_Wireshark_Tshark_Diameter Protocol - Fatal编程技术网

在单个TCP标头中多次出现diameter消息

在单个TCP标头中多次出现diameter消息,tcp,wireshark,tshark,diameter-protocol,Tcp,Wireshark,Tshark,Diameter Protocol,我想使用tshark来过滤和处理diameter消息。在我的捕获中,我看到在一个TCP头中有三条diameter消息。我的用例要求我在diameter消息中搜索结果代码。根据直径规范,在单个直径消息中可能有多个结果代码。直径消息中也可能没有结果代码 由于这个原因,如果我得到三个diameter消息的结果代码A、B、C,我无法识别哪个结果代码属于哪个diameter消息 有没有可能应用一些插件/功能来帮助我拆分这三条消息 我可以看到在中有一个关于类似主题的旧链,但没有关于如何实现的答案。首先,您关

我想使用tshark来过滤和处理diameter消息。在我的捕获中,我看到在一个TCP头中有三条diameter消息。我的用例要求我在diameter消息中搜索结果代码。根据直径规范,在单个直径消息中可能有多个结果代码。直径消息中也可能没有结果代码

由于这个原因,如果我得到三个diameter消息的结果代码A、B、C,我无法识别哪个结果代码属于哪个diameter消息

有没有可能应用一些插件/功能来帮助我拆分这三条消息


我可以看到在中有一个关于类似主题的旧链,但没有关于如何实现的答案。

首先,您关于结果代码的假设是错误的

根据RFC 6733(3588表示相同):

7.1。结果代码

结果代码AVP(AVP代码268)的类型为Unsigned32且
指示特定请求是否已成功完成或
发生了一个错误。IETF中定义的所有应答消息
直径应用规格必须包括一个结果代码AVP


如果您使用wireshark,您将能够单独查看每个答案,并且您将能够轻松查看每个答案所属的AVP。在分析大量diameter消息时,在单个TCP有效负载中管理合并的diameter消息变得非常棘手

例如:

tshark -Tfields -e diameter.Session-Id -e diameter.Result-Code -e diameter.CC-Total-Octets -r mydiametercap.pcap -Y "diameter.Result-Code" > session-ids-and-results.txt
此命令有时会给我以下(抽象)输出:

,,
我不能相信所有字段都遵循相同的约定,因此不能使用可靠的解析算法来查看结果。更糟糕的是,如果您认为AVP(在这个diameter实现中以非常平坦的方式进行解释)可能属于MSCC部分或完全不同的部分,并且没有什么可以分离它们


别误会我:切克规则…:-)只是想让它变得更好。

首先,我需要使用tshark来处理捕获,而不是wireshark。这是因为我必须分析大约10Gb大小的文件。此外,我同意规范要求每个diameter消息中必须有一个结果代码。也可能单个diameter消息包含多个结果代码(一个结果代码在命令级别,另一个在一些分组AVP中)。因此,如果我正在处理的diameter消息之一包含此模式,则很难将结果代码映射到diameter会话id。如果您有3个答案和3个结果代码,我就不会担心多个结果代码。无论如何,当我想要分割一个大的捕获文件时,我会将cap文件带到windows并使用随wireshark一起安装的editcap.exe(尽管我从未尝试过10GB)。你可以在这里找到更多关于它的数据:@RajeevMenon你需要一个工具,可以将一个tcp数据包拆分成多个较小的tcp数据包,每个数据包包含一个单独的响应。是的。类似的东西。根据规范,可以在TCP数据包中包含多个直径数据包。我的目标是一个接一个地检索它们。我找到了解决这个问题的方法。它很长,但很有效!tshark提供了转换为xml文件的灵活性,而不是将其转换为文本文件。我现在使用golang处理xml。是的,tshark规则:)
<session-id-1>,<session-id-2>,<session-id-3><tab><many result codes (sometimes 3 per message)><tab><one value of total octets>