# Format des PDU Ethernet et IEEE 802.3/IS 8802-3

## Format général

Toutes les PDU transmises sur un câble Ethernet ont le format suivant, que ce soient des PDU-Ethernet ou des PDU-802.3 :

> `synchro` | `destination` (6) | `source` (6) | `type/lg` (2) | `données` (<1500) | `bourrage` (<46) | `contrôle` (4)

Les champs `destination` et `source` contiennent une adresse MAC de 48 bits (6 octets).
Chaque équipement est doté d'une carte Ethernet, dans laquelle est gravée son adresse individuelle.
Les 3 premiers octets d'une adresse individuelle identifient le fabricant de la carte Ethernet par son OUI (Organizationally Unique Identifier) (liste des OUI).
Une adresse de groupe est identifiée dans la liste des groupes de la RFC-1700.

Le champ `données` contient une PDU d'un protocole de couche supérieure.
Dans une PDU-Ethernet-II, la couche supérieure est identifiée par le code contenu dans le champ `type`

Le `bourrage` est nécessaire pour que les "petites" PDU atteignent la longueur minimum.
La longueur totale des champs `données` et `bourrage` est comprise entre 46 et 1500 octets.

Le champ `type/lg` dépend de la PDU (Ethernet II ou IEEE 802.3/IS 8802-3).

## Ethernet II

Ce protocole a été élaboré avant que l'OSI n'intègre les réseaux locaux; les piles bâties sur cette couche n'ont pas de couche LLC.
La valeur du champ `type` indique à quel protocole appartient la PDU contenue dans le champ `donnée` (liste des valeurs du champ `type`).

## IEEE 802.3/IS 8802-3

Ce protocole suppose que la couche supérieure est la couche LLC, spécifiée par l'IEEE dans la norme 802.2.
Le champ `type/lg` contient la longueur de la PDU. Sa valeur est comprise entre 1 et 1500 (5dc16)
Le champ `données` contient une PDU-802.2 qui a le format suivant :

> `DSAP (1)` | `SSAP (1)` | `U (1)` | `OUI (3)` | `donnée`

`DSAP` et `SSAP` sont les adresses (7 bits) des SAP de la couche LLC (802.2).
`U` est le champ commande/réponse.
La valeur du champ `OUI` (Organisation Unique Identifier) indique à quel protocole appartient la PDU transportée dans le champ `donnée` (liste des OUI).

## IEEE 802.3/802.2 extension SNAP (Sub-Network Access Protocol)

Le plan d'adressage de la couche IEEE 802.2 étant trop limité (7 bits pour les SAP), l'IEEE a normalisé l'extension SNAP. Les PDU-802.2 ont le format suivant :

> `AA` | `AA` | `03` | `OUI (3)` | selon OUI (n) | `donnée`
> `000000 (3)` | `etype (2)` | `donnée`

La valeur du champ `etype` indique à quel protocole appartient la PDU transportée dans le champ donnée.
Les valeurs du champ `etype` dépendent de l'organisation désignée par le champ `OUI`.
Dans le cas où `OUI=0`, les valeurs sont les mêmes que pour le champ `type` du protocole Ethernet II (liste de valeurs du champ `type` des PDU-Ethernet-II).

## Ethernet-Novell

Lorsque Novell a spécifié son protocole IPX, IEEE 802.3 existait, mais pas IEEE 802.2.

La PDU IEEE 802.3 contient une PDU-IPX dans son champ `donnée` (au lieu des `DSAP` et `SSAP`).
Pour éviter les problèmes lorsque sur un câble doivent coexister des PDU-IEEE 802.3 contenant des PDU-IEEE 802.2 et des PDU-IEEE 802.3 contenant des PDU-IPX, le 1er champ de la PDU-IPX (normalement un code de contrôle) est forcé à la valeur `FFFF`.

# Exemple d'interprétation de PDU-MAC

Note : tous les octets sont notés par 2 chiffres en base 16
Note : les champs `synchro`, `bourrage` et `contrôle` ne sont pas donnés

Soit la PDU-MAC suivante :

`0800 2078 203b 0000 0c04 860c 0800 4500 0028 5b24 0000 3b06 e231 c136 3301 c036 8e0c 03ff 0201 4d20 2492 8e88 05a1 5010 81d0 dfad 0000 0000 0000 0000`

champ | octets |  |
--- | --- | --- | ---
adresse destination | `08002078203b` | adresse individuelle | fabricant : SUN
adresse source | `00000c04860c` | adresse individuelle | fabricant : Cisco
type / longueur | `0800` | ce nombre est supérieur à `05dc16`, c'est donc une PDU-Ethernet II | le code `0800` indique que le champ donnée contient une PDU-IP
donnée | `45000028...` | la PDU-IP |