指定移交集

移交集指定遵循协议的协议。 仅当分析程序可以从协议实例中的数据识别下一个协议时,分析程序才使用移交集。

例如,TCP 协议具有一个端口属性,该属性标识 TCP 协议后面的协议。 属性值为 20 表示下一个协议为 FTP。 属性值为 53 表示下一个协议为 DNS。 由于 port 属性标识后面的协议,因此 TCP 分析程序可以使用以下移交集来获取 port 属性指定的协议的句柄。

[TCP_HandoffSet]
  20    = FTP
  21    = FTP
  23    = TELNET
  25    = SMTP
  53    = DNS
  79    = FINGER
  80    = HTTP
  102   = ISO
  111   = RPC
  119   = NNTP
  137   = NBT, 1000
  138   = NBT, 1002
  139   = NBT, 1001
  389   = LDAP
  445   = NBT, 1001
  515   = LPR
  612   = HMMP
  613   = HMMP
  1024  = NBT, 1001
  1047  = NBT, 1001
  1362  = TDS
  1433  = TDS
  1723  = PPTP
  3020  = NBT, 1001
  3268  = LDAP
  5678  = PPTP

移交集存储在分析程序 INI 文件中。 例如,前面的 TCP 移交集位于 tcpip.ini 文件中。 请注意,如果分析程序 DLL 支持多个协议,则使用移交集的每个分析程序在 INI 文件中都有自己的位置。

ParserAutoInstallInfo 函数的实现过程中指定了移交集信息。 分析程序可以指定分析程序协议之前的协议,以及分析程序协议之后的协议。 网络监视器采用前面的所有协议,并将分析程序协议添加到分析程序 INI 文件的以下集部分(对于前面的每个协议)。 网络监视器将后面的协议列表存储在分析程序 INI 文件的移交集部分。

网络监视器将移交集信息存储在分析程序 INI 文件中,但分析程序不直接访问 INI 文件。 若要使用移交集中的信息,分析程序调用 CreateHandoffTable 函数来创建移交表。 通常,在分析程序注册协议时会创建移交表。 注册协议后,网络监视器会创建分析程序可以使用的移交集表。

分析程序在识别数据时使用其移交集。 首先,分析程序读取标识下一个协议的 属性的值。 然后,分析程序调用 GetProtocolFromTable 以获取下一个协议的句柄。 最后,分析程序返回指向 RecognizeFramephNextProtocol 参数中的句柄的指针。