Visualizzazione stampabile
-
domanda su client/server
ciao,
da ignorante in materia,ho letto che un client e' un software che invia una richiesta di servizio ad un server il quale elabora i dati in ingresso restituendoli al client (mittente). Detto questo,mi pongo una domanda: si stabilisce una connessione tra i software? E i terminali non si connettono???? Non ho capito molto su questa cosa. Me la potete spiegare in modo elementare?
grazie
-
Quote:
Originariamente inviato da
zorro29
ciao,
da ignorante in materia,ho letto che un client e' un software che invia una richiesta di servizio ad un server il quale elabora i dati in ingresso restituendoli al client (mittente). Detto questo,mi pongo una domanda: si stabilisce una connessione tra i software? E i terminali non si connettono???? Non ho capito molto su questa cosa. Me la potete spiegare in modo elementare?
grazie
Molto terra terra, semplificato e con qualche possibile imprecisione:
Un terminale X connesso a internet è una macchina che ha un dispositivo in grado di connetterlo a un'altra macchina Y, la quale si occupa di ricevere dal suddetto terminale delle richieste (sotto forma di pacchetti di dati), di interpretarle e, qualora capisca che non è suo compito elaborarle, si occupa di rigirarle, direttamente o indirettamente, verso i corretti destinatari.
Ogni pacchetto passerà da un certo numero di macchine (d'ora in poi server), prima di arrivare a destinazione.
Scendendo un attimo più nel dettaglio, a ogni macchina viene assegnato, al momento della connessione a internet, un nome univoco, il cosiddetto indirizzo IP; questo viene utilizzato per capire a quale macchina è rivolto un pacchetto, e da chi proviene.
Quando finalmente il pacchetto dati arriva alla macchina incaricata di elaborarlo, questa "riconosce" il proprio indirizzo IP, e analizza un altro campo del pacchetto, la cosiddetta porta.
Questa viene utilizzata poiché un software che deve ricevere dati si mette in ascolto su una porta, e accetta unicamente i messaggi in arrivo su quella porta.
Analogamente, il pacchetto di cui stiamo parlando è partito dal nostro terminale, ma a decidere di mandarlo non è stata l'interfaccia di rete, ma "qualcuno" sopra di lei, di solito per l'appunto un software.
Schematizzando il viaggio del pacchetto, e riassumendo, abbiamo quindi:
1) Il nostro software, ad esempio un'applicazione che deve farci vedere il meteo di dove siamo, acquisisce la località
2) Il software impacchetta la località e gli altri dati necessari all'interno di un pacchetto dati, e lo indirizza al server che fa le previsioni, su una certa porta e con un certo indirizzo IP
3) Il software passa il pacchetto alla scheda che si occupa di inviare i dati via internet
4) La scheda invia i dati via internet al server del provider a cui è connessa
5) Il server del provider rigira il pacchetto a un altro server, e questo a un altro ancora, e via dicendo...
6) Arrivato a destinazione il pacchetto, il server lo passa al software che finalmente lo elabora, e manda il pacchetto contente i dati al mittente, tramite l'indirizzo IP del mittente e una certa porta
Capito quindi come funziona, sono sempre i terminali a essere "fisicamente" connessi, seppur indirettamente, mentre sono sempre i software a essere "logicamente" connessi.
-
ciao,
si insomma e' un po' complessa.
Se ho due pc,A e B,server e client.
Il pc A stabilisce una connessione con B? In che senso A e' connesso fisicamente a B e logicamente i software?
La connessione riguarda i software o i pc?
-
Quote:
Originariamente inviato da
zorro29
ciao,
si insomma e' un po' complessa.
Se ho due pc,A e B,server e client.
Il pc A stabilisce una connessione con B? In che senso A e' connesso fisicamente a B e logicamente i software?
La connessione riguarda i software o i pc?
Per semplicità possiamo dire che fisicamente possiamo intendere l'hardware e logicamente il software, quindi la scheda di rete ed il cavo di una macchina sono fisici, il software che gestisce è logica.
Anche la porta è logica, come lo è un indirizzo IP in quanto se l'hardware supportasse altri tipi di logica non servirebbe ne una porta ne un indirizzo IP che insieme formano una parte di quello che viene chiamato protocollo, un protocollo è "un modo per mettersi d'accordo" su come compiere una data azione, ecc.. ecc... ecc... ;)
EDIT:
Per completezza si può sottolineare che non necessariamente il tutto deve essere valido solo passando per internet, la stessa cosa vale per una rete locale totalmente staccata da internet stessa, il principio su scala ristretta è il medesimo.
-
Quote:
Originariamente inviato da
zorro29
Se ho due pc,A e B,server e client.
Il pc A stabilisce una connessione con B? In che senso A e' connesso fisicamente a B e logicamente i software?
La connessione riguarda i software o i pc?
Io e te stiamo parlando al telefono.
Sono i telefoni a essere connessi o siamo io e te?
Ecco, il discorso è esattamente lo stesso ;).
Quote:
Originariamente inviato da
diego63
Anche la porta è logica, come lo è un indirizzo IP in quanto se l'hardware supportasse altri tipi di logica non servirebbe ne una porta ne un indirizzo IP che insieme formano una parte di quello che viene chiamato protocollo, un protocollo è "un modo per mettersi d'accordo" su come compiere una data azione, ecc.. ecc... ecc...
Per completezza si può sottolineare che non necessariamente il tutto deve essere valido solo passando per internet, la stessa cosa vale per una rete locale totalmente staccata da internet stessa, il principio su scala ristretta è il medesimo.
Yup, certo :p
-
i telefoni sono connessi pero' non capisco il nesso :-)
Quote:
Originariamente inviato da
Ma5t3r
Io e te stiamo parlando al telefono.
Sono i telefoni a essere connessi o siamo io e te?
Ecco, il discorso è esattamente lo stesso ;).
Yup, certo :p
-
Quote:
Originariamente inviato da
zorro29
i telefoni sono connessi pero' non capisco il nesso :-)
Errato, siamo sia io e te che i telefoni a essere connessi, ma per me e te la connessione è solo "logica" (se io dico una cosa, tu la capisci e mi rispondi), mentre tra i due telefoni esiste una connessione "fisica", cioè sono in qualche modo attaccati.
In particolare, quando io parlo, la voce arriva al mio telefono, che si occupa di "prenderla" e di inviarla al tuo telefono, che a sua volta te la fa ascoltare.
Con i software e i terminali, il discorso è identico: il software invia informazioni all'hardware (il pacchetto dati), che si preoccupa di inviarle a un altro hardware tramite un canale, e il secondo hardware le manda al software ricevente (il "server"), che riceve così il pacchetto dati (e fa quello che deve fare).
-
In modo molto schematico:
client, server: sono dei SOFTWARE che girano su dei COMPUTER (o elaboratori in senso lato)
Un CLIENT richiede dati al SERVER, il quale riceve la richiesta, elabora e manda indietro il risultato.
Nelle architetture moderne, i due termini sono andati via via mischiandosi (le così dette reti P2P), anche se nel mondo mobile/IT questa differenza è ancora molto marcata.
Esistono più tipologie di comunicazione tra client e server, ti spiego le due più utilizzate:
1. approcio standard: il client si connette al server e richiede le informazioni (es. un browser si collega a google.it). Il server elabora ("sta cercando 'free porn'") e manda il risultato (una pagina HTML formattata con testo e link). Il client riceve i dati, si fa una pippa (o qualsiasi cosa il client voglia fare con i dati acquisiti).
2. approcio push: il client si connette al server e si "registra", ossia dice "hey, sono qui, se hai bisogno di inviarmi dei dati, fallo pure". Il server quindi agisce per conto suo, ad un certo punto riceve un messaggio per il client registrato, quindi invia il dato alle coordinate dategli precedentemente dal client stesso. Esempio pratico: un SMS.
Ma come avviene la connessione tra due elaboratori? Principalmente seguendo due protocolli: TCP ed UDP (ma non sono gli unici). Il primo viene effettuato per avere la certezza che il dato arrivi, una connessione strutturalmente più lenta, il secondo viene usato per mandare stream di dati multimediali (audio/video), o per mandare pacchetti ad alta priorità, i quali possono però esser persi (pensa ad un videogioco: se si utilizzasse TCP, ogni volta che si perdesse un pacchetto (e succede molto spesso), il giocatore affetto da questa perdita "laggherebbe", ossia starebbe sul posto per TOT secondi prima di comparire tutt'altra parte).
Con le connessioni TCP la prima macchina (il "client" della situazione) invia una richiesta di connessione al server, il quale accetta o rifiuta tale richiesta. Se la accetta, rimanda indietro le informazioni sulla connessione stessa (tipo: ciao, sono la macchina X, ho creato un "corridoio" dal mio IP A e la mia porta B al tuo IP C e la tua porta D, come da te richiesto). Da quel momento le due macchine parleranno tramite questo "canale", il quale ha una durata dall'ultima comunicazione tipicamente di 15 minuti (il famoso "timeout"), ma può essere chiuso anticipatamente da uno dei due in qualsiasi momento. Questo canale può essere half o full duplex, ossia può parlare uno alla volta (half duplex), oppure possono parlare entrambi contemporaneamente (full duplex). Tipicamente una connessione TCP è full duplex.
Quindi puoi capire come client e server siano solo delle "costruzioni mentali" atte a separare chi richiede un dato (client) e chi fornisce il dato (server). Tendenzialmente in un approcio classico il server è dotato di hardware superiore alla media per fronteggiare la mole di richieste (e relative elaborazioni) da parte di più client. In un approcio più moderno invece il client ed il server si mischiano, dove quindi il client chiede ad altri server informazioni, ma gli stessi "server" diventano client eseguendo la stessa operazione con il nostro "client", il quale diventa server.
-
ciao!
ti ringrazio ma non ho capito un concetto: quando il client invia una richiesta di connessione al server,chi la invia? Un componente software o hardware?
Il pc invia una richiesta di connessione al server oppure e' una specifica applicazione?
Questo mi sfugge!
-
Quote:
Originariamente inviato da
zorro29
ciao!
ti ringrazio ma non ho capito un concetto: quando il client invia una richiesta di connessione al server,chi la invia? Un componente software o hardware?
Il pc invia una richiesta di connessione al server oppure e' una specifica applicazione?
Questo mi sfugge!
Software!! è sempre il software che fa richieste oppure le soddisfa.
L'hardware rende possibile il tutto. Quando premi un tasto del telecomando è un software, una logica del firmware che compie l'azione da te desiderata, il telecomando e la tv sono solo delle macchine che rendono possibile l'operazione dal punto di vista fisico. Non a caso in questo post ho tirato in ballo ancora la logica e l'aspetto fisico. Ripeto non per caso :cool::cool::cool::cool::cool::cool: