Domanda
In primo luogo, sono nuovo alle specifiche di IPv6, quindi non sarei sorpreso se questa è solo una comprensione errata del routing IPv6. Considera la situazione in cui gestisco una rete overlay P2P, parte della quale vive entro i limiti di una singola LAN. I nodi all'interno di questa LAN hanno i seguenti indirizzi locali di collegamento (visti da soli):
- Peer 1 fe80 :: 225: 4bff: fea8: e200% en0
- Peer 2 fe80 :: 225: 4bff: fea8: e201% eth1
- Peer 3 fe80 :: 225: 4bff: fea8: e202% en1
Ora, supponi che ogni peer sia stato in grado di scoprire gli altri in qualche modo e di avere gli indirizzi gli uni per gli altri. Ogni peer è in ascolto su una porta, ad esempio 12345. Se il peer 1 voleva parlare con il peer 2, potrebbe provare a utilizzare l'URI:
tcp: // [fe80: 225: 4bff: fea8: E201% eth1]: 12345
Questo è dove incontro problemi. Il peer 1 non ha un adattatore chiamato "eth1", quindi questo identificatore di zona IPv6 non gli è noto. Se l'ID zona viene rimosso dall'indirizzo, il peer 1 non può determinare quale dei suoi adattatori deve utilizzare per contattare l'host.
Quindi, la domanda: è possibile risolvere l'identificatore di zona per un indirizzo IPv6 in modo standard? In caso contrario, devo eseguire una query sul sistema per tutti gli identificatori di zona e provare a collegarmi all'indirizzo utilizzando ciascun identificatore di zona a turno fino a quando non avrò successo? O tentare di comunicare utilizzando gli indirizzi link-local in primo luogo è un'idea stupida?
Soluzione
Collega indirizzi locali sono appropriati solo quando hai un meccanismo per individuare automaticamente l'altro nodo in questione e connettersi, vincolando all'interfaccia corretta.
Se si prevede che l'utente inserisca manualmente gli indirizzi, è necessario utilizzare il sito indirizzi locali (o meglio, Indirizzi locali unici ) e hanno l'utente li configura da solo o ha un metodo di risoluzione degli indirizzi in cima agli indirizzi link-local, come mDNS.