Newsgroup: it.comp.programmare.win32
Titolo: Spedire un messaggio sulla rete

E' possibile inviare da un PC in rete un pacchetto di dati senza specificare
un IP di destinazione e di conseguenza intercettare questo pacchetto da un
altro PC predisposto a riconoscere questo pacchetto di dati?
Il tutto appunto senza che i due PC conoscano i rispettivi IP.
Grazie a tutti.

: 

Utilizzando la funzione sendto è possibile inviare un pacchetto in 
broadcast. Tieni però presente che questi pacchetti sono generalmente 
limitati a una rete locale (o sottorete) e quindi non possono essere 
utilizzati per la comunicazione all'interno di WAN o su internet.
Se devi mettere in connessione tra loro due PC che non conoscono i 
rispettivi IP devi prendere in considerazione l'ipotesi di passare per un 
server (con indirizzo fisso) che faccia da "ponte" tra chi produce i dati e 
chi dovrà riceverli.
-- 
Valter Minute
min...@inwind.it
 (the reply address of this message is invalid)


No. puoi spoofare lIP del mittente (ma cosi' ti perdi le risposte), ma
devi mettere un destinatario. Al limite puoi mettere un destinatario
nella stessa sottorete della tua macchina target e mettere su
quest'ultima  l'interfaccia di rete in modo promiscuo per filtrarti
tutti i pacchetti.
una sola domanda: ma tutto cio' a che pro ?
g0

> una sola domanda: ma tutto cio' a che pro ?
Ho realizzato un servizio per NT da installare sui PC client che apre una
porta per ricevere e rispedire dai PC server un particolare pacchetto di
dati. Mi chiedevo se era possibile scrivere il client in modo che fosse lui
a mandare un messaggio di broadcast su tutta la rete (locale) per segnalare
ad eventuali server in ascolto la propria presenza e disponibilità a
ricevere questo pacchetto di dati. Attualmente tutto il discorso funziona
già con il server che sonda tutte le macchine collegate in rete a caccia di
client attivi.
Diciamo che la mia era più una curiosità che una necessità.

 broadcast.
Grazie Valter,
INADDR_BROADCAST l'ho avuto sotto gli occhi e sono riuscito a non vederlo.

> Diciamo che la mia era più una curiosità che una necessità.
Cerco di soddisfare la tua curiosità...
Il protocollo IP lavora Hop-by-Hop (Salto per Salto), ovvero trasmette dei
dati dal dispositivo A a quello B
all'interno di una rete locale, una macchina che deve spedire un pacchetto
IP ad un'altra, della quale conosce l'IP, se non conosce ancora l'indirizzo
MAC del destinatario usa il protocollo ARP (Address Resolution Protocol).
il pacchetto ARP viene mandato in broadcast in tutta la LAN, la macchina che
possiede l'IP di destinazione risponde comunicando il proprio indirizzo MAC.
Se nella LAN non è presente una macchina con l'IP di destinazione, il
mittente invia il pacchetto IP al Router, il quale lo inoltra nelle sue
linee d'uscita.
Morale: L'IP di destinazione deve sempre essere specificato.
Se non ricordo male, a partire da IPv6 dovrebbe essere disponibile un
indirizzo IP per il multicasting ed uno per il broadcasting, SEMPRE
all'interno della sottorete, però.
Se esistesse un modo per spedire pacchetti IP a tutti i dispositivi OnLine,
la rete sarebbe sempre più intasata a causa di qualche pirata psicopatico...
Ma scusa, se hai una rete client-server, visto che il server è uno solo (o
sono comunque pochi), perchè non fai spedire i pacchetti dai client al (ai)
server? I server potrebbero avere un indirizzo fisso.
La soluzione del server che fa  da ponte è comunque un ottima idea, se
disponi di un DNS, non ne devi nemmeno conoscere l'IP...
Ciao, Davide.

 server? I server potrebbero avere un indirizzo fisso.
Purtroppo anche i server possono cambiare. Comunque visto che cambiano
sicuramente con una freqenza inferiore ai client posso limitarmi a fare
questa ricerca dei server una volta quando viene avviato il servizio e poi
ad intervallo di tempo molto lunghi (anche un'ora).
Grazie per la tua disponibilità.

 writes:
DP> Morale: L'IP di destinazione deve sempre essere specificato.
DP> Se non ricordo male, a partire da IPv6 dovrebbe essere disponibile un
DP> indirizzo IP per il multicasting ed uno per il broadcasting, SEMPRE
DP> all'interno della sottorete, però.
Se non  ricordo male il Comer, ci  sono due indirizzi in  una rete che
non possono essere usati, quello con  tutti i bit della parte host a 0
(indirizzo della rete)  e quello con tutti i bit della  parte host a 1
(indirizzo di broadcast)
La parte  host di un  network address, è  per chi non  lo rammentasse,
quella che  rimane 'scoperta'  dalla netmask, ovvero  se la  netmask è
255.255.255.0 allora la parte host è costituita dall'ultimo ottetto.
Per cui se  hai la rete (ad esempio)  10.0.0.0 e netmask 255.255.255.0
allora l'indirizzo di broadcast è 10.0.0.255.
Alcune implementazioni del comando  ping (i.e. quella di Linux) quando
vengono  usate  con l'indirizzo  di  broadcast  visualizzano tutte  le
risposte che  ricevono dai  vari host. Usare  il broadcast  è comunque
sconsigliabile perché va a togliere tempo macchina anche agli host non
interessati, quindi  mi associo a  chi ti consiglia  di far si  che le
macchine client vadano a cercare i server su IP noti.
+----------------------------------------------------------------+
| Gian Uberto Lauri * "So, are you working on fixing that bug    |
| 
sa...@eng.it
      *  *now* or leaving it until later ?" - YES  |
+----------------------------------------------------------------+
| Attenzione: rispondo ad ogni invio di pubblicità non richiesta | 
| o spam di qualsiasi altro genere con un messaggio al provider  |
| di competenza. Ai sensi della legge sulla privacy NON avete il |
| permesso di utilizzare i miei dati per questi scopi.           |
+----------------------------------------------------------------+