Salve Steemians;
È da tanto che non pubblico un articolo sul fantastico mondo di Internet.
A causa di impegni vari, che non sto qui a disquisire, purtroppo solo ora son riuscito a trovare un po di tempo per voi. Vi ricordo che qualora vi siate persi l'articolo precedente, vi invito a recuperarlo: Cosa è Internet?.
Rieccoci, dunque, in questo quarto articolo!
Prima di passare a quali sono le grandi applicazioni fornite da Internet e come lavorano, oggi quindi concludiamo l'introduzione... vogliate perdonarmi se mi sono dilungato troppo, spero comunque che il tutto sia di vostro gradimento e vi auguro una buona lettura.
Cosa sono i processi comunicanti?
I processi in esecuzione su più host possono comunicare tra loro attraverso un interprocess communication, ovvero una comunicazione inter-processo, le cui "regole" sono definite dal Sistema Operativo del computer. Quindi i processi su due end-systems comunicano scambiandosi messaggi attraverso la rete. Di fatto il mittente crea e invia un contenuto che il destinatario riceve e a cui può rispondere: come avviene attraverso i social network insomma, solo che invece di persone, qui si "messaggiano" programmi che sono sul nostro computer.
Le applicazioni di rete sono costituite da una coppia di processi che si scambiano messaggi in rete, ne è un esempio il nostro browser che scambia messaggi con un web server per trovare ciò che cerchiamo. Per ciascuna coppia, si etichettano uno come Client, l'altro come Server nel caso di architettura Client-Server; nel caso di architettura Peer-to-Peer, un processo può essere contemporaneamente sia Client sia Server e può tanto inviare quanto ricevere messaggi.
In una sessione di comunicazione tra una coppia di processi, chi avvia la comunicazione è sempre il Client e chi attende di essere contattato è il Server. Ogni messaggio inviato da un processo ad un altro deve ovviamente transitare per la rete attraverso un'interfaccia software detta porta. Un processo invia un messaggio dalla propria porta, arriva al destinatario passando per la porta del processo ricevente. La comunicazione tra processi attraverso le porte è l'interfaccia tra il livello 7 (applicazione) ed il livello 4 (trasporto). Considerando l'immagine riportata di seguito: le porte sono 45000 e 25, rispettivamente del Client e del Server.
CC0 Creative Commons: Immagine di proprietà dell'autore
Per identificare processo mittente e ricevente si specifica all'interno del messaggio gli indirizzi degli host. Essi vengono, di fatto, identificati attraverso gli indirizzi IP, un numero a 32 bit, in modo univoco. Oltre a ciò, si specifica anche il numero di porta del mittente e della destinazione.
Purtroppo però un messaggio potrebbe andare perso e ciò potrebbe causare gravi conseguenze in alcune applicazioni. Per supportarle, occorre garantire che i dati inviati siano consegnati corretti e completi. Un protocollo che fornisce un tipo di servizio di consegna garantita dei dati, viene definito reliable data transfer, o anche trasferimento dati affidabile. Un protocollo, invece, che fornisce un tipo di servizio di consegna non garantita dei dati, è detto unreliable data transfer. Quest'ultimo potrebbe risultare accettabile per particolari applicazioni, dette loss tolerant, o anche tolleranti alle perdite.
Viene definito, infine, throughput, il tasso di trasmissione dei bit da mittente a ricevente; esso risulta fluttuante nel tempo perchè viene condiviso tra varie sessioni del mittente stesso.
Un'applicazione potrebbe richiedere un throughput garantito, detta anche bandwidth-sensible, ovvero sensibile alla banda; alcuni esempi sono le applicazioni multimediali. Altre applicazioni sono dette elastiche perchè sfruttano il throughput a seconda di quanto è disponibile.
Un protocollo può anche assicurare una garanzia sul tempo con cui i bit arrivano al destinatario, ad esempio: ogni bit deve essere ricevuto in non più di 100 millisecondi. Questa proprietà risulta utile per applicazioni realtime che richiedono questi vincoli temporali sulla consegna dei dati, di fatti un ritardo rende l'applicazione meno realistica. Un protocollo può fornire anche servizi di sicurezza, di modo da cifrare i dati prima di consegnarli al processo ricevente; ciò consente riservatezza ed integrità dei dati.
Quali sono i servizi di Internet?
I principali servizi di Internet si basano sui protocolli fondamentali del livello trasporto del modello ISO-OSI, ovvero:
- TCP, Transmission Control Protocol, è un protocollo che prevede un servizio orientato alla connessione, ovvero vi è una inizializzazione della comunicazione tra mittente e destinatario; quindi TCP fa si che client e server si scambino informazioni di controllo prima che i messaggi a livello applicazione fluiscano tra gli host.
Questa procedura è detta handshaking, client e server si danno la mano in segno di comune accordo. I processi che usano TCP possono scambiarsi contemporaneamente messaggi sulla connessione, full duplex. Il servizio offerto è affidabile, consente di trasportare dati senza errori e presenta un meccanismo di controllo della congestione, utilizzato quando il traffico di rete è eccessivo.
CC0 Creative Commons - UDP, User Datagram Protocol, è un protocollo di trasporto leggero e 'senza fronzoli', ovvero è dotato di servizi minimali. È senza connessione, non necessita di handshaking e non affidabile, di fatti non garantisce che i dati arrivino a destinazione.
Non vi sono meccanismi di controllo di congestione come in TCP, ma spinge i dati a qualsiasi velocità (bisogna però tener presente che il throughput è inferiore a questa velocità perchè i collegamenti tra host sono a banda limitata).
UDP viene usato, in particolare, per evitare il controllo di congestione nella telefonia, ma poichè molti firewall sono configurati per bloccare il traffico UDP, molte applicazioni di telefonia usano TCP solo come opzione di riserva.
CC0 Creative Commons
Si può analizzare la rete?
L'analisi della rete viene definita come Sniffing: ossia un'attività di intercettazione passiva dei dati che transitano in una rete telematica. Ovviamente essendo un'operazione effettuabile da tutti, essa può essere usata per:
- Scopi legittimi, come ad esempio l'individuazione di problemi di comunicazione o di tentativi di intrusione nella propria rete;
- Scopi illegittimi, l'altra faccia della medaglia, ossia intercettazione fraudolenta di password o altre informazioni sensibili;
CC0 Creative Commons
A tale scopo, a disposizione degli utenti, vi è un prodotto software in grado di analizzare il traffico della rete e intercettare e memorizzare i dati che vi transitano. Ogni software è però passivo, nel senso che cattura i pacchetti per analizzarli ma non è in grado di spedirne di nuovi.
Cos'è uno sniffer?
Uno sniffer, il prodotto di cui prima, raccoglie le informazioni che viaggiano lungo una rete ed è capace di analizzare il traffico con vari protocolli di comunicazione (alcuni di questi li vedremo nel dettaglio). Funzioni tipiche degli sniffer:
- Filtraggio e Conversione dei dati e dei pacchetti in forma leggibile all'utente;
- Analisi dei difetti di rete;
- Analisi di qualità e portata della rete (performance analysis);
- Ricerca automatica di password e nomi di utenti (a volte in chiaro o, più spesso, cifrati)
- Creazione di log ovvero lunghi elenchi che contengono la traccia del traffico sulla rete;
- Scoperta di intrusioni in rete attraverso l'analisi del log del traffico;
La maggior parte di questi prodotti software lavorano con standard network adapters, ma alcuni richiedono dei componenti speciali atti ad analizzare errori anche hardware quali: problemi di tensione del cavo e molto altro.
Altri componenti, invece, sono:
- Capture driver, fondamentale per catturare il traffico della rete dal cavo, per filtrare e memorizzare i dati in un buffer;
- Buffer, è la parte dove vengono immagazzinati i dati catturati;
Inoltre vi sono due metodi di cattura:
- Cattura finchè il buffer non si riempie;
- Usa il buffer come struttura circolare ovvero i dati nuovi vanno a sostituire i vecchi;
Per facilitare la comprensione dei protocolli, oltre alla parte teorica , a scopi puramente didattici, illustrativi e sopratutto a scopo legittimo, vi presenterò anche la parte pratica (...solo però se fate i buoni).
CC0 Creative Commons
Con ciò si conclude l'articolo di oggi, spero come sempre che sia stato gradevole alla lettura ed interessante. Vi ringrazio e vi auguro una buona giornata.
Inoltre vi riporto la bibliografia:
- T. Berners-Lee, R. Cailliau, A. Luotonen, H. Frystyk Nielsen, A. Secret,
“The World-Wide Web,” Communications of the ACM, Vol. 37, No. 8 (Aug. 1994); - B. Davie and Y. Rekhter, MPLS: Technology and Applications, Morgan
Kaufmann Series in Networking, 2000; - S. Ihm, V. S. Pai, Towards Understanding Modern Web Traffic, Proc. 2011
ACM Internet Measurement Conference (Berlin);