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
- Choisissez le Mode (ci-dessous).
- 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.
- Choisissez la Charge utile et écrivez-la.
- Appuyez sur Envoyer une fois : un datagramme part vers chaque destination.
Modes
| Mode | Destination | Ce qui se passe | Par défaut |
|---|---|---|---|
| Liste | Cibles : 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 chacune | 127.0.0.1:9000, 127.0.0.1:9001 |
| Broadcast | Adresse : 255.255.255.255:port, ou une adresse se terminant par .255 | Un datagramme que chaque hôte du réseau local reçoit. Les routeurs ne le transmettent pas. | 255.255.255.255:9000 |
| Multicast | Adresse : un groupe de 224.0.0.0 à 239.255.255.255, avec un port | Un datagramme vers le groupe ; seuls les écouteurs qui l'ont rejoint le reçoivent | 239.1.1.1:9000 |
| Balayage | Bloc CIDR, a.b.c.d/nn, et un Port | Un datagramme vers chaque hôte utilisable du bloc, en unicast — pour les appareils qui ignorent la diffusion | 192.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 utile | Ce qui est envoyé |
|---|---|
| OSC | Un 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. |
| texte | Le Texte en UTF-8, exactement comme saisi, sans terminateur. Par défaut HELLO-PROBE. |
| hex brut | Le 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 :
| Option | Quoi | Par défaut |
|---|---|---|
| Adresse source | L'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 / sauts | Combien 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ôte | Multidiffusion uniquement : remettre aussi les datagrammes du groupe à cet ordinateur, pour qu'un écouteur ici les entende | activé |
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.
- Réglez le mode, la destination et la charge utile comme pour un envoi unique.
- 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.
- 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.
| Champ | Quoi | Par défaut |
|---|---|---|
| Débit (/s) | Tournées par seconde ; doit être supérieur à 0 | 2 |
| Tours | S'arrêter après ce nombre de tournées ; 0 — sans limite | 0 |
| Secondes | S'arrêter après ce nombre de secondes ; 0 — sans limite | 0 |
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.
- Réglez Adresse d’écoute, le port auquel les appareils envoient.
- Pour la multidiffusion, listez les groupes dans Rejoindre des groupes multicast.
- Appuyez sur Écouter. Les réglages se verrouillent jusqu'à ce que vous appuyiez sur Arrêter l’écoute.
| Champ | Quoi | Par défaut |
|---|---|---|
| Adresse d’écoute | Où écouter, IP:port. 0.0.0.0 écoute sur chaque carte réseau. | 0.0.0.0:9000 |
| Rejoindre des groupes multicast | Groupes de multidiffusion IPv4 à rejoindre, séparés par des virgules ; vide — unicast et diffusion seulement | 239.1.1.1 |
| Interface | L'adresse IPv4 de la carte réseau sur laquelle rejoindre les groupes ; vide — le système choisit | vide |
| 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 sondes | Ré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 :
| Colonne | Quoi |
|---|---|
| Pair | L'IP:port de l'expéditeur ; son point indique s'il a été entendu dans les 3 dernières secondes |
| Proto | osc quand son dernier datagramme s'est décodé en OSC, sinon udp |
| Paquets | Combien il en a envoyé |
| Âge | Secondes depuis son dernier datagramme |
| Dernier message | Son 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.
| Champ | Quoi | Par défaut |
|---|---|---|
| Charge utile | La réponse : OSC, texte ou hex, comme pour l'envoi | OSC /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 lent | 0 |
| Seulement s’il contient | Répondre seulement aux datagrammes dont le texte décodé contient ceci — l'adresse et les arguments OSC, ou le début du texte ; vide — à tous | vide |
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 :
| Source | Quoi | Combien |
|---|---|---|
broadcast | Envoyer une fois : chaque datagramme, avec le verdict fan-out, broadcast, multicast ou sweep ; un échec avec error: … | chacun |
beacon | Les tournées d'une balise | au plus une tournée toutes les 50 ms |
discovery | Les datagrammes que reçoit l'écouteur | au plus un toutes les 40 ms |
discovery | Ses réponses, avec le verdict auto-reply | chacune |
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 udpenvoie 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 voyez | Cause habituelle |
|---|---|
… is not a broadcast address | Broadcast 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 group | L'adresse est hors de 224.0.0.0–239.255.255.255. |
… spans … addresses, and a sweep reaches at most 1024 hosts | Le bloc est plus large qu'un /22 ; réduisez-le. |
Set the port to sweep | Port vaut 0. |
… is over the … pps limit | Le 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 it | Un 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épond | Les 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éponse | Beaucoup 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.