ハンドオフ セットの指定
ハンドオフ セットは、プロトコルに従うプロトコルを指定します。 パーサーは、パーサーがプロトコル インスタンス内のデータから次のプロトコルを識別できる場合にのみ、ハンドオフ セットを使用します。
たとえば、TCP プロトコルには、TCP プロトコルに続くプロトコルを識別するポート プロパティがあります。 プロパティ値 20 は、次のプロトコルが FTP であることを示します。 プロパティ値 53 は、次のプロトコルが DNS であることを示します。 port プロパティは、次のプロトコルを識別するため、TCP パーサーは次のハンドオフ セットを使用して、ポート プロパティが指定するプロトコルのハンドルを取得できます。
[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 関数の実装中に指定されます。 パーサーは、パーサー プロトコルの前にあるプロトコルと、パーサー プロトコルに従うプロトコルを指定できます。 Network Monitor は、前のすべてのプロトコルを受け取り、パーサー INI ファイルの次の set セクションにパーサー プロトコルを追加します。前のプロトコルごとに。 Network Monitor は、パーサー INI ファイルのハンドオフ セット セクションに従うプロトコルの一覧を格納します。
ネットワーク モニターは、ハンドオフ セット情報をパーサー INI ファイルに格納しますが、パーサーは INI ファイルに直接アクセスしません。 ハンドオフ セット内の情報を使用するために、パーサーは CreateHandoffTable 関数を呼び出してハンドオフ テーブルを作成します。 通常、ハンドオフ テーブルは、パーサーがプロトコルを登録するときに作成されます。 プロトコルが登録されると、Network Monitor によって、パーサーが使用できるハンドオフ セット テーブルが作成されます。
パーサーは、データを認識するときにハンドオフ セットを使用します。 最初に、パーサーは、次のプロトコルを識別する プロパティの値を読み取ります。 次に、パーサーは GetProtocolFromTable を呼び出して、次のプロトコルへのハンドルを取得します。 最後に、パーサーは RecognizeFrame の phNextProtocol パラメーター内のハンドルへのポインターを返します。