Une description détaillée de la structure des types d'adresse suivants est fournie ci-après :
oAdresses absolues et relatives
Les adresses réseau correspondent au mappage des adresses d'un type de réseau (par exemple, adresses IP) sur des adresses logiques au sein d'un réseau de contrôle. Le pilote de bloc approprié gère ce mappage. Sur un réseau Ethernet comportant des adresses IP de classe C, les trois premiers octets de l'adresse IP sont identiques pour tous les équipements du réseau. Les huit derniers bits de l'adresse IP sont donc suffisants pour l'adresse réseau, car ils permettent le mappage sans ambiguïté entre deux adresses au niveau du pilote de bloc.
Un nœud dispose d'adresses réseau distinctes pour chaque connexion réseau. Des connexions réseau différentes peuvent utiliser la même adresse réseau, cette dernière n'ayant pour obligation d'être unique que localement pour chaque connexion réseau.
Terminologie : de façon générale, l'adresse réseau d'un nœud sans instruction de connexion réseau fait référence à l'adresse réseau sur le réseau principal.
La longueur d'une adresse réseau est exprimée en bits et choisie par le pilote de bloc en fonction des besoins. Dans un segment du réseau, la même longueur doit être utilisée pour tous les nœuds.
Une adresse réseau est représentée sous forme de tableau d'octets avec le codage suivant :
oLongueur de l'adresse réseau : n bits
oOctets obligatoires : b = (n + 7) DIV 8
oLes bits de poids faible (n MOD 8) du premier octet et tous les octets restants (n DIV 8) sont utilisés pour l'adresse réseau.
Longueur : 11 bits
Adresse : 111 1000 1100
Exemple de codage d'adresse réseau
L'adresse de nœud indique l'adresse absolue d'un nœud au sein d'un réseau de contrôle. Elle est par conséquent unique dans l'arborescence. Elle peut compter jusqu'à 15 composants d'adresse composés chacun de deux octets. Plus le nœud est bas dans la hiérarchie du réseau, plus son adresse est longue.
L'adresse du nœud contient les adresses partielles de tous les nœuds qui le précèdent ainsi que la sienne. Chaque adresse partielle contient un ou plusieurs composants d'adresse. La longueur est donc toujours un multiple de deux. L'adresse partielle d'un nœud comporte l'adresse réseau du nœud dans le réseau principal et l'index de sous-réseau de ce dernier dans le nœud parent. Les bits requis pour l'index de sous-réseau sont déterminés par le routeur du nœud parent. Des bits de remplissage sont insérés entre l'index de sous-réseau et l'adresse réseau pour que la longueur de l'adresse partielle soit un multiple de deux octets.
Cas particuliers :
oNœud sans réseau principal : cela signifie que le réseau principal ne contient ni index de sous-réseau ni adresse réseau. Dans ce cas, l'adresse correspond à 0x0000.
oNœud avec un réseau principal mais sans parent : dans ce cas, un index de sous-réseau de zéro bit de long est défini. L'adresse partielle correspond à l'adresse réseau, suivie si nécessaire de bits de remplissage.
Exemple - adresse de nœud
L'adresse de nœud est toujours représentée au format hexadécimal. Les composants individuels de l'adresse (deux octets dans chaque cas) sont séparés par un deux-points (:). Les octets d'un composant s'affichent de façon séquentielle sans séparateur (voir l'exemple ci-dessus). Cela représentant un tableau d'octets et non une valeur de 16 bits, les composants ne sont pas affichés selon le format little-endian. Les adresses saisies manuellement dont l'un des composants d'adresse est incomplet sont complétées avec des zéros non significatifs en partant de la gauche : 274 = 0274. Pour améliorer la lisibilité, la sortie doit toujours inclure les zéros non significatifs.
Adresses absolues et relatives
La communication entre deux nœuds peut reposer sur des adresses relatives ou absolues. Les adresses absolues sont identiques aux adresses de nœud. Les adresses relatives indiquent un chemin entre l'expéditeur et le destinataire. Elles contiennent une adresse avec offset et un chemin descendant vers le destinataire.
L'offset (négatif) de l'adresse décrit le nombre de composants de l'adresse que doit passer un paquet pour remonter dans l'arborescence avant de pouvoir procéder à l'envoi descendant à partir d'un parent commun. Les nœuds pouvant utiliser des adresses partielles contenant plusieurs composants d'adresse, le nombre de nœuds parents à passer est toujours égal à l'offset de l'adresse. Ainsi, toute ambiguïté relative à la démarcation entre les nœuds parents est levée. C'est pourquoi la partie initiale commune des adresses des partenaires de communication tient lieu d'adresse parent. Chaque composant d'adresse est comptabilisé comme une étape ascendante dans l'arborescence, indépendamment des véritables nœuds parents. Le nœud parent correspondant détecte les éventuelles erreurs engendrées par ces suppositions qui doivent être traitées comme il convient par le nœud.
Lorsqu'il arrive au niveau du parent commun, le chemin relatif (tableau des composants d'adresse) suit son cours vers le bas selon la procédure normale.
Formation : l'adresse de nœud du destinataire est formée en supprimant les derniers composants d'offset de l'adresse de nœud de l'expéditeur et en ajoutant le chemin relatif à l'adresse restante.
Dans l'exemple, une lettre représente un composant d'adresse et un point sépare les différents nœuds. Un nœud pouvant disposer de plusieurs composants d'adresse, plusieurs lettres sont autorisées dans l'exemple.
Nœud A : a.bc.d.ef.g
Nœud B : a.bc.i.j.kl.m
oAdresse du parent commun le plus bas : a.bc
oAdresse relative de A à B : -4/i.j.kl.m (le nombre -4 provient des quatre composants d, e, f et g. Le paquet doit donc monter).
L'adresse relative doit être ajustée à chaque passage au niveau d'un nœud intermédiaire. Il suffit d'ajuster l'offset de l'adresse. C'est toujours le nœud parent qui effectue cette opération : si un nœud reçoit un paquet de l'un de ses sous-réseaux, l'offset de l'adresse est augmenté de la longueur du composant d'adresse du sous-réseau.
oSi le nouvel offset de l'adresse est < 0, le paquet doit être acheminé jusqu'au nœud parent.
oSi l'offset de l'adresse est 1 ≥ 0, le paquet doit être acheminé jusqu'au nœud enfant dont l'adresse locale réside à la position décrite par l'offset dans l'adresse relative. Dans un premier temps, l'offset de l'adresse doit être augmenté de la longueur de l'adresse locale du nœud enfant pour s'assurer que le nœud perçoit une adresse correcte.
Une situation spécifique se produit lorsque l'erreur décrite plus haut survient lors de la détermination du parent commun. Dans ce cas, l'offset de l'adresse au niveau du parent commun « réel » est négatif, mais la magnitude est supérieure à la longueur de l'adresse partielle du sous-réseau d'où provient le paquet. Le nœud doit le détecter, calculer l'adresse locale du nœud enfant suivant à partir de l'adresse du nœud précédent et la différence de longueur, puis adapter le décalage de l'adresse pour que le nœud suivant voie une adresse relative correcte. De plus, seul l'offset de l'adresse est modifié, les composants de l'adresse eux-mêmes ne le sont pas.
Il existe deux types de diffusion : globale et locale. Une diffusion globale est envoyée à tous les nœuds d'un réseau de contrôle. L'adresse de nœud vide (longueur nulle) est réservée à cette fin.
Les diffusions locales sont envoyées à tous les équipements d'un segment de réseau. Pour cela, tous les bits de l'adresse réseau sont réglés sur 1. Ceci est possible tant dans les adresses relatives que dans les adresses absolues.
Un pilote de bloc doit être en mesure de traiter les deux types d'adresse de diffusion, c'est-à-dire que les adresses réseau vides et les adresses réseau dont tous les bits sont réglés sur 1 doivent être interprétées et envoyées en tant que diffusion.