2009-11-08 8 views
1

Je souhaite coder l'en-tête de protocole DNS à l'aide de C et créer un datagramme UDP. Disons que j'ai une requête www.google.com.En-tête de protocole Dns

Quelqu'un peut-il suggérer comment s'y prendre?

Vous pouvez trouver le format d'en-tête ici - http://www.nersc.gov/~scottc/software/snort/dns_head.html

+1

Quel est le problème? Est-ce à propos de C: Comment puis-je emballer des bits? S'agit-il du protocole: quelles sont les définitions d'opcode? –

+0

Comment emballer les bits? – Bruce

+0

Comprenez-vous les champs de bit dans une structure, comment ils sont définis en C et ainsi de suite? La définition de structure que vous mentionnez est configurée de sorte que vous pouvez simplement effectuer des affectations directes aux champs de bits. –

Répondre

2

RFC 1035 explique le format de paquet DNS en détail. Notez que le format est conçu pour être aussi compact que possible, il y a donc beaucoup d'optimisations au niveau des bits et des octets que vous devrez faire attention. Un codeur et un décodeur DNS robustes et appropriés ne sont pas pour les personnes sensibles.

+0

Pouvez-vous suggérer un site Web ou un livre où obtenir de l'aide? – Bruce

+1

Pour quelle raison avez-vous besoin d'aide? Avez-vous lu et compris ce document RFC? –

+0

oui j'ai ... comment faire l'encodage? – Bruce

2

+1 à la RFC 1035. Vous pouvez jeter un oeil sur Wireshark: http://www.wireshark.org/ Il montre les paquets dans les deux - binaires et vue décodée + contient le code source en C de sorte que vous pouvez vérifier le décodage est mis en œuvre.

+0

Bienvenue dans Stack Overflow! Vous êtes assez nouveau ici, alors j'ai pensé que je ferais remarquer que "+1" signifie que vous devez cliquer sur la flèche vers le haut à côté d'un message utile pour augmenter le nombre de votes. D'autres feront la même chose pour vos messages et c'est ainsi que vous gagnez de la réputation. –

+0

Greg, merci pour le conseil. – Oleg

+0

@Greg. Vous savez que la seule façon de laisser un commentaire avant 50 rep est de faire une réponse, n'est-ce pas? –