AttraversamentoNATPerPeerToPeer
C'era una volta Internet con i suoi indirizzi IP pubblici, che diversi ISP ancora assegnano, ma i computer che si collegano al router ADSL si ritrovano a dover lavorare con IP Privato, mentre il router deve svolgere funzioni di NAT. La conseguenza è che ogni volta che vogliamo usare un programma che ha l'esigenza di essere contattato dall'esterno (come ad esempio i programmi di condivisione peer to peer) occore riconfigurare il router, indicando le porte da redirigere verso il nostro computer.
Ora questo può anche funzionare, ma senza dubbio è un noia e un fastidio, e poi molti non hanno proprio idea di cosa dovrebbero fare, e per paura di sbagliare, rinunciano. Ora, ci sono delle alternative possibili:
- lavorare su di un computer direttamente collegato all'IP pubblico, come nel caso di un computer con un router interno, oppure di un mediacenter che contiene anche il router
- triangolare le connessioni facendole passare da un terzo computer, questo dotato di IP pubblico, e verso il quale i client nattati aprono delle connessioni, come fa ad esempio RTPProxy per il VoIP
- adottare metodi automatici di configurazione remota del firewall, come UPnP o NAT-PMP
- Adottare tecniche di Hole Punching (leggere l'articolo). Lo fa anche skype!
Poi ci sono quelli dell'IETF, che propongono tecniche di attraversamento NAT come STUN, TURN e ICE...
Si, ma la tesi qual'è? Beh, diciamo che sarebbe interessante applicare una di queste tecniche ad una applicazione peer to peer per l'Internet TV ! Facciamo il caso di sviluppare in Python, e raccogliamo qualche link da approfondire: