Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Il concetto di socket in informatica
Con il termine socket, in informatica, si fa riferimento a diversi concetti a seconda che ci si riferisca al mondo dell'hardware o del software:
- Hardware: il socket è l'alloggiamento, presente sulla scheda madre, in cui viene posizionato il processore e che contiene i contatti elettrici per gestire lo scambio di dati tra quest'ultimo e la scheda madre.
- Software: un socket è un oggetto software che consente lo scambio di dati tra host remoti (tramite una rete) o tra processi locali. Un processo invia/riceve messaggi a/da la sua socket. Un socket è analoga a una "porta": un processo vuole inviare un messaggio e lo fa uscire dalla propria porta e si presuppone un'infrastruttura esterna che trasporterà il messaggio attraverso la rete fino alla "porta" del processo di destinazione.
Processi di indirizzamento: Affinché un processo su un host invii un messaggio ad un altro host,
Il mittente deve identificare il processo destinatario. Un host ha un Indirizzo IP a 32 bit (come vedremo più avanti questo indirizzo indentifierà l'interfaccia di rete, con la quale l'host può comunicare). È sufficiente conoscere l'Indirizzo IP dell'host su cui è in esecuzione il processo per identificare il processo stesso?
No, sullo stesso host possono essere in esecuzione molti processi. L'identificatore comprende sia l'indirizzo IP che i numeri di porta associati al processo in esecuzione su un host.
Esempi numeri di porta:
- HTTP: 80
- HTTP SSL (HTTPS): 443
- FTP: 21
- MAIL SERVER: 25
Nel livello fisico di Data Link, l'identificativo principale è l'Indirizzo MAC 6 byte.
HTTP
In telecomunicazioni e informatica l'HyperText Transfer Protocol (HTTP) (protocollo di trasferimento di un ipertesto) è un protocollo a livello applicativo usato come principale sistema per la
La trasmissione d'informazioni sul web avviene attraverso un'architettura tipica client-server. Le specifiche del protocollo sono gestite dal World Wide Web Consortium (W3C). Un server HTTP generalmente resta in ascolto delle richieste dei client sulla porta 80 usando il protocollo TCP a livello di trasporto.
- HTTP 1.0: non persistente;
- HTTP 1.1: persistente.
Con le connessioni persistenti, il server lascia aperta la connessione TCP dopo aver spedito la risposta. Le successive richieste e risposte fra client e server possono essere inviate sulla stessa connessione.
La connessione non persistente ha come difetto l'RRT (Round Trip Time), ovvero il tempo necessario ad un pacchetto piccolo per arrivare alla destinazione e ritornare al mittente.
L'obiettivo del protocollo TELNET è fornire un supporto per le comunicazioni sufficientemente generalizzato, bidirezionale ed orientato ai byte (otto bit).
Il protocollo telnet definisce un canale di comunicazione,
sinistra, partendo dal dominio di primo livello (TLD - Top Level Domain) fino ad arrivare al nome dell'host. Ad esempio, nel caso di www.sitoweb.it, il dominio di primo livello è ".it", il dominio di secondo livello è "sitoweb" e il nome dell'host è "www". Il DNS svolge un ruolo fondamentale nella navigazione su Internet, in quanto permette di utilizzare nomi di dominio più facili da ricordare al posto degli indirizzi IP numerici. Il protocollo DNS utilizza principalmente due tipi di record: il record A, che associa un nome di dominio a un indirizzo IP, e il record MX, che specifica il server di posta responsabile per un determinato dominio. Grazie al DNS, è possibile digitare un nome di dominio nel browser (ad esempio www.google.com) anziché l'indirizzo IP numerico corrispondente (ad esempio 172.217.19.206) per accedere a un sito web. In conclusione, il DNS è un sistema essenziale per la navigazione su Internet, permettendo di associare nomi di dominio a indirizzi IP e semplificando l'accesso ai vari servizi online.sinistra.nodo.sottodominio.dominio.country
La prima sottostringa rappresenta il nome dell'host;
Le altre sottostringhe, ad eccezione dell'ultima a destra, indentificano ciascuna un sottodominio;
L'ultima sottostringa (più a destra), identifica il TOP-LEVEL DOMAIN di appartenenza (.com, .it ...).
FTP (File Transfer Protocol)
FTP è un protocollo di livello applicazione che consente di trasferire file tra due host, in modo affidabile. A livello trasporto FTP, utilizza il protocollo TCP:
- Il client FTP si collega al server sulla porta 21;
- Dopo essere stato autenticato invia i comandi al server.
Il server FTP si occupa di mantenere informazioni di "stato" quali: directory corrente e chiavi di autenticazione.
SMTP (Simple Mail Transfer Protocol)
SMTP è un protocollo standard per la trasmissione di email che utilizza TCP e la porta 25 per il trasferimento affidabile dei messaggi.
Anche se i server di posta elettronica utilizzano SMTP per
è una tecnica che consente di inviare più segnali o flussi di dati attraverso un unico canale di comunicazione. Nel contesto del livello di trasporto, il multiplexing viene utilizzato per consentire a più applicazioni di utilizzare contemporaneamente la stessa connessione di rete. Esistono diversi metodi di multiplexing, tra cui il multiplexing a divisione di frequenza (FDM), il multiplexing a divisione di tempo (TDM) e il multiplexing statistico. Il multiplexing a divisione di frequenza (FDM) assegna a ciascuna applicazione una banda di frequenza specifica all'interno del canale di comunicazione. In questo modo, le diverse applicazioni possono trasmettere i loro segnali contemporaneamente senza interferire l'una con l'altra. Il multiplexing a divisione di tempo (TDM) assegna a ciascuna applicazione un intervallo di tempo specifico all'interno del canale di comunicazione. Le applicazioni trasmettono i loro segnali in sequenza, utilizzando ciascuna il proprio intervallo di tempo assegnato. Il multiplexing statistico, invece, assegna la larghezza di banda in base alle esigenze delle diverse applicazioni. In questo caso, la larghezza di banda viene allocata dinamicamente in base al carico di lavoro delle applicazioni. Il multiplexing è una tecnica molto efficiente che consente di ottimizzare l'utilizzo delle risorse di rete e di consentire a più applicazioni di comunicare contemporaneamente.Elettronica e reti di computer, è il meccanismo o tecnica di trasmissione per cui più canali trasmissivi in ingresso condividono la stessa capacità trasmissiva disponibile in uscita ovvero combinando più segnali analogici o flussi di dati digitali in un solo segnale (detto multiplato) trasmesso in uscita su uno stesso collegamento fisico.
I protocolli di trasporto utilizzano il servizio di un protocollo di rete, che trasporta pacchetti da un host ad un altro, per realizzare comunicazioni tra processi applicativi. È possibile che sia necessario stabilire contemporaneamente più connessioni tra applicazioni tra l'host richiedente e qualsiasi altro host. Per questo i protocolli di trasporto hanno strumenti di multiplicazione e demultiplicazione per specificare a quale conversazione appartenga un segmento e quindi a quale applicazione vadano consegnati i dati ricevuti.
Alla ricezione, DEMULTIPLEXING: Smistare i pacchetti alla socket corretta usando
L'header del trasporto. Nel mittente, MULTIPLEXING: Raccogliere da tutte le socket con l'aggiunta dell'header, inviando i dati tramite lo strato rete.
Header e datagramma: Ogni strato invia e riceve dati agli strati adiacenti. Vi aggiunge (o toglie) informazione specifica nella forma di un "header" e crea una nuova unità di informazione da trasmettere allo strato successivo.
Il nodo riceve il datagramma IP: L'header del datagramma IP contiene gli indirizzi sorgente e destinazione ed il protocollo; L'header del segmento di trasporto contiene le porte sorgente e destinazione; L'header del messaggio contiene informazioni variabili per ogni applicazione; Il nodo usa sia gli Indirizzi IP che i numeri di porta per identificare la socket corretta.
Il trasporto affidabile: Il livello di trasporto è il quarto dei livelli nel modello ISO/OSI. Il suo compito è di fornire servizi al soprastante livello 5 (livello sessione) e per raggiungere tale scopo.
sfrutta i servizi offerti dal sottostante livello 3 (livello rete). Il livello di trasporto ha il compito di instaurare un collegamento logico tra le applicazioni residenti su host remoti. Il livello di trasporto estende il servizio di consegna con impegno proprio del protocollo IP tra due host terminali ad un servizio di consegna a due processi applicativi in esecuzione sugli host. Il protocollo di trasporto TCP offre un livello di trasporto affidabile e orientato alla connessione utilizzando un canale trasmissivo inaffidabile quale internet. Protocolli diversi per canali diversi: - RDT 1.0: trasferimento su canale completamente affidabile; - RDT 2.x: trasferimento su un canale con possibili errori sui bit: - 2.0: versione base (ha un difetto fatale, si usa lo stop-and-wait); - 2.1: risolve i problemi di duplicazione; - 2.2: evita due tipi di ACK. - RDT 3.0: trasferimento su un canale con possibili errori sui bit e perdita di pacchetti. Principi del trasferimento affidabile: LeLe caratteristiche del canale inaffidabile determinano la complessità del protocollo di trasferimento dati affidabile (RDT, Reliable Data Transfer) rispetto a UDT (Unreliable Data Transfer).
Meccanismo STOP-AND-WAIT:
Il mittente invia un pacchetto e si mette in attesa della risposta prima di inviare un altro pacchetto.
ACK: è il simbolo che identifica un segnale di Acknowledge emesso in risposta alla ricezione di un'informazione completa.
NACK: indica la mancata ricezione di un pacchetto o la ricezione di n-1 pacchetti, ma la mancata ricezione di 1.
Protocolli con pipeline:
Pipelining: è una tecnologia utilizzata nell'architettura hardware per incrementare il throughput, ovvero la quantità di istruzioni/dati eseguite/i in una data quantità di tempo, parallelizzando i flussi di elaborazione di più istruzioni/dati.
Il mittente ammette più pacchetti in transito, ancora da riscontrare:
- L'intervallo dei numeri di sequenza deve essere incrementato,
non bastano semplicemente 0 e 1;
- Buffering dei pacchetti presso il mittente e/o ricevente.
Esistono due forme di protocolli con pipeline:
- Go-Back-N;
- Ripetizione selettiva.
Protocollo Go-Back-N:
Il mittente può avere fino a N pacchetti senza ACK in pipeline.
Il ricevente invia solo ACK cumulativi.
Il mittente mantiene un timer per ciascun pacchetto che non ha ancora ricevuto un ACK, se il timer scade, ritrasmette tutti i pacchetti senza ACK, facendo ripartire i relativi timer.
Protocollo ripetizione selettiva:
Il mittente può avere fino a N pacchetti senza ACK in pipeline.
Il ricevente dà l'ACK per ogni pacchetto.
Il mittente mantiene il timer per ciascun pacchetto che non ha ancora ricevuto l'ACK, quando il timer scade, ritrasmette solo il pacchetto che non ha avuto l'ACK, facendo ripartire il timer.