2011-01-11 9 views
18

Tôi đang phát triển một máy chủ DNS cơ bản cho mục đích của riêng tôi. Theo cách tôi hiểu, máy chủ DNS nhận các gói UDP chứa tên miền được yêu cầu và trả về IP tương ứng theo một dạng biểu mẫu chuẩn nào đó.Phát triển một máy chủ DNS cơ bản (trong C#)

Có một standard library để đọc/ghi các gói UDP từ/sang định dạng nhị phân. Nhưng tôi có thể tìm thư viện C# để yêu cầu/trả lời DNS theo chuỗi/deserialising ở đâu?

Trả lời

17

Thư viện mã nguồn mở ARSoft.Tools.Net chứa thành phần Máy chủ DNS (xem documentation).

Bạn có thể sử dụng thư viện này trực tiếp hoặc chỉ sử dụng nguồn làm điểm bắt đầu để tạo bộ nối tiếp yêu cầu DNS của riêng bạn.

+0

Mã nguồn từ thành phần DNS Server thực sự chứa mã phân tích gói DNS. Cảm ơn! –

3

Theo như tôi có thể nói, tôi không thể tìm thấy thư viện cho C# xử lý việc tuần tự hóa gói/deserialization DNS, có nghĩa là có khả năng bạn sẽ phải tự cuộn.

Chỉnh sửa: Tôi đã xem dự án gói sniffer mạng này trên Code Project có thể có những gì bạn cần. Khiếu nại để có thể phân tích cú pháp TCP/UDP/DNS

Tôi đã tìm thấy trang web rất hữu ích này cho TCP/IP trong đó có một bộ trang khá toàn diện mô tả DNS packet types bao gồm general message format.

Có thể có một số trợ giúp bổ sung từ số previous SO question này.

3

Nếu bạn nhìn vào wikipedia bạn tìm thấy một danh sách trên tất cả RFC cho giao thức dns, tôi thấy rfc là cách tốt nhất để triển khai giao thức mạng!

bây giờ giao thức dns có khá nhiều rfc vì vậy tôi không biết nếu đây là cách tốt nhất để đọc lên trên giao thức nhưng bạn nhận được tất cả các thông tin bạn cần ít nhất.

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

+1

Tôi đã tự mình thực hiện các đề xuất RFC trước khi tôi thử thư viện ARSoft. Cụ thể hơn, tôi đã sử dụng các phần 4.1.1 và sau: http://tools.ietf.org/html/rfc1035 –