11 votes

Comment puis-je lire la sortie de dns-sd ?

Lorsque je lance le dns-sd par exemple sous la forme dns-sd -B _services._dns-sd._udp. pour répertorier tous les types de services sur mon réseau local, j'obtiens un tableau qui ressemble à ceci :

$ dns-sd -B _services._dns-sd._udp.
Browsing for _services._dns-sd._udp.
DATE: ---Tue 31 Dec 2013---
14:39:57.995  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
14:39:57.995  Add        3   4 .                    _tcp.local.          _ssh
14:39:57.996  Add        3   4 .                    _tcp.local.          _sftp-ssh

J'obtiens "Timestamp", et "A/R" est probablement "Add/Remove". Que sont les "Drapeaux" ? C'est quoi "if" ?

6voto

osantana Points 1005

Une demi réponse :

J'ai trouvé le code source de dns-sd.c y dns_sd.h datant de 2004 et de OS X "Lion", où "flags" est une valeur du type DNSServiceFlags ce qui semble être une de ces constantes (dépréciées) . Si c'est le cas, alors "1" signifie "kDNSServiceFlagsMoreComing" : une autre entrée devrait suivre immédiatement. "2" signifie simplement "kDNSServiceFlagsAdd". "3" signifie "kDNSServiceFlagsAdd" avec "kDNSServiceFlagsMoreComing". Pas très utile.

D'après ce même programme, "si" c'est uint32_t ifIndex L'indice d'interface, qui est également mentionné sur la page du développeur Apple. Je vois des valeurs comme "4" et "0", et je n'arrive pas à en comprendre la signification. Il semble qu'il s'agisse à la fois d'un masque binaire pour demander une classe d'interface (où 0 signifie "any", et -1/-2/-3 cast to an uint32_t sont d'autres classes), et d'un index dans une liste d'interfaces réseau (où 0 signifie "error", et les entiers positifs indiquent une interface valide). Je n'ai qu'une seule interface réseau active, et je ne peux pas dire qu'elle est "#4" de quoi que ce soit, ou pourquoi je verrais "0" pour certaines requêtes dns-sd.

Le code mDNSResponder d'Apple, qui a fait l'objet de nombreuses révisions au cours des années, se trouve à l'adresse suivante https://opensource.apple.com/source/mDNSResponder/ .

1voto

rick sustek Points 19

"if" est le diminutif de "interface". "Dans ce cas, une interface est une entité logicielle qui se lie à l'extrémité inférieure de la couche IP (Internet Protocol) de la pile. Un module logiciel "interface" fournit une API connue à l'IP, pour lier les pilotes de matériel réseau à la couche IP. Les interfaces typiques fournissent cette liaison pour des choses comme Ethernet, WiFi, Bluetooth, Firewire, etc. Étant donné qu'une machine donnée peut avoir plus d'une interface de support physique, la couche IP peut se lier à plusieurs interfaces. Ces liaisons sont conservées par le biais de simples valeurs d'index dans une table. La valeur "if" dans l'affichage dns-sd est simplement le numéro d'index de l'interface pour laquelle le service est accessible.

Vous pouvez découvrir quelles interfaces sont configurées dans votre système avec d'autres utilitaires de ligne de commande, tels que netstat -i . Dans OS X et d'autres UNIX, vous pouvez voir <Link#4> répertorié, c'est-à-dire l'indice 4.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X