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:

  1. 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
  2. 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
  3. adottare metodi automatici di configurazione remota del firewall, come UPnP o NAT-PMP
  4. 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: