[FoLUG] Scambio di informazioni su due PC collegati ad internetcon lo stesso indirizzo IP Privato(192.168.0.100 con due router.

Ivan i.f-ml00@darthxiong.net
Gio 25 Nov 2004 14:36:27 CET


On Thursday 25 November 2004 13:51, Riccardo Pretolesi - Ufficio Tecnico 
Elettrico wrote:
> Quindi se ho capito bene, se io ho con il mio PC sono attaccato ad un
> router che ha l'indirizzo 192.168.0.1 il quale e' collegato ad
> internet sull'indirizzo pubblico (che chiedero' all'amministratore di
> rete) xxx.xxx.xxx.xxx, io devo mettermi in ascolto sull'indirizzo
> xxx.xxx.xxx.xxx, pero' lanciando l'applicazione nel mio computer che
> ha l'indirizzo privato 192.168.0.100.(firewall permettendo).
allora, io uso il c e non so quale sia la chiamata di sistema per aprire 
una connessione tcp col c++, ma di solito la sequenza e': ( lato 
server )

1) crea socket ( s = socket(AF_INET,SOCK_STREAM, 0)  ( SOCK_DGRAM per 
connessione udp )
2) bind su un indirizzo ( r = bind(s, (struct sockaddr_in 
*)&serv_addr ) )
3) si ascolta il socket ( listen( s, backlog ) )  (tcp)
4) si accettano le connessioni ( ns = accept(args...)) )

ora il punto su cui hai dubbi e' 2) . il binding non si fa sugli 
indirizzi dai quali ti aspetti di essere contattato, ma su quello/i 
della macchina locale, ossia il loopback, una delle eth, un ppp, o 
tutte (INADDR_ANY). la discriminazione dell' ip di chi ti contatta lo 
fai fare ad un firewall, ai tcpwrapper, al server _dopo_ che in socket 
e' stato creato, e precisamente dopo punto 4), quando la chiamata 
accept ti carica la sockaddr_in.sin_addr.s_addr con l' ip del 
chiamante: se l' ip non ti gusta, fai lo shutdown del socket, 
altrimenti read e write sul socket medesimo. 

attenzione inoltre che tu sul sockaddr_in.sin_addr.s_addr avrai l' ip 
pubblico del fw, e quindi non puoi sapere se a contattarti dalla rete 
remota sia stato il .100 o il .101 o .102

<NON LEGGERE>
il binding della porta fallo solo sul server.
</NON LEGGERE>

> Quindi quando ricevo una richiesta su tale indirizzo, sulla porta da
> me assegnata, posso verificare che l'indirizzo remoto sia quello che
> mi aspetto.
vedi solo l' ip pubblico del fw del client

ma questa app, e' un pezzo client e un pezzo server, o ogni pezzo fa da 
entrambi ? pura curiosita', non e' che dei concetti su esposti ti cambi 
un gran che 

-- 
  (@_ Ivan Fabris, S. Sofia (FC,it) PowerPC e Debian GNU/linux SID _*)
  //\         www.folug.org    pgp key @ www.keyserver.net         /\\
  V_/_  Socio Fondatore e presidente del Forli' Linux User Group  _\_V



Maggiori informazioni sulla lista FoLUG