【发布时间】:2018-02-05 12:46:14
【问题描述】:
我目前正在从事一个项目,该项目通过在捕获数据包后解析 SIP 标头消息来收集用户登录和扩展信息。我目前正在使用 PCAP.net 和 SIPSorcery 库来完成此任务。该项目是用 C# 编写的
它是如何工作的: 通过在 PCAP.net 中使用过滤器,我可以划分与 SIP 相关的流量。每次捕获一个数据包时都会触发一个事件,我会检查数据包类型,例如无论是 SIP 还是其他与 UDP 相关的东西,例如 DNS。如果这是一条 SIP 消息,我会解析标头并提取我感兴趣的信息
问题: 一些 SIP 端点会生成多个包含相同 UID 的注册数据包。很难跟踪单个会话以及端点实际最终注册的时间(即从 SIP 服务器接收 200OK)。我尝试使用带有 CallID 的字典,然后检查何时收到一个数据包,如果它已经在字典中。
问题: 如何跟踪会话,以便我知道何时收到该特定会话的 200OK,它已注册并且流已完成
【问题讨论】: