2011-01-11 7 views
18

私自身の目的のために非常に基本的なDNSサーバーを開発しています。私がそれを理解する方法では、DNSサーバーは要求されたドメイン名を含むUDPパケットを受信し、何らかの標準形式で対応するIPを返します。基本的なDNSサーバーを開発する(C#で)

UDPパケットをバイナリ形式から読み書きするためのstandard libraryがあります。しかし、DNS要求/応答のシリアライズ/デシリアライズのためのC#ライブラリはどこにありますか?

答えて

17

オープンソースARSoft.Tools.Netライブラリには、DNSサーバコンポーネントが含まれています(documentation参照)。

このライブラリを直接使用することも、独自のDNSリクエストシリアライザを構築するための出発点としてソースを使用することもできます。

+0

DNSサーバーコンポーネントのソースコードには、実際にはDNSパケット解析コードが含まれています。ありがとう! –

3

私の知る限りでは、DNSパケットのシリアル化/逆シリアル化を処理するC#のライブラリを見つけることができませんでした。つまり、自分自身をロールバックする必要があります。

編集:私はCode Projectのこのネットワークパケットスニファプロジェクトに遭遇しましたが、あなたが必要とするかもしれません。 TCP/UDP/DNSを解析できるクレーム

この非常に有用なサイトはのgeneral message formatを含む非常に包括的なページセットを持つTCP/IPです。

previous SO questionからの追加のヘルプがあります。

3

あなたがdnsプロトコルのすべてのRFCのリストを見つけたら、rfcはネットワークプロトコルを実装する最良の方法です!

dnsプロトコルにはかなり多くのrfcが含まれているので、これがプロトコル上で読める最良の方法であるかどうかは分かりませんが、少なくとも必要なすべての情報を得ることができます。

http://en.wikipedia.org/wiki/Domain_Name_System#Internet_standards

+1

ARSoftライブラリを試してみる前に、RFCの推奨事項を実装していました。具体的には、セクション4.1.1以降を使用しました。http://tools.ietf.org/html/rfc1035 –

関連する問題