指定移交集
移交集指定遵循协议的协议。 仅当分析程序可以从协议实例中的数据识别下一个协议时,分析程序才使用移交集。
例如,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 以获取下一个协议的句柄。 最后,分析程序返回指向 RecognizeFrame 的 phNextProtocol 参数中的句柄的指针。