2. Qu'est ce que le mécanisme STUN = Simple Traversal of UDP through NATs ?
Le système SNAT (Source NAT = modifie les adresses "source" d'un dialogue, c'est à dire l'adresse d'extrémité locale) fonctionne en créant automatiquement des associations quand il voit un dialogue qui commence; un 5-uplet TCP, UDP (ou autre) est :
(protocole, ip-source, ip-destination, port-source, port-destination)
donc le système SNAT crée des associations
(protocole, ip-privée-source, ip-destination, port-privé-source, port-destination)
<->
(protocole, ip-publique-source, ip-destination, port-public-source, port-destination)
En détail, c'est bien plus complexe puisqu'il faut une gestion des états de la connexion (en TCP) et un système d'expiration (= time-out).
La plupart du temps : port-public-source = ip-privée-source (mais pas toujours!)
En UDP on peut relâcher cette contrainte et avoir des associations :
(UDP, ip-privée-source, *, port-privé-source, *) <-> (UDP, ip-publique-source, *, port-public-source, *)
puisque UDP est un protocole non connecté et qu'une socket liée à une adresse UDP locale (ip, port) peut recevoir et envoyer de plusieurs adresses UDP distantes différentes.
Il s'agit tout simplement de créer (et maintenir) une telle association sur un système SNAT en èmettant un paquet UDP sortant (et en réèmettant afin que l'association n'expire pas).
Pourquoi est ce faisable en TR-069 alors que ce n'est pas permis en SNMP ?
STUN n'a aucun rapport avec TR-069. Je ne comprends pas la question.
le U de STUN pour UDP, pourquoi UDP dans ce cas ? pas TCP par exemple ?
Comme j'ai dit :
En UDP on peut relâcher cette contrainte et avoir des associations :
(UDP, ip-privée-source, *, port-privé-source, *) <-> (UDP, ip-publique-source, *, port-public-source, *)
puisque UDP est un protocole non connecté et qu'une socket liée à une adresse UDP locale (ip, port) peut recevoir et envoyer de plusieurs adresses UDP distantes différentes.
TCP est un protocole connecté : une connexion TCP est définie par le 4-uplet :
ip-source, ip-destination, port-source, port-destination
Changer un seul paramètre donne une autre connexion TCP.
Malgré une ressemblance très superficielle entre TCP et UDP (les adresses d'extrémités sont définies par ip:port dans les deux), les deux protocoles sont complètement différents; ils ne sont même pas comparables, parce qu'ils ne servent pas à la même chose.