Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-11-2008, 11:54   #1
alifangelo
Member
 
Iscritto dal: Sep 2005
Città: pisa
Messaggi: 148
[C] socket :questi sconosciuti

Ciao a tutti,
dovrei realizzare un bilanciatore di carico nel seguente modo:
Ho un Master server (chiamiamolo M) il quale è in comunicazione (tramite socket) ad N server (chiamiamoli S ). Uno o piu client (chiamiamoli C) fanno una richiesta ad M il quale inoltrerà tale richiesta al S che sta servendo meno richieste. La mia domanda è come posso implementare questa cosa ?
Io avevo pensato ad una cosa tipo questa: <----> questo simbolo è un socket

C <----> M <----> S , C fa una richiesta a M, M la inoltra ad S, S elabora la richiesta e risponde ad M il quale la risponde a C.

Esiste un modo per far comunicare direttamente S con C senza ripassare da M ?

Cioè si puo fare una cosa tipo questa :
C<----> M<---->S<----> C C fa una richiesta a M, M la inoltra ad S, S elabora la richiesta e risponde a C.

In pratica S si può agganciare sul socket tra C e M e rispondere a C ?
Non so se la domanda è chiara, spero di si.
__________________
Trattative concluse positivamente con:
Gomax,topolino2808,clickhere
alifangelo è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2008, 18:58   #2
alifangelo
Member
 
Iscritto dal: Sep 2005
Città: pisa
Messaggi: 148
Mi rispondo da solo sperando che le mie ore passate a risolvere il dilemma possano aiutare qualcuno:

La risposta è si usando il protocollo UDP. In pratica il Master invia al Server l' IP e la porta del client.
Con TCP non penso si possa fare(per via del 3-way-handshake).

Se qualcuno ci riesce me lo faccia sapere
__________________
Trattative concluse positivamente con:
Gomax,topolino2808,clickhere
alifangelo è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2008, 19:37   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Su stream sbilanciati ovvero dove richieste piccole seguono a risposte molto grandi e computazionalmente impegnative si può optare comunque per lasciare M nel mezzo fra le due connessioni
Il load balancing dei server HTTP (anche di questo sito) funziona così.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2008, 19:49   #4
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Ciao.

Questo tuo quesito mi ha affascinato subito e mi ha anche dato dei bei grattacapi.

Siccome ritengo (nel tuo caso) il protocollo tcp essenziale, ti propongo una soluzione per aggirare il problema: fare una sorta di pre-richiesta al master server (M). Intendo dire:

il client (C) si connette a M per sapere a quale server (S) si può rivolgere. Risultato della richiesta è la coppia ip/porta del server libero.
Da qui in poi parte la connessione vera e propria.

Ora però, fantasticando un pò sulla questione che hai posto, mi viene in mente la tecnica del MITM. Dove voglio andare a parare? Con quella tecnica in sostanza si dirottano (illegalmente?!?) connessioni di rete già avvenute verso un terzo end-point. Quindi chissà che non sia possibile "dirottare" la connessione da M ad un S una volta trovato.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2008, 23:39   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
MITM = Man In The Middle ???
Il Man In The Middle ha principalmente tre possibilità di lavorare sul traffico:
- impersonificando il server
- intercettando il traffico (i pacchetti gli passano davanti)
- soppressione del traffico (i pacchetti gli passano davanti)
- duplicazione del traffico
- come nel caso sopra (caso più generale dell'impersonificazione): C <-> M <-> S

Non mi risulta che col TCP si possano fare altri magheggi, anche perché il problema principale è che ogni connessione ha un sequence number diverso.

Oceans11: il discorso che hai fatto nella prima parte è corretto, ma implica una modifica del protocollo e quindi non è trasparente all'utente.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2008, 09:26   #6
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Quote:
Originariamente inviato da cionci Guarda i messaggi
MITM = Man In The Middle ???
Il Man In The Middle ha principalmente tre possibilità di lavorare sul traffico:
- impersonificando il server
- intercettando il traffico (i pacchetti gli passano davanti)
- soppressione del traffico (i pacchetti gli passano davanti)
- duplicazione del traffico
- come nel caso sopra (caso più generale dell'impersonificazione): C <-> M <-> S

Non mi risulta che col TCP si possano fare altri magheggi, anche perché il problema principale è che ogni connessione ha un sequence number diverso.
per i casi che contemplano il passaggio dei pacchetti davanti all'attaccante, sono d'accordo, dovevo specificare meglio nel post precendente. Ho scritto "connessioni di rete" senza mettere in luce per bene questo fatto che è chiave. Però non ho capito perchè non è corretto un discorso del genere.
Cerco di spiegarmi un pò meglio: n
essuno deve fare un attacco man in the middle, ma dico che se un attacco man in the middle può "sganciare un endpoint e attaccarlo ad un altro computer" rimanendo trasparente al secondo endpoint, ci sarà un modo per cui il master server riesce a "trasferire" la socket che tiene aperta con un client verso un server???

ps: magari già mi hai risposto e smentito, ma giuro che non ho capito!
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2008, 09:51   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Sei sicuro che un Man In the Middle possa "sganciare" un endpoint ed attaccarlo da un'altra parte a connessione già iniziata ?
Ad alto livello è praticamente impossibile farlo perché ci sono aspetti relativi al sequence number che sono impredicibili.
A basso livello sarebbe anche possibile (il NAT lo fa ad esempio), ma la decisione su dove instradare i pacchetti andrebbe presa subito al primo pacchetto di SYN, prendendola dopo anche qui bisognerebbe "indovinare" il sequence number che il server assegnerebbe alla connessione e M dovrà continuare ad instradare i pacchetti che gli arrivano da C verso S (dopo tutto si tratta di un routing). Quindi di fatto M è sempre in mezzo fra C e S, almeno per i pacchetti che da C vanno a S, per quelli nel verso opposto no perché S può rispondere direttamente a C.
Di fatto M non si potrà mai "staccare" completamente dalla connessione fino a quando essa non sarà terminata.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2008, 11:56   #8
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Quote:
Originariamente inviato da cionci Guarda i messaggi
Sei sicuro che un Man In the Middle possa "sganciare" un endpoint ed attaccarlo da un'altra parte a connessione già iniziata ?
Ad alto livello è praticamente impossibile farlo perché ci sono aspetti relativi al sequence number che sono impredicibili.
A basso livello sarebbe anche possibile (il NAT lo fa ad esempio), ma la decisione su dove instradare i pacchetti andrebbe presa subito al primo pacchetto di SYN, prendendola dopo anche qui bisognerebbe "indovinare" il sequence number che il server assegnerebbe alla connessione e M dovrà continuare ad instradare i pacchetti che gli arrivano da C verso S (dopo tutto si tratta di un routing). Quindi di fatto M è sempre in mezzo fra C e S, almeno per i pacchetti che da C vanno a S, per quelli nel verso opposto no perché S può rispondere direttamente a C.
Di fatto M non si potrà mai "staccare" completamente dalla connessione fino a quando essa non sarà terminata.
Evidentemente mi sfugge più di una cosa per quanto riguarda il MITM allora.... grazie per la risposta...appena posso approfondisco e nel caso vengo a chiedere.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2008, 16:42   #9
alifangelo
Member
 
Iscritto dal: Sep 2005
Città: pisa
Messaggi: 148
Quote:
Ciao.

Questo tuo quesito mi ha affascinato subito e mi ha anche dato dei bei grattacapi.

Siccome ritengo (nel tuo caso) il protocollo tcp essenziale, ti propongo una soluzione per aggirare il problema: fare una sorta di pre-richiesta al master server (M). Intendo dire:

il client (C) si connette a M per sapere a quale server (S) si può rivolgere. Risultato della richiesta è la coppia ip/porta del server libero.
Da qui in poi parte la connessione vera e propria.
Ci avevo pensato ma come ha già detto cionci questo significa cambiare il codice del client (l'operazione non è più trasparente).
per quanto riguarda la sicurezza si potrebbe cifrare il tutto con la chiave pubblica/privata e risolvere i problemi del man in the middle.

Quote:
Su stream sbilanciati ovvero dove richieste piccole seguono a risposte molto grandi e computazionalmente impegnative si può optare comunque per lasciare M nel mezzo fra le due connessioni
Sono daccordo sul fatto che in caso di risposte computazionalmente impegnative si possa lasciare M nel mezzo, ma se la risposta è grande in termini di byte non sarebbe meglio non ripassare da M ?

Il problema che risollevo è :Si puo fare quello che ho fatto in UDP con TCP ?
__________________
Trattative concluse positivamente con:
Gomax,topolino2808,clickhere

Ultima modifica di alifangelo : 05-12-2008 alle 16:48.
alifangelo è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2008, 18:05   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da alifangelo Guarda i messaggi
Sono daccordo sul fatto che in caso di risposte computazionalmente impegnative si possa lasciare M nel mezzo, ma se la risposta è grande in termini di byte non sarebbe meglio non ripassare da M ?
Si lascia comunque M nel mezzo. Tra l'altro lasciare M nel mezzo è anche una cosa molto furba perché si può fare caching e questo migliora notevolmente vari aspetti:
- in caso di client lento il server non deve aspettare il client, ma scarica su M tutto lo stream e sarà pronto a servire un'altra richiesta, senza contare che la rete fra M e S può essere incredibilmente più veloce (Gigabit Ethernet) di quella tra S e C (ad esempio il collo di bottiglia potrebbe essere un'adsl)
- le richieste già fatte posso essere esaudite direttamente da M senza dover essere rielaborate
- sicurezza: i client vedono solo M e non possono attaccare S
Quote:
Originariamente inviato da alifangelo Guarda i messaggi
Il problema che risollevo è :Si puo fare quello che ho fatto in UDP con TCP ?
In teoria sì, in pratica no. Proprio per i motivi che ho scritto sopra, inoltre per far passare in un certo momento la connessione direttamente da S e C, M dovrebbe andare a cambiare la tabella di routing, insomma, una cosa colossale.
Quello che limita questa possibilità sono appunto le decine di variabili di stato relative ad un connessione TCP: sequence number, pacchetti ricevuti, ack cumulativi, finestre, insomma sarebbe un bel casotto replicare tutto dall'altra parte ed anche se ci riesco il client gli ACK li invia comunque a M

Ultima modifica di cionci : 06-12-2008 alle 12:09. Motivo: avevo scritto HTTP al posto di TCP
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 06-12-2008, 12:02   #11
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da cionci Guarda i messaggi
Si lascia comunque M nel mezzo. Tra l'altro lasciare M nel mezzo è anche una cosa molto furba perché si può fare caching e questo migliora notevolmente vari aspetti:
- in caso di client lento il server non deve aspettare il client, ma scarica su M tutto lo stream e sarà pronto a servire un'altra richiesta, senza contare che la rete fra M e S può essere incredibilmente più veloce (Gigabit Ethernet) di quella tra S e C (ad esempio il collo di bottiglia potrebbe essere un'adsl)
- le richieste già fatte posso essere esaudite direttamente da M senza dover essere rielaborate
- sicurezza: i client vedono solo M e non possono attaccare S
In pratica M agisce come un "Caching proxy server"...
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Bioshock: il film di Netflix si far&agra...
Samsung 'trolla' Apple su X con la campa...
Apple Watch Series 11, Ultra 3 e SE 3 gi...
Landspace: il fallimento del lancio di u...
Windows 11 25H2: Microsoft rilascia le I...
Milano, dal 15 settembre via alle multe ...
IFA 2025: BLUETTI continua a innovare co...
Un 55 pollici 4K con Fire TV a un prezzo...
TSMC avvia la produzione interna di pell...
Come cambia la gamma iPhone con l'arrivo...
Anker lancia nuovi caricabatterie e powe...
IFA 2025: FRITZ! tra rebranding, Wi-Fi 7...
Sono prezzi super: MacBook Pro con chip ...
Huawei non si ferma: è leader del...
AirPods Pro 3 già disponibili su Amazon:...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:20.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v