[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