Aller au contenu

Diffusion ​

L'écran Diffusion (Diffusion et découverte) envoie une charge utile UDP à de nombreuses destinations à la fois, et écoute de l'autre côté pour voir qui répond. Servez-vous-en pour trouver des appareils sur un réseau, vérifier qu'un flux de multidiffusion atteint un récepteur, ou jouer un appareil qui répond aux sondes de découverte.

  • L'Émetteur envoie à une liste d'hôtes, une adresse de diffusion, un groupe de multidiffusion, ou à tous les hôtes d'un sous-réseau — une fois, ou encore et encore en balise.
  • L'Écoute de découverte écoute sur un port, rejoint des groupes de multidiffusion, liste chaque pair qui lui parle, et peut répondre aux sondes.

DANGER

La diffusion, la multidiffusion et un balayage atteignent chaque appareil du segment réseau, pas seulement celui que vous avez en tête, et une balise continue de le faire. Vérifiez sur quel réseau vous êtes d'abord, et n'envoyez qu'à des réseaux qui vous appartiennent ou que vous êtes autorisé à tester. Les limites ci-dessous sont des garde-fous, pas une autorisation.

Envoyer ​

  1. Choisissez le Mode (ci-dessous).
  2. Saisissez la destination : le nom du champ change avec le mode. Sur un réseau avec une adresse IPv4, mon sous-réseau le remplit à partir de l'adresse de cet ordinateur.
  3. Choisissez la Charge utile et écrivez-la.
  4. Appuyez sur Envoyer une fois : un datagramme part vers chaque destination.

Modes ​

ModeDestinationCe qui se passePar défaut
ListeCibles : des entrées IP:port ou host:port séparées par des virgules, des points-virgules ou des sauts de ligne — un espace ne les sépare pas. Un nom est résolu, et son adresse IPv4 prise quand il en a une.Un datagramme vers chacune127.0.0.1:9000, 127.0.0.1:9001
BroadcastAdresse : 255.255.255.255:port, ou une adresse se terminant par .255Un datagramme que chaque hôte du réseau local reçoit. Les routeurs ne le transmettent pas.255.255.255.255:9000
MulticastAdresse : un groupe de 224.0.0.0 à 239.255.255.255, avec un portUn datagramme vers le groupe ; seuls les écouteurs qui l'ont rejoint le reçoivent239.1.1.1:9000
BalayageBloc CIDR, a.b.c.d/nn, et un PortUn datagramme vers chaque hôte utilisable du bloc, en unicast — pour les appareils qui ignorent la diffusion192.168.1.0/24, port 9000

Dans un balayage, les adresses de réseau et de diffusion sont sautées (sauf dans un /31 ou /32), et une base qui n'est pas celle du réseau est ramenée à elle : 192.0.2.77/30 balaie 192.0.2.77 et 192.0.2.78. Un balayage atteint au plus 1024 hôtes, le bloc le plus large est donc un /22 (1022 hôtes) ; un bloc plus large est refusé avec le préfixe vers lequel le réduire.

La diffusion, les groupes de multidiffusion, les balayages et les jointures de l'écouteur de découverte sont IPv4 uniquement : IPv6 n'a pas de diffusion. Une Liste peut aussi nommer des hôtes IPv6 (voir Options de socket).

mon sous-réseau remplit x.y.z.10:9000, x.y.z.11:9000 dans Liste, x.y.z.255:9000 dans Broadcast et x.y.z.0/24 dans Balayage, à partir de l'adresse de cet ordinateur x.y.z.w. Il suppose un réseau en /24.

Charge utile ​

Charge utileCe qui est envoyé
OSCUn message OSC : Adresse OSC et des Arguments typés, comme sur l'écran OSC. Par défaut /hello/discover avec le texte who-is-there.
texteLe Texte en UTF-8, exactement comme saisi, sans terminateur. Par défaut HELLO-PROBE.
hex brutLe Octets hex octet par octet — pour rejouer une trame capturée ou parler un protocole de découverte binaire. Des paires de chiffres hexadécimaux ; tout ce qui les sépare est ignoré. Par défaut 48 45 4c 4c 4f.

Options de socket ​

options de socket ouvre trois réglages de plus :

OptionQuoiPar défaut
Adresse sourceL'IP:port local duquel partent les datagrammes. Épinglez-le pour choisir la carte réseau, ou un port source auquel un appareil répond. 0.0.0.0:0 : n'importe lequel.0.0.0.0:0
TTL / sautsCombien de routeurs un datagramme peut traverser, 1–255. Pour la multidiffusion, c'est la limite de sauts multicast : 1 le garde sur ce réseau.1
rebouclage sur cet hôteMultidiffusion uniquement : remettre aussi les datagrammes du groupe à cet ordinateur, pour qu'un écouteur ici les entendeactivé

Avec la Adresse source par défaut, les datagrammes partent d'un socket IPv4, ou d'un socket IPv6 quand toutes les destinations sont IPv6. Une liste qui mélange les deux part du socket IPv4, et ses destinations IPv6 échouent ; envoyez-les comme une liste à part, ou épinglez Adresse source sur une adresse IPv6.

Le résultat ​

Dernier envoi montre ce qui est parti : Cibles, Paquets, Volume et Erreurs, et les huit premières destinations atteintes (« … +n more » pour les autres). Une erreur vers une destination n'arrête pas les autres ; la ligne de console nomme combien ont échoué.

Répéter en balise ​

Une balise envoie la même tournée — un datagramme vers chaque destination — selon un calendrier, jusqu'à ce que vous l'arrêtiez. Les appareils qui attendent une annonce périodique en ont besoin.

  1. Réglez le mode, la destination et la charge utile comme pour un envoi unique.
  2. Sous Répéter en balise, réglez Débit (/s), et s'il doit s'arrêter de lui-même, Tours ou Secondes.
  3. Appuyez sur Démarrer la balise. Arrêter la balise — ou l'arrêt de sa tâche dans le bandeau de la console — y met fin.
ChampQuoiPar défaut
Débit (/s)Tournées par seconde ; doit être supérieur à 02
ToursS'arrêter après ce nombre de tournées ; 0 — sans limite0
SecondesS'arrêter après ce nombre de secondes ; 0 — sans limite0

Le débit multiplié par le nombre de destinations peut atteindre au plus 50 000 datagrammes par seconde. Un balayage d'un /24 (254 hôtes) peut donc se répéter environ 196 fois par seconde au plus. Pendant que la balise tourne, Dernier envoi affiche Cibles (les destinations de chaque tournée, à partir du premier rapport), les totaux, Tours et PPS (datagrammes par seconde), mis à jour quatre fois par seconde, et Envoyer une fois est indisponible. Une balise qui a eu plus de 32 datagrammes en échec et pas un seul envoyé — aucune route, diffusion non autorisée — s'arrête d'elle-même et dit pourquoi.

Écouter les appareils ​

L'Écoute de découverte lie un port UDP et enregistre chaque pair qui lui envoie quelque chose : ce qui répond à une sonde, ou ce qu'un appareil annonce de lui-même.

  1. Réglez Adresse d’écoute, le port auquel les appareils envoient.
  2. Pour la multidiffusion, listez les groupes dans Rejoindre des groupes multicast.
  3. Appuyez sur Écouter. Les réglages se verrouillent jusqu'à ce que vous appuyiez sur Arrêter l’écoute.
ChampQuoiPar défaut
Adresse d’écouteOù écouter, IP:port. 0.0.0.0 écoute sur chaque carte réseau.0.0.0.0:9000
Rejoindre des groupes multicastGroupes de multidiffusion IPv4 à rejoindre, séparés par des virgules ; vide — unicast et diffusion seulement239.1.1.1
InterfaceL'adresse IPv4 de la carte réseau sur laquelle rejoindre les groupes ; vide — le système choisitvide
partager le portÉcouter sur un port qu'un autre programme utilise aussi (SO_REUSEADDR). Ne fonctionne que si ce programme autorise aussi le partage.activé
répondre aux sondesRépondre aux sondes, comme le ferait un appareil (ci-dessous)désactivé

Pairs ​

Pairs liste qui a envoyé quelque chose, le plus récent en premier, avec le nombre de pairs vus, les paquets entendus et les réponses envoyées au-dessus :

ColonneQuoi
PairL'IP:port de l'expéditeur ; son point indique s'il a été entendu dans les 3 dernières secondes
Protoosc quand son dernier datagramme s'est décodé en OSC, sinon udp
PaquetsCombien il en a envoyé
ÂgeSecondes depuis son dernier datagramme
Dernier messageSon dernier datagramme : l'adresse et les arguments OSC, ou le début du texte

La liste est rafraîchie quelques fois par seconde et contient jusqu'à 512 pairs ; au-delà, les paquets sont toujours comptés mais les nouveaux pairs n'obtiennent pas de ligne.

Répondre aux sondes ​

Avec répondre aux sondes, l'écouteur joue un appareil : il répond à chaque datagramme qu'il reçoit, depuis le port d'écoute, à l'adresse et au port de l'expéditeur.

ChampQuoiPar défaut
Charge utileLa réponse : OSC, texte ou hex, comme pour l'envoiOSC /hello/here avec le texte signal-lab
Délai de réponse (ms)Attendre ce délai avant de répondre, comme le ferait un appareil lent0
Seulement s’il contientRépondre seulement aux datagrammes dont le texte décodé contient ceci — l'adresse et les arguments OSC, ou le début du texte ; vide — à tousvide

L'écouteur ne répond jamais à un datagramme identique à sa propre réponse, donc deux écouteurs pointés l'un vers l'autre ne se répondent pas sans fin.

Pare-feu et ports partagés ​

Le trafic de diffusion et de multidiffusion venant d'autres machines est bloqué par défaut par la plupart des pare-feu Windows : autorisez Signal Lab sur les réseaux privés quand l'application le propose. La diffusion ne traverse jamais un routeur. Pour écouter sur un port que le vrai service possède déjà, les deux côtés doivent autoriser le partage (partager le port ici) ; sans cela, un port pris est refusé avec une indication pour l'activer. Voir Dépannage.

Dans l'Inspecteur ​

Avec la capture active, le trafic de l'écran apparaît avec le protocole osc ou udp, selon sa charge utile :

SourceQuoiCombien
broadcastEnvoyer une fois : chaque datagramme, avec le verdict fan-out, broadcast, multicast ou sweep ; un échec avec error: …chacun
beaconLes tournées d'une baliseau plus une tournée toutes les 50 ms
discoveryLes datagrammes que reçoit l'écouteurau plus un toutes les 40 ms
discoverySes réponses, avec le verdict auto-replychacune

Ce que l'Inspecteur laisse de côté d'une balise ou de l'écouteur est compté : la prochaine trame qu'il dessine porte le nombre dans son verdict, +n not shown (pour une balise, une trame pour chaque destination de chaque tournée laissée de côté). Voir Inspecteur.

Sur un serveur ou dans Docker ​

Sur un serveur, l'écran envoie et écoute sur le réseau du serveur. Dans Docker, la diffusion, la multidiffusion et la découverte n'atteignent le réseau local que lorsque le conteneur utilise le réseau de l'hôte (--network host) sur un hôte Linux. Avec le réseau bridge par défaut de Docker, ou Docker Desktop, seul l'unicast vers des hôtes que le conteneur peut joindre fonctionne.

Ailleurs ​

  • signallab send udp envoie un datagramme à un hôte ; il n'y a pas de diffusion, de multidiffusion ni de balayage en ligne de commande.
  • Une étape Datagramme UDP envoie un datagramme texte à un ou plusieurs hôtes, et une étape Attente UDP en attend un. Voir UDP et TCP.
  • Pour jouer un appareil qui répond selon des règles — plusieurs règles, des réponses construites à partir de ce qui est arrivé —, utilisez un émulateur Appareil UDP ou Appareil OSC. Voir Émulateurs.

Problèmes ​

Ce que vous voyezCause habituelle
… is not a broadcast addressBroadcast prend 255.255.255.255:port ou une adresse se terminant par .255. Pour un autre masque de sous-réseau, utilisez Balayage.
… is not a multicast groupL'adresse est hors de 224.0.0.0–239.255.255.255.
… spans … addresses, and a sweep reaches at most 1024 hostsLe bloc est plus large qu'un /22 ; réduisez-le.
Set the port to sweepPort vaut 0.
… is over the … pps limitLe débit multiplié par le nombre de destinations dépasse 50 000 par seconde : baissez Débit (/s), ou réduisez la destination.
… is already in use — turn on “share the port” to listen alongside itUn autre programme a le port ; cochez partager le port.
Cannot join the multicast group …Le groupe ou Interface n'est pas utilisable sur cet ordinateur — aucune carte réseau avec cette adresse, ou aucune route multicast.
Envoyé, mais personne ne répondLes appareils écoutent sur un autre port ; le pare-feu ici garde leurs réponses à l'extérieur ; un routeur se trouve entre vous ; ou, dans Docker, le conteneur n'est pas sur le réseau de l'hôte.
Les sondes partent, mais l'écouteur de découverte n'entend aucune réponseBeaucoup d'appareils répondent à l'adresse et au port d'où vient une sonde — le socket propre à l'émetteur, que l'écran ne lit pas. Écoutez sur le port auquel les appareils répondent, ou envoyez la sonde depuis une expérience : une étape Datagramme UDP avec attendre une réponse envoie et écoute sur le même port.

Chaque message d'erreur est listé dans Messages d'erreur.