(57)【要約】  ドメイン名解析方法であって、ドメイン名解析要求パケットを取得することと、取得した前記ドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュすることと、前記第１のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することと、キャッシュされた前記ドメイン名解析要求パケットによって解析が要求されたドメイン名及び要求されたレコードタイプを抽出することと、第２のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することと、検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することと、を含む。
2019537372.tif 000002
【特許請求の範囲】
【請求項１】
ドメイン名解析方法であって、
サーバーが、ドメイン名解析要求パケットを取得することと、
前記サーバーが、取得した前記ドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュすることと、
前記サーバーが、前記第１のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することと、
前記サーバーが、キャッシュされた前記ドメイン名解析要求パケットによって解析が要求されたドメイン名及び要求されたレコードタイプを抽出することと、
前記サーバーが、第２のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することと、
前記サーバーが、検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することと、
を含むことを特徴とする方法。
【請求項２】
前記第１のキャッシュ領域及び前記第２のキャッシュ領域は、ユーザー空間にあり、前記サーバーが、ドメイン名解析要求パケットを取得することは、
オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、前記サーバーが、伝達される前記データパケットに含まれるデータプロトコル識別子を取得することと、
前記データプロトコル識別子が、伝達される前記データパケットがドメイン名解析要求パケットであることを示すときに、前記サーバーが、前記ドメイン名解析要求パケットを取得することと、
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記サーバーが、並行する解析スレッドからアイドル状態にある解析スレッドを選択することと、
前記サーバーが、選択された前記解析スレッドによって、前記したドメイン名解析要求パケットを取得することと、前記した取得した前記ドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュすることと、前記した前記第１のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することと、前記したキャッシュされた前記ドメイン名解析要求パケットによって解析が要求されたドメイン名及び要求されたレコードタイプを抽出することと、前記した第２のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することと、前記した検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することとを実行することと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記サーバーの第１のキャッシュ領域と前記第２のキャッシュ領域は、ユーザー空間にあり、前記した選択された前記解析スレッドによって前記したドメイン名解析要求パケットを取得することを実行することは、
オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、前記サーバーが、選択された前記解析スレッドによって、伝達される前記データパケットに含まれるデータプロトコル識別子を取得することと、
前記データプロトコル識別子が、伝達される前記データパケットが非ドメイン名解析要求パケットであることを示すときに、前記サーバーが、選択された前記解析スレッドによって、伝達される前記データパケットを前記ユーザー空間における第３のキャッシュ領域にキャッシュすることと、
前記サーバーが、並行する解析スレッドとは独立したカーネルインタラクションスレッドによって、前記第３のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットを前記オペレーティングシステムカーネルにフィードバックして応答することと、
を含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記サーバーが、前記第１のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することは、
前記サーバーが、前記第１のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットの先頭アドレスポインタを確定することと、
前記サーバーが、前記第１のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットのうち修正待ちデータのアドレスポインタオフセットを確定し、前記修正待ちデータは、前記ドメイン名解析要求パケットとそれに対応するドメイン名解析応答パケットとのそれぞれのヘッダデータ間の差分データであることと、
前記サーバーが、前記先頭アドレスポインタと前記アドレスポインタオフセットに基づき、前記第１のキャッシュ領域において前記修正待ちデータを位置決めすることと、
前記サーバーが、位置決めされた前記修正待ちデータを前記ドメイン名解析応答パケットのうち前記修正待ちデータに対応するデータに修正することと、
を含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記応答データは、予め設定された応答フォーマットに従ってドメイン名解析レコードをパッケージングすることによって得られ、
前記方法は、
現在の時間が前記応答データに含まれるキャッシュ期限を超えると、前記サーバーが前記ドメイン名解析レコードを更新することと、
前記サーバーが予め設定された応答フォーマットに従って、更新された前記ドメイン名解析レコードを更新された応答データにパッケージングすることと、
前記サーバーが、前記第２のキャッシュ領域においてプリキャッシュされた前記応答データを前記更新された応答データに置き換えることと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記サーバーが、第２のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することは、
前記サーバーが、抽出された前記ドメイン名によってマッピングされたハッシュ値を取得することと、
前記サーバーが、ハッシュテーブルにおいて前記ハッシュ値が指向するリンクリストを確定することと、
前記サーバーが、前記リンクリストにおいて、抽出された前記ドメイン名を含み且つ抽出された前記レコードタイプに対応するノードを検索することと、
前記サーバーが、検索された前記ノードから応答データのキャッシュアドレスを抽出することと、
前記サーバーが、前記キャッシュアドレスに基づき、前記第２のキャッシュ領域から対応するプリキャッシュされた応答データを読み取ることと、
を含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記サーバーが、検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することは、
前記サーバーが、前記第１のキャッシュ領域における修正後の前記ドメイン名解析要求パケットの先頭アドレスポインタを取得することと、
前記サーバーが、修正後の前記ドメイン名解析要求パケットのデータの総量に対応するアドレスポインタオフセットを取得することと、
前記サーバーが、修正後の前記ドメイン名解析要求パケットの先頭アドレスポインタと前記アドレスポインタオフセットに基づき、前記応答データの先頭アドレスポインタを確定することと、
前記サーバーが、前記応答データの先頭アドレスポインタに基づき、前記応答データを前記第１のキャッシュ領域にキャッシュして、前記第１のキャッシュ領域にキャッシュされ、且つ修正後の前記ドメイン名解析要求パケットとキャッシュされた前記応答データを含むドメイン名解析応答パケットを取得することと、
を含むことを特徴とする請求項１に記載の方法。
【請求項９】
メモリとプロセッサーを含むサーバーであって、前記メモリには、コンピュータ可読命令が記憶され、前記コンピュータ可読命令が前記プロセッサーによって実行されるときに、前記プロセッサーに、
ドメイン名解析要求パケットを取得することと、
取得した前記ドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュすることと、
前記第１のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することと、
キャッシュされた前記ドメイン名解析要求パケットによって解析が要求されたドメイン名及び要求されたレコードタイプを抽出することと、
第２のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することと、
検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することと、
を実行させることを特徴とするサーバー。
【請求項１０】
前記第１のキャッシュ領域及び前記第２のキャッシュ領域は、ユーザー空間にあり、前記したドメイン名解析要求パケットを取得することは、
オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、伝達される前記データパケットに含まれるデータプロトコル識別子を取得することと、
前記データプロトコル識別子が、伝達される前記データパケットがドメイン名解析要求パケットであることを示すときに、前記ドメイン名解析要求パケットを取得することと、
を含むことを特徴とする請求項９に記載のサーバー。
【請求項１１】
前記コンピュータ可読命令が前記プロセッサーによって実行されるときに、さらに、前記プロセッサーに、
並行する解析スレッドからアイドル状態にある解析スレッドを選択することと、
選択された前記解析スレッドによって、前記したドメイン名解析要求パケットを取得することと、前記した取得した前記ドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュすることと、前記した前記第１のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することと、前記したキャッシュされた前記ドメイン名解析要求パケットによって解析が要求されたドメイン名及び要求されたレコードタイプを抽出することと、前記した第２のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することと、前記した検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することとを実行することと、
を実行させることを特徴とする請求項９に記載のサーバー。
【請求項１２】
前記第１のキャッシュ領域及び前記第２のキャッシュ領域は、ユーザー空間にあり、前記した選択された前記解析スレッドによって前記したドメイン名解析要求パケットを取得することを実行することは、
オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、選択された前記解析スレッドによって、伝達される前記データパケットに含まれるデータプロトコル識別子を取得することと、
前記データプロトコル識別子が、伝達される前記データパケットが非ドメイン名解析要求パケットであることを示すときに、選択された前記解析スレッドによって、伝達される前記データパケットを前記ユーザー空間における第３のキャッシュ領域にキャッシュすることと、
並行する解析スレッドとは独立したカーネルインタラクションスレッドによって前記第３のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットを前記オペレーティングシステムカーネルにフィードバックして応答することと、
を含むことを特徴とする請求項１１に記載のサーバー。
【請求項１３】
前記した前記第１のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することは、
前記第１のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットの先頭アドレスポインタを確定することと、
前記第１のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットのうち修正待ちデータのアドレスポインタオフセットを確定し、前記修正待ちデータが前記ドメイン名解析要求パケットとそれに対応するドメイン名解析応答パケットとのそれぞれのヘッダデータ間の差分データであることと、
前記先頭アドレスポインタと前記アドレスポインタオフセットに基づき、前記第１のキャッシュ領域において前記修正待ちデータを位置決めすることと、
位置決めされた前記修正待ちデータを前記ドメイン名解析応答パケットのうち前記修正待ちデータに対応するデータに修正することと、
を含むことを特徴とする請求項９に記載のサーバー。
【請求項１４】
前記応答データは、予め設定された応答フォーマットに従ってドメイン名解析レコードをパッケージングすることによって得られ、
前記コンピュータ可読命令が前記プロセッサーによって実行されるときに、前記プロセッサーに、
現在の時間が前記応答データに含まれるキャッシュ期限を超えると、前記ドメイン名解析レコードを更新することと、
予め設定された応答フォーマットに従って、更新された前記ドメイン名解析レコードを更新された応答データにパッケージングすることと、
前記第２のキャッシュ領域におけるプリキャッシュされた前記応答データを前記更新された応答データに置き換えることと
をさらに実行させることを特徴とする請求項９に記載のサーバー。
【請求項１５】
前記した第２のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することは、
抽出された前記ドメイン名によってマッピングされたハッシュ値を取得することと、
ハッシュテーブルにおいて、前記ハッシュ値が指向するリンクリストを確定することと、
前記リンクリストにおいて、抽出された前記ドメイン名を含み且つ抽出された前記レコードタイプに対応するノードを検索することと、
検索された前記ノードから応答データのキャッシュアドレスを抽出することと、
前記キャッシュアドレスに基づき、前記第２のキャッシュ領域から対応するプリキャッシュされた応答データを読み取ることと、
を含むことを特徴とする請求項９に記載のサーバー。
【請求項１６】
前記した検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することは、
前記第１のキャッシュ領域における修正後の前記ドメイン名解析要求パケットの先頭アドレスポインタを取得することと、
修正後の前記ドメイン名解析要求パケットのデータの総量に対応するアドレスポインタオフセットを取得することと、
修正後の前記ドメイン名解析要求パケットの先頭アドレスポインタと前記アドレスポインタオフセットに基づき、前記応答データの先頭アドレスポインタを確定することと、
前記応答データの先頭アドレスポインタに基づき、前記応答データを前記第１のキャッシュ領域にキャッシュして、前記第１のキャッシュ領域にキャッシュされ、且つ修正後の前記ドメイン名解析要求パケット及びキャッシュされた前記応答データを含むドメイン名解析応答パケットを取得することと、
を含むことを特徴とする請求項９に記載のサーバー。
【請求項１７】
コンピュータ可読命令が記憶される一つまたは複数の不揮発性記憶媒体であって、前記コンピュータ可読命令が一つまたは複数のプロセッサーによって実行されるときに、一つまたは複数のプロセッサーに、
ドメイン名解析要求パケットを取得することと、
取得した前記ドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュすることと、
前記第１のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することと、
キャッシュされた前記ドメイン名解析要求パケットによって解析が要求されたドメイン名及び要求されたレコードタイプを抽出することと、
第２のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することと、
検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することと、
を実行させることを特徴とする記憶媒体。
【請求項１８】
前記第１のキャッシュ領域及び前記第２のキャッシュ領域は、ユーザー空間にあり、前記したドメイン名解析要求パケットを取得することは、
オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、伝達される前記データパケットに含まれるデータプロトコル識別子を取得することと、
前記データプロトコル識別子が、伝達される前記データパケットがドメイン名解析要求パケットであることを示すときに、前記ドメイン名解析要求パケットを取得することと、
を含むことを特徴とする請求項１７に記載の記憶媒体。
【請求項１９】
前記コンピュータ可読命令が一つまたは複数のプロセッサーによって実行されるときに、一つまたは複数のプロセッサーに、
並行する解析スレッドからアイドル状態にある解析スレッドを選択することと、
選択された前記解析スレッドによって、前記したドメイン名解析要求パケットを取得することと、前記した取得した前記ドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュすることと、前記した前記第１のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することと、前記したキャッシュされた前記ドメイン名解析要求パケットによって解析が要求されたドメイン名及び要求されたレコードタイプを抽出することと、前記した第２のキャッシュ領域において抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することと、前記した検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することとを実行することと、
を実行させることを特徴とする請求項１７に記載の記憶媒体。
【請求項２０】
前記第１のキャッシュ領域及び前記第２のキャッシュ領域は、ユーザー空間にあり、前記した選択された前記解析スレッドによって前記したドメイン名解析要求パケットを取得することを実行することは、
オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、選択された前記解析スレッドによって、伝達される前記データパケットに含まれるデータプロトコル識別子を取得することと、
前記データプロトコル識別子が、伝達される前記データパケットが非ドメイン名解析要求パケットであることを示すときに、選択された前記解析スレッドによって、伝達される前記データパケットを前記ユーザー空間における第３のキャッシュ領域にキャッシュすることと、
並行する解析スレッドとは独立したカーネルインタラクションスレッドによって、前記第３のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットを前記オペレーティングシステムカーネルにフィードバックして応答することと、
を含むことを特徴とする請求項１９に記載の記憶媒体。
【請求項２１】
前記した前記第１のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することは、
前記第１のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットの先頭アドレスポインタを確定することと、
前記第１のキャッシュ領域においてキャッシュされた前記ドメイン名解析要求パケットのうち修正待ちデータのアドレスポインタオフセットを確定し、前記修正待ちデータが前記ドメイン名解析要求パケットとそれに対応するドメイン名解析応答パケットとのそれぞれのヘッダデータ間の差分データであることと、
前記先頭アドレスポインタと前記アドレスポインタオフセットに基づき、前記第１のキャッシュ領域において前記修正待ちデータを位置決めすることと、
位置決めされた前記修正待ちデータを前記ドメイン名解析応答パケットのうち前記修正待ちデータに対応するデータに修正することと、
を含むことを特徴とする請求項１７に記載の記憶媒体。
【請求項２２】
前記応答データは、予め設定された応答フォーマットに従ってドメイン名解析レコードをパッケージングすることによって得られ、
前記コンピュータ可読命令が一つまたは複数の前記プロセッサーによって実行されるときに、一つまたは複数の前記プロセッサーに、
現在の時間が前記応答データに含まれるキャッシュ期限を超えると、前記ドメイン名解析レコードを更新することと、
予め設定された応答フォーマットに従って、更新された前記ドメイン名解析レコードを更新された応答データにパッケージングすることと、
前記第２のキャッシュ領域におけるプリキャッシュされた前記応答データを前記更新された応答データに置き換えることと、
をさらに実行させることを特徴とする請求項１７に記載の記憶媒体。
【請求項２３】
前記した第２のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することは、
抽出された前記ドメイン名によってマッピングされたハッシュ値を取得することと、
ハッシュテーブルにおいて、前記ハッシュ値が指向するリンクリストを確定することと、
前記リンクリストにおいて、抽出された前記ドメイン名を含み且つ抽出された前記レコードタイプに対応するノードを検索することと、
検索された前記ノードから応答データのキャッシュアドレスを抽出することと、
前記キャッシュアドレスに基づき、前記第２のキャッシュ領域から対応するプリキャッシュされた応答データを読み取ることと、
を含むことを特徴とする請求項１７に記載の記憶媒体。
【請求項２４】
前記した検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することは、
前記第１のキャッシュ領域における修正後の前記ドメイン名解析要求パケットの先頭アドレスポインタを取得することと、
修正後の前記ドメイン名解析要求パケットのデータの総量に対応するアドレスポインタオフセットを取得することと、
修正後の前記ドメイン名解析要求パケットの先頭アドレスポインタと前記アドレスポインタオフセットに基づき、前記応答データの先頭アドレスポインタを確定することと、
前記応答データの先頭アドレスポインタに基づき、前記応答データを前記第１のキャッシュ領域にキャッシュして、前記第１のキャッシュ領域にキャッシュされ且つ修正後の前記ドメイン名解析要求パケットとキャッシュされた前記応答データを含むドメイン名解析応答パケットを取得することと、
を含むことを特徴とする請求項１７に記載の記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
＜関連出願＞
本出願は、２０１７年０１月１１日に中国特許庁に提出された、出願番号が「２０１７１００２１１１１４」であって、出願の名称が「ドメイン名解析方法及び装置」である中国特許出願に基づく優先権を主張するものであり、その全内容を本出願に参照により援用する。
＜技術分野＞
【０００２】
本出願は、コンピュータ技術分野に関し、特に、ドメイン名解析方法、サーバー、及び記憶媒体に関する。
＜背景技術＞
【０００３】
コンピュータ技術の発展に従って、コンピュータによってインターネットを使用して情報を取得することはますます一般的になっている。ユーザーはインターネットを使用して情報を取得するときに、インターネットプロトコルアドレス(Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ａｄｄｒｅｓｓ、ＩＰアドレス)を必要とするが、ＩＰアドレスを直接使用することは非常に不便である。従来の技術は、ドメイン名とＩＰアドレスとのマッピング関係を確立し、ユーザーが解析を要求するドメイン名を取得した後、取得したドメイン名に基づき、当該ドメイン名とマッピング関係があるＩＰアドレスを解析して取得し、当該ＩＰアドレスに基づきインターネットにアクセスする。
【発明の概要】
【発明が解析しようとする課題】
【０００４】
しかしながら、従来のドメイン名解析方法は、ドメイン名解析要求パケットを取得した後、解析が要求されたドメイン名に対応するＩＰアドレスを解析して取得するまで、当該ドメイン名解析要求パケットの各層のデータプロトコルに基づき、層ごとに解析し、解析工程全体では、複数回のデータコピーが必要になるため、ドメイン名解析効率が低いことになる。
【課題を解析するための手段】
【０００５】
本出願によって提供される各実施例によれば、ドメイン名解析方法、サーバー及び記憶媒体を提供する。
【０００６】
ドメイン名解析方法であって、
サーバーが、ドメイン名解析要求パケットを取得することと、
前記サーバーが、取得した前記ドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュすることと、
前記サーバーが、前記第１のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することと、
前記サーバーが、キャッシュされた前記ドメイン名解析要求パケットによって解析が要求されたドメイン名及び要求されたレコードタイプを抽出することと、
前記サーバーが、第２のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することと、
前記サーバーが、検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することと、を含む。
【０００７】
メモリとプロセッサーを含むサーバーであって、前記メモリにはコンピュータ可読命令が記憶され、前記コンピュータ可読命令が前記プロセッサーによって実行されるときに、前記プロセッサーに、
ドメイン名解析要求パケットを取得することと、
取得した前記ドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュすることと、
前記第１のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することと、
キャッシュされた前記ドメイン名解析要求パケットによって解析が要求されたドメイン名及び要求されたレコードタイプを抽出することと、
第２のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ、抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することと、
検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することと、を実行させる。
【０００８】
コンピュータ可読命令が記憶される一つまたは複数の不揮発性記憶媒体であって、前記コンピュータ可読命令が一つまたは複数のプロセッサーによって実行されるときに、一つまたは複数のプロセッサーに、
ドメイン名解析要求パケットを取得することと、
取得した前記ドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュすることと、
前記第１のキャッシュ領域において、キャッシュされた前記ドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされた前記ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得することと、
キャッシュされた前記ドメイン名解析要求パケットによって解析が要求されたドメイン名及び要求されたレコードタイプを抽出することと、
第２のキャッシュ領域において、抽出された前記ドメイン名に対応し、且つ、抽出された前記レコードタイプに属する、プリキャッシュされた応答データを検索することと、
検索された前記応答データと修正後の前記ドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得することと、
を実行させる。
【０００９】
本出願の１つ又は複数の実施例の詳細は、添付の図面及び以下の説明に記載されている。本出願の他の特徴、目的、及び利点は、明細書、図面、及び特許請求の範囲から明らかになる。
【図面の簡単な説明】
【００１０】
本出願の実施例における技術案より明確に説明するために、実施例の説明に使用される図面を以下に簡単に説明する。明らかに、以下の説明における図面は本出願の幾つかの実施例に過ぎず、当業者であればいかなる創造的な作業もすることなく図面に従って他の図面を得ることができる。
【００１１】
【図１】一実施例におけるドメイン名解析方法の適用環境図である。
【図２】一実施例におけるドメイン名解析方法を実施するためのサーバーの内部構成の概略図である。
【図３】一実施例におけるドメイン名解析方法の概略フローチャートである。
【図４】一実施例における選択された解析スレッドによって、ドメイン名解析要求パケットを取得するステップを実行する概略フローチャートである。
【図５】一実施例におけるドメイン名解析サーバーの内部アーキテクチャ図である。
【図６】一実施例における第１のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットに含まれたヘッダデータを修正して、キャッシュされたドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得するステップの概略フローチャートである。
【図７】一実施例における第２のキャッシュ領域において抽出されたドメイン名に対応し、且つ抽出されたレコードタイプに属するプリキャッシュされた応答データを検索するステップの概略フローチャートである。
【図８】一実施例における検索された応答データと修正されたドメイン名解析要求パケットを組み合わせて、ドメイン名解析応答パケットを取得するステップの概略フローチャートである。
【図９】他の実施例におけるドメイン名解析方法の概略フローチャートである。
【図１０】一実施例におけるドメイン名解析工程の論理図である。
【図１１】一実施例におけるサーバーの構成ブロック図である。
【図１２】別の実施例におけるサーバーの構成ブロック図である。
【図１３】他の実施例におけるサーバーの構成ブロック図である。
【発明を実施するための形態】
【００１２】
本出願の目的、技術案、及び利点をより分かりやすくするために、添付の図面及び実施例を参照しながら、以下に本出願をさらに詳細に説明する。本明細書に記載された特定の実施例は単に本出願を説明するものであり、限定することを意図するものではない。
【００１３】
図１は、一実施例におけるドメイン名解析方法の適用環境図である。図１を参照すると、当該ドメイン名解析方法は、ドメイン名解析システムに適用される。ドメイン名解析システムは、端末１１０と、ドメイン名解析サーバー１２０と、許可ドメイン名サーバー１３０を含み、端末１１０は、ネットワークによってドメイン名解析サーバー１２０に接続され、ドメイン名解析サーバー１２０は、ネットワークによって許可ドメイン名サーバー１３０に接続される。端末１１０は具体的に、デスクトップ端末又はモバイル端末であってもよく、モバイル端末は具体的に、携帯電話、タブレットＰＣ、ノートブックコンピュータ、スマートウォッチ、携帯情報端末（ＰＤＡ）、及びネットワーク対応電子リーダのうちの少なくとも１つであってもよい。ドメイン名解析サーバー１２０と許可ドメイン名サーバー１３０は、具体的に、独立した物理サーバーであってもよいし、物理サーバークラスタであってもよい。
【００１４】
図２に示すように、一実施例では、サーバーが提供され、当該サーバーは、ドメイン名解析方法を実施するように、図１におけるドメイン名解析サーバー１２０として使用できる。図２を参照すると、当該サーバーは、システムバスで接続されたプロセッサー、メモリ、及びネットワークインターフェースを含む。その中、メモリは不揮発性記憶媒体と内蔵メモリを含む。当該サーバーの不揮発性記憶媒体は、オペレーティングシステムとコンピュータ可読命令を記憶することができる。当該コンピュータ可読命令が実行されるときに、プロセッサーにドメイン名解析方法を実行させる。当該サーバーのプロセッサーは、サーバー全体の運用をサポートするために、コンピューティング及び制御機能を提供するためのものである。当該サーバーの内蔵メモリは、コンピュータ可読命令を格納することができ、当該コンピュータ可読命令が前記プロセッサーによって実行される時に、前記プロセッサーにドメイン名解析方法を実行させることができる。当該サーバーのネットワークインターフェースは、端末によって送信されたドメイン名解析要求パケットを受信し、ドメイン名解析応答パケットを端末に返すなど、ネットワーク接続を介して外部端末と通信するためのものである。サーバーは、独立したサーバー又は複数のサーバーからなるサーバークラスタによって実現することができる。当業者であれば、図２に示す構成は本出願の技術案に関連する構成の一部のブロック図に過ぎず、本出願の技術案が適用されるサーバーを限定するものではないことを理解できる。特定のサーバーは、図に示されるものよりも多い又は少ない構成要素を含み得るか、又はいくつかの構成要素は組み合わされ得るか、又は異なる構成要素配置を有し得る。
【００１５】
図３に示すように、一実施例では、ドメイン名解析方法が提供され、本実施例は、当該方法が上述した図１のドメイン名解析サーバー１２０に適用されることが例示される。当該方法は具体的には以下のステップを含む。
【００１６】
Ｓ３０２、ドメイン名解析要求パケットを取得する。
【００１７】
その中、ドメイン名解析要求パケットとは、ドメイン名解析を要求するためのデータパケットを意味する。ドメイン名は、ドットで区切られた文字列から構成されたインターネットにおけるコンピュータ又はコンピュータのグループの名称であり、データ伝送の時にコンピュータの電子的な向きを識別するためのものである。ドメイン名解析とは、ドメイン名をドメイン名解析要求パケットで指向するレコードタイプに解析する工程である。レコードタイプは、例えば、アドレス指向レコードタイプ、メール交換レコードタイプ、エイリアスレコードタイプなどである。
【００１８】
具体的に、端末は、ユーザーによって入力されたドメイン名を取得し、当該ドメイン名によってインターネットにアクセスするための要求を取得したときに、まず、当該要求が指向するレコードタイプを確定し、ローカルのデータベース又はキャッシュにおいて、当該取得したドメイン名に対応し、且つ当該要求が指向するレコードタイプに属するレコードを検索することができる。検索された場合、当該レコードに基づきインターネットにアクセスし、検索されなかった場合、ドメイン名解析要求パケットのフォーマットに従って、取得したドメイン名と要求が指向するレコードタイプをパッケージングして、ドメイン名解析要求パケットを生成し、当該ドメイン名解析要求パケットをドメイン名解析サーバーに送信する。ドメイン名解析サーバーは、端末によって送信されたドメイン名解析要求パケットを受信し、ドメイン名解析要求パケットを取得する。
【００１９】
Ｓ３０４、取得したドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュする。
【００２０】
その中、第１のキャッシュ領域は、ドメイン名解析サーバーのキャッシュにおいて分割されたキャッシュ領域であり、取得したドメイン名解析要求パケットを記憶するためのものである。具体的に、ドメイン名解析サーバーは、ネットワークカードによってデータパケットを受信し、ドメイン名解析要求パケットを受信した後、プロセスによって受信したドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュすることができる。
【００２１】
一実施例では、ドメイン名解析サーバーは、オペレーティングシステムカーネルによって、カーネル空間においてネットワークカードドライバプロセスを呼び出して、ネットワークカードによって受信されたドメイン名解析要求パケットを取得し、取得したドメイン名解析要求パケットをカーネル空間の第１のキャッシュ領域内に記憶し、オペレーティングシステムカーネルの応答を待つことができる。
【００２２】
一実施例では、ドメイン名解析サーバーは、カーネル空間内で運行されるデータパケット傍受プロセスを予め配置し、ネットワークカードドライバプロセスがネットワークカードによって受信されたドメイン名解析要求パケットを取得した後、ドメイン名解析サーバーのユーザー空間におけるドメイン名解析プロセスは当該データパケット傍受プロセスを呼び出して、当該データパケット傍受プロセスによって、ネットワークカードドライバプロセスが取得したドメイン名解析要求パケットをユーザー空間の第１のキャッシュ領域内に記憶し、ユーザー空間のドメイン名解析プロセスの応答を待つことができる。
【００２３】
その中、オペレーティングシステムは、コンピュータハードウェアとソフトウェアを管理するためのものであり、オペレーティングシステムカーネルが配置された領域はカーネル空間であり、カーネル機能モジュールはカーネル空間で運行される。ユーザー空間は、オペレーティングシステムが分割したカーネル空間に対する空間である。ネットワークカードは、リンク層で動作し、データパケットの送受信に使用されるネットワークコンポーネントである。ネットワークカードドライバプロセスは、オペレーティングシステムカーネルによって呼び出されてネットワークカードによって受信されるデータパケットを取得し、データパケットをネットワークカードに送信することを実行するプロセスである。データパケット傍受プロセスは、ネットワークカードドライバプロセスによって取得されたデータパケットをユーザー空間に傍受するように予め配置されたプロセスである。例えば、ドメイン名解析サーバーは、ＤＰＤＫ（Ｄａｔａ  Ｐｌａｎｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ  データプレーン開発キット）を利用してデータパケット傍受プロセスを予め配置することができ、配置されたデータパケット傍受プロセスは、カーネル空間の転送を経る必要がなく、傍受されたデータパケットをユーザー空間に直接伝達して記憶することができ、当該データパケット傍受プロセスは、オペレーティングシステムカーネルによって呼び出されてもよいし、ユーザー空間のドメイン名解析プロセスによって呼び出されてもよい。
【００２４】
Ｓ３０６、第１のキャッシュ領域において、キャッシュされたドメイン名解析要求パケットに含まれたヘッダデータを修正して、キャッシュされたドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得する。
【００２５】
その中、ドメイン名解析データパケットは、通常、ヘッダデータ、問い合わせ問題、応答、許可応答、及び追加情報の５つの部分を含む。一般的に、ドメイン名解析要求パケット及びドメイン名解析応答パケットはいずれも上述した５つの部分のデータパケットフォーマットを採用する。ヘッダデータは、ドメイン名解析データパケットに必ず含まれる部分であり、ドメイン名解析データパケット識別子、ドメイン名解析データパケットフラグ、要求問題の数、リソースレコードの数、許可リソースレコードの数及び追加リソースレコードの数を含む。  
【００２６】
ドメイン名解析データパケット識別子は、ドメイン名解析データパケットを識別するためのものであり、対応するドメイン名解析要求パケット及びドメイン名解析応答パケットは同じドメイン名解析データパケット識別子を有し、ドメイン名解析要求パケットに対応するドメイン名解析応答パケットをマッチングできる。ドメイン名解析データパケットフラグは、ドメイン名解析データパケットが要求パケットであるかそれとも応答パケットであるかを定義し、ヘッダデータ以外の他の部分が存在する必要があるかどうか、及び問い合わせのタイプも定義する。要求問題の数、リソースレコードの数、許可リソースレコードの数及び追加リソースレコードの数は、それぞれ問い合わせ問題、応答、許可応答及び追加情報の４つの部分の数に対応する。
【００２７】
具体的に、ドメイン名解析サーバーは、まず、キャッシュされたドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを確定し、確定したドメイン名解析応答パケットのヘッダデータに基づき、ドメイン名解析要求パケットのヘッダデータとドメイン名解析応答パケットのヘッダデータとの差分データを確定することができる。ドメイン名解析サーバーは、第１のキャッシュ領域において確定した差分データを位置決めし、位置決めした差分データをドメイン名解析応答パケットのヘッダデータに従って修正することができる。
【００２８】
その中、差分データは、ドメイン名解析データパケットフラグとリソースレコードの数を含む。例えば、受信されたドメイン名解析要求パケットに含まれたドメイン名解析データパケットフラグのうち、要求パケットを表す文字「０」が、応答を表す「１」に修正されるべきである。リソースレコードの数は、要求された問題の数に応じて修正される。
【００２９】
Ｓ３０８、キャッシュされたドメイン名解析要求パケットによって解析を要求されたドメイン名及び要求されたレコードタイプを抽出する。
【００３０】
具体的に、ドメイン名解析要求パケットによって要求されたドメイン名及び要求されたレコードタイプはドメイン名解析要求パケットの問い合わせ問題部分にパッケージングされる。ドメイン名解析サーバーは、ドメイン名解析要求パケットを取得した後、ドメイン名解析要求パケットを解析して解析結果を取得し、解析結果からドメイン名解析要求パケットによって解析を要求されたドメイン名及び要求されたレコードタイプを抽出することができる。
【００３１】
その中、要求されたレコードタイプは、例えば、アドレス指向レコードタイプ、メール交換レコードタイプ又はエイリアスレコードタイプなどである。アドレス指向レコードはＡ（Ａｄｄｒｅｓｓ）レコードであり、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）指向とも呼ばれ、ホスト名又はドメイン名に対応するＩＰアドレスを指定するためのレコードである。メール交換レコードは、ＭＸ（Ｍａｉｌ  Ｅｘｃｈａｎｇｅｒ）レコードであり、電子メールシステムがメールを送信する時に受信者のアドレスサフィックスに基づきメールサーバーを位置決めし、受信者のアドレスサフィックスをメールサーバーのＩＰアドレスに指向するレコードである。エイリアス指定レコードは、ＣＮＡＭＥレコードであり、エイリアスレコードとも呼ばれ、このようなレコードは複数の名前又はドメイン名を同じコンピュータにマッピングし、レコードは２つのドメイン名又は名前、第１のドメイン名を第２のドメイン名に指向するレコードを含む。
【００３２】
Ｓ３１０、第２のキャッシュ領域において、抽出されたドメイン名に対応し、且つ抽出されたレコードタイプに属する、プリキャッシュされた応答データを検索する。
【００３３】
その中、第２のキャッシュ領域は、ドメイン名解析サーバーのキャッシュにおいて分割されたキャッシュ領域であり、予めパッケージングされた応答データを記憶する。第２のキャッシュ領域と上記の第１のキャッシュ領域はいずれもキャッシュ領域であるが、異なるキャッシュ領域である。
【００３４】
ドメイン名解析サーバーは、ドメイン名解析を行う度に、解析結果を記録し、ドメイン名解析レコードをデータベースに記憶することができる。ドメイン名解析サーバーは、権威ドメイン名サーバーとの接続を確立し、ローカルに記憶されたドメイン名解析レコードが権威ドメイン名サーバーに記憶された対応するドメイン名解析レコードと一致するかどうかを検出することができる。一致しない場合、権威ドメイン名サーバーに記憶された対応するドメイン名解析レコードをローカルのデータベースへ同期する。その中、検出操作を実行する時間は予め設置された検出周期であってもよいし、現在の時間がドメイン名解析レコードに含まれたキャッシュ期間を超えた場合に実行されてもよい。
【００３５】
具体的に、応答データのフォーマットは固定され、ドメイン名解析サーバーは、予め設定された応答フォーマットに従って、データベースに記憶されたドメイン名解析レコードをパッケージングして応答データを取得し、第２のキャッシュ領域内にキャッシュし、必要なときに検索することができる。ドメイン名解析サーバーは、応答データが属するレコードタイプに従って、取得した応答データを、第２のキャッシュ領域に分類してキャッシュし、ドメイン名の解析が必要なときに、抽出されたレコードタイプに基づき、抽出されたレコードタイプに属する応答データセットを確定し、確定した応答データセットから抽出されたドメイン名に対応するプリキャッシュされた応答データを選別することができる。
【００３６】
ドメイン名解析サーバーは、応答データに対応するドメイン名に従って、取得した応答データを第２のキャッシュ領域に分類してキャッシュし、ドメイン名の解析が必要なとき、抽出されたドメイン名に基づき、抽出されたドメイン名に対応する応答データセットを確定し、確定した応答データセットから、抽出されたレコードタイプに属するプリキャッシュされた応答データを選別する。
【００３７】
ドメイン名解析サーバーは、ローカルに記憶されたドメイン名解析レコードに対応する履歴レコードの数を取得し、取得した応答データを、応答データに対応するドメイン名解析レコードに対応する履歴レコードの数に従って降順にソートし、第２のキャッシュ領域にキャッシュし、ドメイン名の解析が必要なときに、抽出されたドメイン名に対応し、且つ抽出されたレコードタイプに属するプリキャッシュされた応答データを検索することができる。
【００３８】
その中、ステップＳ３０８からＳ３１０は、ステップＳ３０６と非同期に実行することができる。
【００３９】
Ｓ３１２、検索された応答データと修正されたドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得する。
【００４０】
具体的に、ドメイン名解析サーバーは、第１のキャッシュ領域においてキャッシュされた修正されたドメイン名解析要求パケットを位置決めし、検索された応答データを位置決めされるドメイン名解析要求パケットに含まれるデータの終わりに追加し、既にキャッシュされたドメイン名解析要求パケットと組み合わせてドメイン名解析応答パケットを取得する。
【００４１】
上記のドメイン名解析方法は、取得したドメイン名解析要求パケットを第１のキャッシュ領域内に記憶し、当該第１のキャッシュ領域において、キャッシュされたドメイン名解析要求パケットに対する解析工程を完了して、ドメイン名解析要求パケットに含まれたヘッダデータを対応するドメイン名解析応答パケットのヘッダデータに修正し、検索された応答データと修正されたドメイン名解析要求パケットとを組み合わせてドメイン名解析応答パケットを取得する。その中、検索された応答データは、第２のキャッシュ領域内に予め記憶され、検索された後、修正されたドメイン名解析要求パケットと直接組み合わせることができ、ドメイン名解析效率を大幅に向上させる。また、応答データを第２のキャッシュ領域から第１のキャッシュ領域にコピーした後に、第１のキャッシュ領域においてドメイン名解析工程を完了し、データコピーの回数を効果的に減少し、ドメイン名解析效率をさらに向上させる。
【００４２】
一実施例では、ステップＳ３０２は具体的に、オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、伝達されたデータパケットに含まれたデータプロトコル識別子を取得し、データプロトコル識別子が、伝達されたデータパケットがドメイン名解析要求パケットであることを示すときに、ドメイン名解析要求パケットを取得することを含む。本実施例では、第１のキャッシュ領域と第２のキャッシュ領域は、ユーザー空間にある。
【００４３】
その中、データプロトコル識別子は、データパケットに含まれた各層のデータプロトコルの識別子を示す。データパケットは生成される時に、データリンク層、ネットワーク層及び伝送層などを経過するときに、それぞれデータパケットに対して対応するデータプロトコル層のデータプロトコル識別子を追加する。異なるタイプのデータパケットに含まれた各層のデータプロトコルの識別子は異なる。例えば、データパケットネットワーク層のデータプロトコル識別子はＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ  伝送制御プロトコル）/ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ  ユーザーデータグラムプロトコル）であり、伝送層において宛先ポートがポート５３であるデータパケットはドメイン名解析データパケットである。
【００４４】
具体的に、ドメイン名解析サーバーのオペレーティングシステムカーネルは、予め配置されたデータパケット傍受プロセスを呼び出して、ネットワークカード受信キューからデータパケットを読み取って、読み取ったデータパケットをユーザー空間に伝達することができる。ユーザー空間のドメイン名解析プロセスは、伝達されたデータパケットに含まれたデータプロトコル識別子を取得し、ドメイン名解析要求パケットにマッチングする各層プロトコルの識別子に基づき、取得したデータプロトコル識別子を検出し、取得したデータプロトコル識別子がドメイン名解析要求パケットにマッチングする各層プロトコルの識別子と一致するときに、伝達されたデータパケットがドメイン名解析要求パケットであることを示し、ユーザー空間のドメイン名解析プロセスは当該ドメイン名解析要求パケットを取得する。
【００４５】
さらに、取得したデータプロトコル識別子が、ドメイン名解析要求パケットにマッチングする各層プロトコルの識別子と一致しないときに、伝達されたデータパケットが非ドメイン名解析要求パケットであることを示し、ユーザー空間のドメイン名解析プロセスは、伝達されたデータパケットをオペレーティングシステムカーネルにフィードバックして応答する。
【００４６】
本実施例では、ドメイン名解析要求パケットであると判定されたデータパケットは、直接ユーザー空間においてドメイン名解析を完成し、カーネル空間の転送を経る必要はなく、カーネル空間において解析するときに複数回のデータのコピーを必要とするという問題を回避し、ドメイン名解析效率を向上させる。また、非ドメイン名解析要求パケットであると判定されたデータパケットをオペレーティングシステムカーネルにフィードバックして応答することで、ユーザー空間において解析することができないデータパケットに対する処理方式を提供し、データパケット解析の成功率を向上させる。
【００４７】
一実施例では、当該ドメイン名解析方法はさらに、並行する解析スレッドからアイドル状態にある解析スレッドを選択し、選択された解析スレッドによって、ステップＳ３０２からステップＳ３１２を実行する。
【００４８】
その中、解析スレッドは、ドメイン名解析を行うためのスレッドである。アイドル状態にあることは、現在の時間でドメイン名解析を行っていないことである。具体的に、ドメイン名解析サーバーのドメイン名解析プロセスにおいて複数の解析スレッドが並行に実行され、各解析スレッドは互いに独立する。ドメイン名解析サーバーのドメイン名解析プロセスはネットワークカードドライバプロセスを呼び出して、ネットワークカードによって受信されたドメイン名解析要求パケットを取得し、アイドル状態にある解析スレッドを選択して、取得したドメイン名解析要求パケットに対するドメイン名解析工程を実行することができる。
【００４９】
本実施例では、ドメイン名解析工程は、解析スレッドによって独立して完成し、他のスレッドとの間でデータインタラクション処理を行うことが含まれず、スレッドインタラクション処理データの待ち合わせ工程を回避し、ドメイン名解析效率をさらに向上させる。
【００５０】
図４に示すように、一実施例では、ドメイン名解析方法に係る第１のキャッシュ領域及び第２のキャッシュ領域は、ユーザー空間にある。ドメイン名解析方法において選択された解析スレッドによって、ドメイン名解析要求パケットを取得することを実行することは、
Ｓ４０２、オペレーティングシステムカーネルが、ネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、選択された解析スレッドによって、伝達されたデータパケットに含まれるデータプロトコル識別子を取得することを含む。
【００５１】
具体的に、ドメイン名解析サーバーのオペレーティングシステムカーネルは、予め配置されたデータパケット傍受プロセスを呼び出して、ネットワークカード受信キューからデータパケットを読み取って、読み取ったデータパケットをユーザー空間に伝達することができる。ドメイン名解析サーバーは、ユーザー空間の解析スレッドによって、伝達されたデータパケットに含まれるデータプロトコル識別子を取得することができる。
【００５２】
Ｓ４０４、データプロトコル識別子が、伝達されたデータパケットが非ドメイン名解析要求パケットであることを示すときに、選択された解析スレッドによって、伝達されたデータパケットをユーザー空間における第３のキャッシュ領域にキャッシュする。
【００５３】
具体的に、ドメイン名解析サーバーは、ユーザー空間の解析スレッドによって、取得したデータプロトコル識別子とドメイン名解析要求パケットにマッチングする各層プロトコルの識別子とを比較して、比較の結果、取得したデータプロトコル識別子とドメイン名解析要求パケットにマッチングする各層プロトコルの識別子が一致しないときに、伝達されたデータパケットが非ドメイン名解析要求パケットであると判定し、ユーザー空間のドメイン名解析プロセスは伝達されたデータパケットをユーザー空間における第３のキャッシュ領域にキャッシュする。その中、第３のキャッシュ領域はドメイン名解析サーバーのキャッシュにおいて分割されたキャッシュ領域であり、ユーザー空間に伝達された非ドメイン名解析要求パケットを記憶する。
【００５４】
Ｓ４０６、並行解析スレッドとは独立したカーネルインタラクションスレッドによって第３のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットをオペレーティングシステムカーネルにフィードバックして応答する。
【００５５】
その中、カーネルインタラクションスレッドは、解析スレッドに対立して存在する、カーネル空間とインタラクションするスレッドである。具体的に、ユーザー空間における解析スレッドは、オペレーティングシステムカーネルと直接インタラクションすることができないため、オペレーティングシステムカーネルにフィードバックして応答する必要がある非ドメイン名解析要求パケットをユーザー空間における第３のキャッシュ領域にキャッシュする。さらに、オペレーティングシステムカーネルとインタラクションすることができる、並行解析スレッドとは独立したカーネルインタラクションスレッドは第３のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットをカーネル空間のキャッシュ領域にキャッシュする。カーネル空間の解析スレッドは、カーネル空間のキャッシュ領域にキャッシュされるデータパケットを解析して、当該解析バケットに対応する応答パケットを取得する。
【００５６】
本実施例では、ユーザー空間のドメイン名解析プロセスによって解析することができない非ドメイン名解析要求パケットをオペレーティングシステムカーネルにフィードバックして応答し、ユーザー空間のドメイン名解析プロセスが非ドメイン名解析要求パケットを解析できないという問題が回避され、データパケット解析の成功率を向上させる。
【００５７】
一実施例では、ドメイン名解析方法はさらに、データパケットを取得して第１のキャッシュ領域にキャッシュすることと、第１のキャッシュ領域において、データパケットに含まれたデータプロトコル識別子を検出することと、データプロトコル識別子が、伝達されたデータパケットがドメイン名解析要求パケットであることを示すときに、ステップＳ３０６からステップＳ３１０を実行し続けることとを含むことができる。データプロトコル識別子が、伝達されたデータパケットが非ドメイン名解析要求パケットであることを示すときに、キャッシュされたデータパケットをオペレーティングシステムカーネルにフィードバックして応答する。
【００５８】
具体的に、ドメイン名解析方法では、オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達した後、読み取ったデータパケットをユーザー空間の第１のキャッシュ領域に直接キャッシュすることができる。ユーザー空間における並行する解析スレッドからアイドル状態にある解析スレッドを選択し、第１のキャッシュ領域にキャッシュされたデータパケットがドメイン名解析要求パケットであるかどうかを検出する。キャッシュされたデータパケットがドメイン名解析要求パケットであることが検出判定されるときに、選択された解析スレッドによって、ステップＳ３０６からステップＳ３１０を実行し続ける。キャッシュされたデータパケットが非ドメイン名解析要求パケットであることが検出判定されるときに、選択された解析スレッドによって、第１のキャッシュ領域における非ドメイン名解析要求パケットのアドレスポインタを第３のキャッシュ領域にキャッシュする。さらに並行する解析スレッドとは独立したカーネルインタラクションスレッドによって、第３のキャッシュ領域に記憶されたアドレスポインタに基づき、第１のキャッシュ領域から非ドメイン名解析要求パケットを読み取って、カーネル空間のキャッシュ領域に記憶する。さらにオペレーティングシステムカーネルによってカーネル空間キャッシュ領域に記憶された非ドメイン名解析要求パケットに対して応答する。
【００５９】
その中、ポインタは、メモリアドレスを示すために使用されるコンピュータ言語の変数である。第２のキャッシュ領域における非ドメイン名解析要求パケットのアドレスポインタは、非ドメイン名解析要求パケットの第２のキャッシュ領域におけるキャッシュアドレスを指向する。非ドメイン名解析要求パケットは、例えばＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ  アドレス解析プロトコル）要求パケット又はＯＳＰＦ（Ｏｐｅｎ  Ｓｈｏｒｔｅｓｔ  Ｐａｔｈ  Ｆｉｒｓｔオープン最短パスファースト）要求パケットなどである。
【００６０】
本実施例では、データパケットを第１のキャッシュ領域内に直接キャッシュし、ドメイン名解析要求パケットであることが検出判定されるときに、ドメイン名解析動作を直接実行し、非ドメイン名解析要求パケットであることが検出判定された後、第１のキャッシュ領域における非ドメイン名解析要求パケットをオペレーティングシステムカーネルにフィードバックして応答する。データコピーの回数をさらに減少しつつ、ユーザー空間において解析することができないデータパケットに対する処理方法を提供し、データパケット解析の成功率を向上させる。
【００６１】
図５は、一実施例におけるドメイン名解析サーバーの内部アーキテクチャ図である。図５を参照すると、ドメイン名解析サーバーのシステム空間は、カーネル空間とユーザー空間に分けられ、オペレーティングシステムカーネルはデータパケット傍受プロセスを呼び出してネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達することができる。ユーザー空間内の解析スレッドは、伝達されたデータパケットがドメイン名解析データパケットであると判定された後、伝達されたドメイン名解析データパケットを第１のキャッシュ領域にキャッシュし、伝達されたパケットが非ドメイン名解析データパケットであると判定された後、伝達された非ドメイン名解析データパケットを第３のキャッシュ領域にキャッシュする。ユーザー空間における解析スレッドとは独立するカーネルインタラクションスレッドは、第３のキャッシュ領域にキャッシュされた非ドメイン名解析データパケットをカーネル空間のキャッシュ領域にキャッシュし、オペレーティングシステムカーネルによって応答する。
【００６２】
図６に示すように、一実施例では、ステップＳ３０６は具体的に、以下のステップを含む。
【００６３】
Ｓ６０２、第１のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットの先頭アドレスポインタを確定する。
【００６４】
具体的に、ドメイン名解析サーバーは、取得したドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュした後、ドメイン名解析要求パケットの先頭アドレスポインタを一時キャッシュファイル又はログファイルに保存し、ドメイン名解析要求パケットに対してデータ修正を行う必要があるときに読み取ることができる。
【００６５】
Ｓ６０４、第１のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットのうち修正待ちデータのアドレスポインタオフセットを確定し、修正待ちデータは、ドメイン名解析要求パケットと対応するドメイン名解析応答パケットとのそれぞれのヘッダデータ間の差分データである。
【００６６】
具体的に、ドメイン名解析サーバーは、まず、キャッシュされたドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを確定し、確定したドメイン名解析応答パケットのヘッダデータに基づき、ドメイン名解析要求パケットのヘッダデータにおけるドメイン名解析応答パケットのヘッダデータとの差分データを確定し、確定した差分データを修正待ちデータとすることができる。
【００６７】
ドメイン名解析データパケットのヘッダデータのうちパッケージングされたデータは通常、確定されたバイト分割が行われている。例えば、ドメイン名解析データパケットのヘッダデータの１番目のバイトと２番目のバイトはドメイン名解析データパケット識別子であり、３番目のバイトと４番目のバイトはドメイン名解析データパケットフラグであり、ドメイン名解析データパケットフラグ文字セグメントの１番目のビットはフラグビットであり、「０」はドメイン名解析要求パケットであることを表し、「１」はドメイン名解析応答パケットであることを表す。ドメイン名解析サーバーは、確定した差分データが位置するバイトに基づき、修正待ちデータのアドレスポインタオフセットを確定することができる。
【００６８】
Ｓ６０６、先頭アドレスポインタとアドレスポインタオフセットに基づき、第１のキャッシュ領域において修正待ちデータを位置決めする。
【００６９】
具体的に、ドメイン名解析要求パケットの先頭アドレスポインタに修正待ちデータのアドレスポインタオフセットを追加することで、修正待ちデータのアドレスポインタを取得することができ、ドメイン名解析サーバーは、取得された当該アドレスポインタに基づき、第１のキャッシュ領域における修正待ちデータのキャッシュアドレスを確定することができる。
【００７０】
Ｓ６０８、位置決めされた修正待ちデータをドメイン名解析応答パケットのうち修正待ちデータに対応するデータに修正する。
【００７１】
具体的に、ドメイン名解析サーバーは、確定した第１のキャッシュ領域における修正待ちデータのキャッシュアドレスに、ドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを書き込む。例えば、データパケットタイプを表すフラグビットを要求パケットを表すフラグから応答パケットを表すフラグに修正する。
【００７２】
本実施例では、ドメイン名解析要求パケットをキャッシュする第１のキャッシュ領域においてドメイン名解析要求パケットのヘッダデータをドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータに直接修正し、解析工程でドメイン名解析応答パケットをリアルタイムでパッケージングするという面倒なステップが回避され、応答時間を減少して、ドメイン名解析效率をさらに向上させる。
【００７３】
図７に示すように、一実施例では、ステップＳ３１０は、具体的に以下のステップを含む。
【００７４】
Ｓ７０２、抽出されたドメイン名によってマッピングされたハッシュ値を取得する。
【００７５】
その中、ハッシュ値は、ハッシュアルゴリズムを利用して任意の長さのバイナリ値をマッピングすることによって得られる固定長の小さいバイナリ値である。例えば、ハッシュアルゴリズムは、文字列の各文字に対応するＡＳＣＩＩコード（Ａｍｅｒｉｃａｎ  Ｓｔａｎｄａｒｄ  Ｃｏｄｅ  ｆｏｒ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎｔｅｒｃｈａｎｇｅ、情報交換用の米国標準コード）を累積することであり、文字列「ｍｉｎｇ」に対応するハッシュ値は、１０９+１０５+１１０+１０３=４２７である。具体的に、ドメイン名解析サーバーは、予め設定されたハッシュアルゴリズムによって抽出されたドメイン名によってマッピングされるハッシュ値を計算することができる。
【００７６】
Ｓ７０４、ハッシュテーブルにおいて、ハッシュ値が指向するリンクリストを確定する。
【００７７】
その中、ハッシュテーブルは、ドメイン名及びドメイン名に対応する応答データのキャッシュアドレスを、ドメイン名とハッシュ値とのマッピング関係に従って格納するためのリストである。ハッシュ値はハッシュテーブルにおける記憶位置である。ドメイン名及びドメイン名に対応する応答データをドメイン名によってマッピングされたハッシュ値の記憶位置に記憶する。リンクリストは、複数のデータ要素を記憶するためのリンク格納構造である。本実施例では、リンクリストは、同じマッピングのハッシュ値を有するドメイン名を記憶し、且つ当該同じハッシュ値によって指向されるサブリストである。
【００７８】
具体的に、ドメイン名解析サーバーは、ドメイン名解析要求パケットによって要求されたレコードタイプに基づき、複数のハッシュテーブルを事前に確立することができ、各ハッシュテーブルは、同じレコードタイプに属する応答データのキャッシュアドレスと対応するドメイン名を対応付けて記憶する。抽出された要求タイプに対応するハッシュテーブルにおいて、ハッシュ値によって指向されるリンクリストを確定する。ドメイン名解析サーバーは、応答データのキャッシュアドレスを対応するドメイン名及び属するレコードタイプに対応付けて一つのハッシュテーブルに記憶し、当該ハッシュテーブルにおいてハッシュ値が指向するリンクリストを確定することができる。
【００７９】
Ｓ７０６、リンクリストにおいて、抽出されたドメイン名を含み且つ抽出されたレコードタイプに対応するノードを検索する。
【００８０】
その中、リンクリストに記憶された各要素をノードと呼び、各ノードは、データ要素が記憶されるデータフィールドと次のノードのアドレスが記憶されるポインタフィールドとの２つの部分を含む。
【００８１】
具体的に、ドメイン名解析サーバーは、抽出されたドメイン名に基づき、確定したリンクリストにおいて、ノードのデータフィールドに記憶されたドメイン名と一つずつ比較し、ノードに記憶されたドメイン名が抽出されたドメイン名と一致するときに、当該ノードを検索が必要なノードであると確定することができる。その中、検索に使用されるリンクリストは、抽出された要求タイプに対応するハッシュテーブルに属する。
【００８２】
ドメイン名解析サーバーが応答データのキャッシュアドレスを対応するドメイン名及び属するレコードタイプに対応付けて一つのハッシュテーブルに記憶する場合について、ドメイン名解析サーバーは、抽出されたドメイン名に基づき、確定したリンクリストにおいて、ノードのデータフィールドに記憶されたドメイン名と一つずつ比較した後、抽出されたレコードタイプに基づき、確定したリンクリストにおいてノードのデータフィールドに記憶されたレコードタイプと一つずつ比較し、ノード内に記憶されたレコードタイプが抽出されたレコードタイプと一致するときに、当該ノードを検索が必要なノードであると確定する。
【００８３】
Ｓ７０８、検索されたノードから応答データのキャッシュアドレスを抽出する。
【００８４】
Ｓ７１０、キャッシュアドレスに基づき、第２のキャッシュ領域から対応するプリキャッシュされた応答データを読み取る。
【００８５】
具体的に、ドメイン名解析サーバーは、第２のキャッシュ領域におけるキャッシュアドレスからキャッシュされたデータを読み取ることができ、読み取ったキャッシュされたデータはプリキャッシュされた応答データである。
【００８６】
本実施例では、ハッシュテーブルにおいて、応答データのキャッシュアドレスを検索し、検索されたアドレスに基づき、キャッシュから応答データを読み取り、対応する応答データを一つずつキャッシュにおいて直接検索するような時間を無駄にするという問題を回避して、検索速度を大幅に向上させ、ドメイン名解析の效率をさらに向上させる。
【００８７】
さらに、ドメイン名解析サーバーが、ハッシュテーブルにおいて対応する応答データを検索できなかったときに、抽出されたドメイン名に対応するプライマリドメイン名を確定し、ハッシュテーブルにおいて確定したプライマリドメイン名に対応し、且つドメイン名開始レコードタイプに属する応答データを検索する。その中、ドメイン名は階層構造を採用し、地理的ドメイン又は機関ドメインに従って階層化されており、それぞれのレベルは小数点で区切られ、最上位ドメイン名セグメント及び２番目に高いドメイン名セグメント等は右から左に順番に並び、最も左側のフィールドはプライマリドメイン名である。例えば、要求されたドメイン名はｗｗｗ.ｘｘ.ｃｏｍであり、そのプライマリドメイン名はｘｘ.ｃｏｍである。ドメイン名開始レコードは、当該プライマリドメイン名に対応する許可ドメイン名サーバーを表す。
【００８８】
本実施例では、ドメイン名解析要求パケットによって解析を要求されたドメイン名と要求されたレコードタイプに対応する応答データが検索されなかったときの処理方法を提供し、ドメイン名開始レコードをフィードバックして、ドメイン名解析要求当事者が当該ドメイン名開始レコードに基づき、許可ドメイン名サーバーにドメイン名解析要求を送信することができるようにし、ドメイン名解析の成功率を向上させる。
【００８９】
図８に示すように、一実施例では、ステップＳ３１２は、具体的に以下のステップを含む。
【００９０】
Ｓ８０２、第１のキャッシュ領域における修正後のドメイン名解析要求パケットの先頭アドレスポインタを取得する。
【００９１】
具体的に、ドメイン名解析サーバーは、取得したドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュした後、ドメイン名解析要求パケットの先頭アドレスポインタを一時キャッシュファイル又はログファイルに保存し、ドメイン名解析要求パケットに対してデータ修正を行う必要があるときに読み取ることができる。ドメイン名解析要求パケットは修正後も、先頭アドレスポインタが変わらない。
【００９２】
Ｓ８０４、修正後のドメイン名解析要求パケットのデータの総量に対応するアドレスポインタオフセットを取得する。
【００９３】
具体的に、ドメイン名解析サーバーは、修正後のドメイン名解析要求パケットのデータの総量を検出し、検出されたデータの総量に基づき、第１のキャッシュ領域において修正後のドメイン名解析要求パケットが占めるキャッシュアドレス範囲を確定し、当該アドレス範囲の大きさに基づき、アドレスポインタオフセットを確定することができる。
【００９４】
Ｓ８０６、修正後のドメイン名解析要求パケットの先頭アドレスポインタとアドレスポインタオフセットに基づき、応答データの先頭アドレスポインタを確定する。
【００９５】
具体的に、ドメイン名解析サーバーは、修正後のドメイン名解析要求パケットの先頭アドレスポインタにアドレスポインタオフセットを追加して応答データの先頭アドレスポインタを取得することができる。
【００９６】
Ｓ８０８、応答データの先頭アドレスポインタに基づき、応答データを第１のキャッシュ領域にキャッシュして、第１のキャッシュ領域にキャッシュされ且つ修正後のドメイン名解析要求パケットとキャッシュされた応答データを含むドメイン名解析応答パケットを取得する。
【００９７】
具体的に、確定した応答データの先頭アドレスポインタは、修正後のドメイン名解析要求パケットに含まれたデータの最後のバイトのキャッシュアドレスの次のキャッシュアドレスである。確定された当該アドレスポインタに従って、応答データを第１のキャッシュ領域にキャッシュして、第１のキャッシュ領域にキャッシュされ且つ修正後のドメイン名解析要求パケットとキャッシュされた応答データを含むドメイン名解析応答パケットを取得する。
【００９８】
本実施例では、ドメイン名解析工程は、ドメイン名解析要求パケットを取得してからドメイン名解析応答パケットを取得するまで、第１のキャッシュ領域において行われ、第２のキャッシュ領域において検索された応答データを第１のキャッシュ領域におけるドメイン名解析要求パケットに含まれるデータの終わりにコピーするだけで、ドメイン名解析要求パケットと組み合わせてドメイン名解析応答パケットを取得でき、ドメイン名解析效率を向上させる。
【００９９】
図９に示すように、一実施例では、ドメイン名解析方法が提供され、当該方法は具体的に以下のステップを含む。
【０１００】
Ｓ９０２、ユーザー空間において並行する解析スレッドからアイドル状態にある解析スレッドを選択する。
【０１０１】
Ｓ９０４、オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、選択された解析スレッドによって、伝達されたパケットに含まれるデータプロトコル識別子を取得する。
【０１０２】
Ｓ９０６、取得したデータプロトコル識別子によって、伝達されるデータパケットがドメイン名解析要求パケットであるかどうかを判断する。そうであれば、ステップＳ９０８に進み、そうでなければ、ステップＳ９１０に進み。
【０１０３】
Ｓ９０８、選択された解析スレッドによって、ドメイン名解析要求パケットを取得し、ステップＳ９１２に進む。
【０１０４】
Ｓ９１０、選択された解析スレッドによって、伝達されたデータパケットをユーザー空間における第３のキャッシュ領域にキャッシュし、並行する解析スレッドとは独立したカーネルインタラクションスレッドによって、第３のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットをオペレーティングシステムカーネルにフィードバックして応答する。
【０１０５】
Ｓ９１２、取得したドメイン名解析要求パケットをユーザー空間における第１のキャッシュ領域にキャッシュする。
【０１０６】
Ｓ９１４、選択された解析スレッドによって、第１のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットの先頭アドレスポインタを確定する。第１のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットのうち修正待ちデータのアドレスポインタオフセットを確定し、修正待ちデータがドメイン名解析要求パケットとそれに対応するドメイン名解析応答パケットとのそれぞれのヘッダデータ間の差分データである。先頭アドレスポインタとアドレスポインタオフセットに基づき、第１のキャッシュ領域において修正待ちデータを位置決めする。位置決めされた修正待ちデータをドメイン名解析応答パケットのうち修正待ちデータに対応するデータに修正する。
【０１０７】
Ｓ９１６、選択された解析スレッドによって、キャッシュされたドメイン名解析要求パケットによって解析を要求されたドメイン名及び要求されたレコードタイプを抽出する。
【０１０８】
Ｓ９１８、現在の時間が応答データに含まれたキャッシュ期限を超えるかどうかを検出し、そうでなければ、ステップＳ９２０に進み、そうであれば、ステップＳ９２２に進む。
【０１０９】
その中、キャッシュ期限は、応答データの有效期間である。ドメイン名解析によって得られる各レコードタイプに属する結果は固定されていない。現在の時間が応答データに含まれたキャッシュ期限を超えるときに、応答データとしてパッケージングされたドメイン名解析レコードが変更されたかどうかを検出する必要がある。ドメイン名解析レコードが変更されていないときに、応答データに含まれたキャッシュ期限をリセットする。
【０１１０】
Ｓ９２０、選択された解析スレッドによって、抽出されたドメイン名によってマッピングされたハッシュ値を取得する。ハッシュテーブルにおいて、ハッシュ値が指向するリンクリストを確定する。リンクリストにおいて、抽出されたドメイン名を含み且つ抽出されたレコードタイプに対応するノードを検索する。検索されたノードから応答データのキャッシュアドレスを抽出する。キャッシュアドレスに基づき、第２のキャッシュ領域から対応するプリキャッシュされた応答データを読み取る。
【０１１１】
Ｓ９２２、ドメイン名解析レコードを更新し、予め設定された応答フォーマットに従って、更新されたドメイン名解析レコードを更新された応答データにパッケージングし、第２のキャッシュ領域におけるプリキャッシュされた応答データを更新された応答データに置き換え、ステップＳ９２０に進む。
【０１１２】
具体的に、現在の時間が応答データに含まれたキャッシュ期限を超えるときに、ドメイン名解析サーバーは、権威ドメイン名サーバーとの接続を確立することができ、ローカルに記憶されたドメイン名解析レコードが権威ドメイン名サーバーに記憶された対応するドメイン名解析レコードと一致するかどうかを検出することができる。一致しなければ、権威ドメイン名サーバーに記憶された対応するドメイン名解析レコードに基づき、ローカルのドメイン名解析レコードを更新し、予め設定された応答フォーマットに従って更新されたドメイン名解析レコードを更新された応答データにパッケージングし、第２のキャッシュ領域においてプリキャッシュされた応答データを更新された応答データに置き換える。
【０１１３】
Ｓ９２４、選択された解析スレッドによって、第１のキャッシュ領域における修正後のドメイン名解析要求パケットの先頭アドレスポインタを取得する。修正後のドメイン名解析要求パケットのデータの総量に対応するアドレスポインタオフセットを取得する。修正後のドメイン名解析要求パケットの先頭アドレスポインタとアドレスポインタオフセットに基づき、応答データの先頭アドレスポインタを確定する。応答データの先頭アドレスポインタに基づき、応答データを第１のキャッシュ領域にキャッシュして、第１のキャッシュ領域にキャッシュされ、且つ修正後のドメイン名解析要求パケットとキャッシュされた応答データを含むドメイン名解析応答パケットを取得する。
【０１１４】
本実施例では、取得したドメイン名解析要求パケットをユーザー空間における第１のキャッシュ領域に記憶し、独立の解析スレッドによって、当該第１のキャッシュ領域において、キャッシュされたドメイン名解析要求パケットに対する解析工程を完成し、スレッドインタラクション処理データの待ち合わせ工程を回避し、データ処理效率を向上させる。検索する応答データは、ユーザー空間における第２のキャッシュ領域に予め記憶され、検索された後、修正されたドメイン名解析要求パケットと直接組み合わせることができ、ドメイン名解析效率を大幅に向上させる。また、ドメイン名解析工程に必要なデータは、全てユーザー空間のキャッシュ領域に記憶され、磁気ディスクから読み取る必要はなく、データ処理速度を大幅に向上させる。また、応答データを第２のキャッシュ領域から第１のキャッシュ領域にコピーした後、第１のキャッシュ領域においてドメイン名解析工程を完成することができ、データコピーの回数を効果的に減少し、ドメイン名解析效率をさらに向上させる。
【０１１５】
図１０は、一実施例におけるドメイン名解析工程の論理図である。図１０を参照すると、ドメイン名解析サーバーのシステム空間は、カーネル空間とユーザー空間に分けられ、オペレーティングシステムカーネルは、データパケット傍受プロセスを呼び出して、ネットワークカードドライバプロセスによって読み取られたデータパケットをユーザー空間に伝達することができる。ドメイン名解析サーバーは、ドメイン名解析データパケットをユーザー空間における第１のキャッシュ領域にキャッシュし、ユーザー空間における第２のキャッシュ領域において、ドメイン名解析データパケットによって解析を要求されたドメイン名に対応し、且つ要求されたレコードタイプに属する応答データを検索し、検索された応答データを第１のキャッシュ領域におけるドメイン名解析要求パケットの終わりに記憶し、ドメイン名解析要求パケットのヘッダデータを修正して、ドメイン名解析応答パケットを取得する。非ドメイン名解析応答パケットについて、オペレーティングシステムカーネルにフィードバックして応答する。
【０１１６】
本出願の様々な実施例における各ステップは、必ずしもステップ番号によって示される順序で実行されるわけではないことを理解されたい。本明細書で明示的に述べられている場合を除き、これらのステップの実行は厳密には限定されず、これらのステップは他の順序で実行されてもよい。さらに、各実施例における少なくとも一部のステップは、複数のサブステップ又は複数の階段を含み得る。これらのサブステップ又は階段は必ずしも同時に実行されるわけではなく、異なる時間に実行することができる。これらのサブステップ又は階段の実行順序は必ずしも順次的に実行される必要はなく、他のステップ又は他のステップのサブステップ又は階段の少なくとも一部と順番に又は交互に実行されてもよい。
【０１１７】
図１１に示すように、一実施例では、サーバー１１００が提供される。当該サーバー１１００の内部構成は、図２に示した構成を参照することができる。以下に記載される各モジュールはソフトウェア、ハードウェア、又はそれらの組み合わせによって全体的に又は部分的に実現可能である。図１１を参照すると、当該サーバー１１００は、取得モジュール１１０１、修正モジュール１１０２、抽出モジュール１１０３、検索モジュール１１０４、及び組み合わせモジュール１１０５を含む。
【０１１８】
取得モジュール１１０１は、ドメイン名解析要求パケットを取得し、取得したドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュするためのものである。
【０１１９】
修正モジュール１１０２は、第１のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされたドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得するためのものである。
【０１２０】
抽出モジュール１１０３は、キャッシュされたドメイン名解析要求パケットによって解析を要求されたドメイン名及び要求されたレコードタイプを抽出するためのものである。
【０１２１】
検索モジュール１１０４は、第２のキャッシュ領域において、抽出されたドメイン名に対応し、且つ抽出されたレコードタイプに属する、プリキャッシュされた応答データを検索するためのものである。
【０１２２】
組み合わせモジュール１１０５は、検索された応答データと修正後のドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得するためのものである。
【０１２３】
上記サーバー１１００は、取得したドメイン名解析要求パケットを第１のキャッシュ領域に記憶し、当該第１のキャッシュ領域において、キャッシュされたドメイン名解析要求パケットに対する解析工程を完成し、ドメイン名解析要求パケットに含まれるヘッダデータを対応するドメイン名解析応答パケットのヘッダデータに修正して、検索された応答データと修正後のドメイン名解析要求パケットとを組み合わせてドメイン名解析応答パケットを取得する。その中、検索する応答データは、第２のキャッシュ領域に予め記憶され、検索された後、修正されたドメイン名解析要求パケットと直接組み合わせることができるものであり、ドメイン名解析效率を大幅に向上させる。また、応答データを第２のキャッシュ領域から第１のキャッシュ領域にコピーした後、第１のキャッシュ領域において、ドメイン名解析工程を完成することができ、データコピーの回数を効果的に減少し、ドメイン名解析效率をさらに向上させる。
【０１２４】
一実施例では、取得装置１１０１はさらに、オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、伝達されたデータパケットに含まれたデータプロトコル識別子を取得し、データプロトコル識別子が、伝達されたデータパケットがドメイン名解析要求パケットであることを示すときに、ドメイン名解析要求パケットを取得する。本実施例では、第１のキャッシュ領域と第２のキャッシュ領域がユーザー空間にある。
【０１２５】
本実施例では、ドメイン名解析要求パケットであると判定されたデータパケットは、ユーザー空間においてドメイン名解析が直接完成され、カーネル空間の転送を経る必要はなく、カーネル空間において解析するときに複数回のプロセスデータのコピーを必要とするという問題を回避し、ドメイン名解析效率を向上させる。非ドメイン名解析要求パケットであると判定されたデータパケットをオペレーティングシステムカーネルにフィードバックして応答することで、ユーザー空間において解析できないデータパケットに対する処理方式が提供され、データパケット解析の成功率を向上させる。
【０１２６】
一実施例では、修正モジュール１１０２はさらに、第１のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットの先頭アドレスポインタを確定し、第１のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットのうち修正待ちデータのアドレスポインタオフセットを確定し、修正待ちデータがドメイン名解析要求パケットとそれに対応するドメイン名解析応答パケットとのそれぞれのヘッダデータ間の差分データであり、先頭アドレスポインタとアドレスポインタオフセットに基づき、第１のキャッシュ領域において修正待ちデータを位置決めし、位置決めされた修正待ちデータをドメイン名解析応答パケットのうち修正待ちデータに対応するデータに修正する。
【０１２７】
本実施例では、ドメイン名解析要求パケットをキャッシュする第１のキャッシュ領域においてドメイン名解析要求パケットのヘッダデータをドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータに直接修正し、解析工程でドメイン名解析応答パケットをリアルタイムでパッケージングするという面倒なステップが回避され、応答時間を減少して、ドメイン名解析效率をさらに向上させる。
【０１２８】
一実施例では、検索モジュール１１０４はさらに、抽出されたドメイン名によってマッピングされたハッシュ値を取得し、ハッシュテーブルにおいて、ハッシュ値が指向するリンクリストを確定し、リンクリストにおいて、抽出されたドメイン名を含み且つ抽出されたレコードタイプに対応するノードを確定し、検索されたノードから応答データのキャッシュアドレスを抽出し、キャッシュアドレスに基づき、第２のキャッシュ領域から対応するプリキャッシュされた応答データを読み取る。
【０１２９】
本実施例では、ハッシュテーブルにおいて、応答データのキャッシュアドレスを検索し、検索されたアドレスに基づき、キャッシュから応答データを読み取り、対応する応答データを一つずつキャッシュにおいて直接検索するような時間を無駄にするという問題を回避して、検索速度を大幅に向上させ、ドメイン名解析の效率をさらに向上させる。
【０１３０】
一実施例では、組み合わせモジュール１１０５はさらに、第１のキャッシュ領域において修正後のドメイン名解析要求パケットの先頭アドレスポインタを取得し、修正後のドメイン名解析要求パケットのデータの総量に対応するアドレスポインタオフセットを取得し、修正後のドメイン名解析要求パケットの先頭アドレスポインタとアドレスポインタオフセットに基づき、応答データの先頭アドレスポインタを確定し、応答データの先頭アドレスポインタに基づき、応答データを第１のキャッシュ領域にキャッシュして、第１のキャッシュ領域にキャッシュされ、且つ修正後のドメイン名解析要求パケットとキャッシュされた応答データを含むドメイン名解析応答パケットを取得する。
【０１３１】
本実施例では、ドメイン名解析工程は、ドメイン名解析要求パケットの取得からドメイン名解析応答パケットが得られるまで、第１のキャッシュ領域において行われ、第２のキャッシュ領域において検索された応答データを第１のキャッシュ領域におけるドメイン名解析要求パケットに含まれるデータの終わりにコピーするだけで、ドメイン名解析要求パケットと組み合わせてドメイン名解析応答パケットを取得でき、ドメイン名解析效率を向上させる。
【０１３２】
図１２は、別の実施例におけるサーバー１１００の構成ブロック図であり、図１２を参照すると、当該サーバー１１００は、プリキャッシュモジュール１１０６をさらに含む。
【０１３３】
プリキャッシュモジュール１１０６は、現在の時間が応答データに含まれるキャッシュ期限を超える場合、ドメイン名解析レコードを更新し、予め設定された応答フォーマットに従って更新されたドメイン名解析レコードを更新された応答データにパッケージングし、第２のキャッシュ領域におけるプリキャッシュされた応答データを更新された応答データに置き換えるためのものである。その中、応答データは、ドメイン名解析レコードを予め設定された応答フォーマットに従ってパッケージングすることによって取得される。
【０１３４】
本実施例では、取得したドメイン名解析要求パケットをユーザー空間における第１のキャッシュ領域に記憶し、独立の解析スレッドによって、当該第１のキャッシュ領域において、キャッシュされたドメイン名解析要求パケットに対する解析工程を完成し、スレッドインタラクション処理データの待ち合わせ工程を回避し、データ処理效率を向上させる。検索する応答データは、ユーザー空間における第２のキャッシュ領域内に予め記憶され、検索された後に、修正されたドメイン名解析要求パケットと直接組み合わせることができ、ドメイン名解析效率を大幅に向上させる。また、ドメイン名解析工程に必要なデータは、全てユーザー空間のキャッシュ領域内に記憶され、磁気ディスクから読み取る必要はなく、データ処理速度を大幅に向上させる。また、応答データを第２のキャッシュ領域から第１のキャッシュ領域にコピーした後、第１のキャッシュ領域においてドメイン名解析工程を完成することができ、データコピーの回数を効果的に減少し、ドメイン名解析效率をさらに向上させる。
【０１３５】
図１３に示すように、一実施例では、サーバー１３００が提供される。当該サーバー１３００の内部構成は、図２に示した構成を参照することができる。以下に記載される各モジュールはソフトウェア、ハードウェア、又はそれらの組み合わせによって全体的に又は部分的に実現可能である。図１３を参照すると、当該サーバー１３００は、選択モジュール１３０１、取得モジュール１３０２、修正モジュール１３０３、抽出モジュール１３０４、検索モジュール１３０５、及び組み合わせモジュール１３０６を含む。
【０１３６】
選択モジュール１３０１は、並行する解析スレッドからアイドル状態にある解析スレッドを選択するためのものである。
【０１３７】
取得モジュール１３０２は、選択された解析スレッドによって、ドメイン名解析要求パケットを取得し、取得したドメイン名解析要求パケットを第１のキャッシュ領域にキャッシュするためのものである。
【０１３８】
修正モジュール１３０３は、選択された解析スレッドによって、第１のキャッシュ領域においてキャッシュされたドメイン名解析要求パケットに含まれるヘッダデータを修正して、キャッシュされたドメイン名解析要求パケットに対応するドメイン名解析応答パケットのヘッダデータを取得するためのものである。
【０１３９】
抽出モジュール１３０４は、選択された解析スレッドによって、キャッシュされたドメイン名解析要求パケットによって解析を要求されたドメイン名及び要求されたレコードタイプを抽出するためのものである。
【０１４０】
検索モジュール１３０５は、選択された解析スレッドによって、第２のキャッシュ領域において、抽出されたドメイン名に対応し、且つ抽出されたレコードタイプに属する、プリキャッシュされた応答データを検索するためのものである。
【０１４１】
組み合わせモジュール１３０６は、選択された解析スレッドによって、検索された応答データと修正後のドメイン名解析要求パケットとを組み合わせて、ドメイン名解析応答パケットを取得するためのものである。
【０１４２】
本実施例では、ドメイン名解析工程は解析スレッドによって独立に完成し、他のスレッドとの間のデータやり取り処理が含まれず、スレッドインタラクション処理データの待ち合わせ工程を回避し、ドメイン名解析效率をさらに向上させる。
【０１４３】
一実施例では、取得モジュール１３０２はさらに、オペレーティングシステムカーネルがネットワークカード受信キューからデータパケットを読み取ってユーザー空間に伝達するときに、選択された解析スレッドによって、伝達されたデータパケットに含まれたデータプロトコル識別子を取得し、データプロトコル識別子が、伝達されたデータパケットが非ドメイン名解析要求パケットであることを示すときに、選択された解析スレッドによって、伝達されたデータパケットをユーザー空間における第３のキャッシュ領域にキャッシュし、並行する解析スレッドとは独立したカーネルインタラクションスレッドによって、第３のキャッシュ領域からデータパケットを読み取って、読み取ったデータパケットをオペレーティングシステムカーネルにフィードバックして応答する。本実施例では、第１のキャッシュ領域と第２のキャッシュ領域はユーザー空間にある。
【０１４４】
本実施例では、ユーザー空間のドメイン名解析プロセスによって解析することができない非ドメイン名解析要求パケットを、オペレーティングシステムカーネルにフィードバックして応答することで、ユーザー空間におけるドメイン名解析プロセスが非ドメイン名解析要求パケットを解析することに失敗するという問題は回避され、データパケット解析の成功率を向上させる。
【０１４５】
当業者は、上記の実施例の方法における全部又は一部の流れの実施が、コンピュータプログラムにより関連するハードウェアを命令することによって完成できることを理解することができる。前記プログラムは、不揮発性コンピュータ可読記憶媒体に記憶され、実行されるときに、上記の各方法の実施例のような流れを含むことができる。その中、本出願で提供される様々な実施例で使用されるメモリ、記憶装置、データベース又は他の媒体へのいかなる言及は、不揮発性及び／又は揮発性メモリを含み得る。不揮発性メモリは、読み出し専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、又はフラッシュメモリを含むことができる。揮発性メモリは、ランダムアクセスメモリ（ＲＡＭ）又は外部キャッシュメモリを含み得る。説明のためのものであって制限的ではなく、ＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲＳＤＲＡＭ）、エンハンストＳＤＲＡＭ（ＥＳＤＲＡＭ）、同期リンク（Ｓｙｎｃｈｌｉｎｋ）ＤＲＡＭ（ＳＬＤＲＡＭ）、メモリバス（Ｒａｍｂｕｓ）ダイレクトＲＡＭ（ＲＤＲＡＭ）、ダイレクトメモリバスダイナミックＲＡＭ（ＤＲＤＲＡＭ）、及びメモリバスダイナミックＲＡＭ（ＲＤＲＡＭ）などの様々な形態で利用可能である。
【０１４６】
上記実施例の各技術的特徴は、任意に組み合わせてもよい。簡潔に説明するために、上記実施例における様々な技術的特徴の全ての可能な組み合わせは説明されていない。しかしながら、これらの技術的特徴の組み合わせに矛盾がない限り、それらは本明細書の範囲とみなされるべきである。
【０１４７】
上記の実施例は本出願のいくつかの実施例を表すだけであり、その説明は具体的且つ詳細であるが、それらは本発明の特許の範囲を限定するものと解釈すべきではない。本出願の範囲から逸脱することなく、当業者によって多くの変形及び修正がなされ得ることに留意されたい。これらはすべて本出願の保護範囲内である。そのため、本出願の範囲は添付の特許請求の範囲によって決定されるべきである。
【図１】
2019537372.tif 000003
【図２】
2019537372.tif 000004
【図３】
2019537372.tif 000005
【図４】
2019537372.tif 000006
【図５】
2019537372.tif 000007
【図６】
2019537372.tif 000008
【図７】
2019537372.tif 000009
【図８】
2019537372.tif 000010
【図９】
2019537372.tif 000011
【図１０】
2019537372.tif 000012
【図１１】
2019537372.tif 000013
【図１２】
2019537372.tif 000014
【図１３】
2019537372.tif 000015
【国際調査報告】
2019537372.tif 000016
2019537372.tif 000017
2019537372.tif 000018
2019537372.tif 000019