2011-01-11 9 views
18

나는 내 자신의 목적을 위해 아주 기본적인 DNS 서버를 개발 중이다. 내가 이해하는 방식으로, DNS 서버는 요청 된 도메인 이름을 포함하는 UDP 패킷을 수신하고 일종의 표준 형식으로 해당 IP를 반환합니다.기본 DNS 서버 개발 (C#)

이진 형식에서 UDP 패킷을 읽고 쓰는 데 사용되는 장치는 standard library입니다. 그러나 DNS 요청/응답을 serialize/deserialising하기위한 C# 라이브러리는 어디에서 찾을 수 있습니까?

답변

17

오픈 소스 ARSoft.Tools.Net 라이브러리에는 DNS 서버 구성 요소가 포함되어 있습니다 (documentation 참조).

이 라이브러리를 직접 사용할 수도 있고, 소스를 자신의 DNS 요청 시리얼 라이저 작성을위한 시작점으로 사용할 수도 있습니다.

+0

DNS 서버 구성 요소의 소스 코드에는 실제로 DNS 패킷 분석 코드가 들어 있습니다. 감사! –

3

내가 알 수있는 한, DNS 패킷 직렬화/비 직렬화를 처리하는 C# 용 라이브러리를 찾을 수 없었습니다. 즉, 자신 만의 롤백해야 할 가능성이 높습니다.

편집 :이 네트워크 패킷 스니퍼 프로젝트 Code Project에 걸쳐 무엇이 필요한지도 모릅니다. 청구는 TCP/UDP/DNS

나는 general message format을 포함 DNS packet types을 설명하는 페이지의 매우 포괄적 인 세트가 TCP/IP이 매우 도움이 사이트를 발견했다을 구문 분석 할 수 있어야합니다.

previous SO question에 대한 도움이 될 수도 있습니다.

3

위키 피 디아를 보면 dns 프로토콜에 대한 모든 RFC를 통해 목록을 찾을 수 있습니다. rfc가 네트워크 프로토콜을 구현하는 가장 좋은 방법이라고 생각합니다!

이제 dns 프로토콜에는 rfc가 너무 많아서 이것이 프로토콜을 읽는 가장 좋은 방법인지는 모르지만 적어도 필요한 모든 정보를 얻을 수 있습니다.

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

+1

ARSoft 라이브러리를 사용해보기 전에 RFC 권장 사항을 구현하고 있습니다. 좀 더 구체적으로 말하자면, http://tools.ietf.org/html/rfc1035 섹션 4.1.1을 사용했습니다. –