【问题标题】:SIP Session TrackingSIP 会话跟踪
【发布时间】:2018-02-05 12:46:14
【问题描述】:

我目前正在从事一个项目,该项目通过在捕获数据包后解析 SIP 标头消息来收集用户登录和扩展信息。我目前正在使用 PCAP.net 和 SIPSorcery 库来完成此任务。该项目是用 C# 编写的

它是如何工作的: 通过在 PCAP.net 中使用过滤器,我可以划分与 SIP 相关的流量。每次捕获一个数据包时都会触发一个事件,我会检查数据包类型,例如无论是 SIP 还是其他与 UDP 相关的东西,例如 DNS。如果这是一条 SIP 消息,我会解析标头并提取我感兴趣的信息

问题: 一些 SIP 端点会生成多个包含相同 UID 的注册数据包。很难跟踪单个会话以及端点实际最终注册的时间(即从 SIP 服务器接收 200OK)。我尝试使用带有 CallID 的字典,然后检查何时收到一个数据包,如果它已经在字典中。

问题: 如何跟踪会话,以便我知道何时收到该特定会话的 200OK,它已注册并且流已完成

【问题讨论】:

    标签: sip pcap.net


    【解决方案1】:

    SIP 消息中的 Call-ID 字段用于跟踪 SIP 会话。查看 RFC 3261 以获取有关 Call-ID 的更多详细信息。

    Call-ID 充当 SIP 会话的唯一标识符。在您的情况下,您可以尝试从 SIP-REGISTER 消息中搜索 Call-ID 以跟踪后续消息。

    【讨论】:

      【解决方案2】:

      SIP 端点发送 REGISTER 请求以将其联系地址绑定到记录地址。此类注册由 Call-ID 标头字段标识。

      请记住,可能会出现具有相同 Call-ID 值的多个 REGISTER 请求,因为:

      • 端点将定期更新其注册,因为每个注册都有一个过期间隔
      • REGISTER 请求受到身份验证的质询,SIP 端点发送一个带有身份验证信息的新请求。
      • 重传

      此外,200 响应并不意味着端点已注册。您应该检查 'expires' 标头和/或联系参数以了解注册的有效期。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-19
        • 2014-04-25
        • 2011-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多