IL PROTOCOLLO TCP/IP Il Protocollo TCP/IP Transmission Protocol Control Protocol/Internet Vinton Cerf e il suo socio Bob Khan, studenti americani, comproprietari di una società per lo sviluppo di soluzioni software, pubblicano nel 1974 un articolo dal titolo “Un protocollo per il Controllo della Trasmissione”. Nasce il TCP: una vera rivoluzione che ha in sé i principi di quello che diventerà il protocollo TCP/IP. Si tratta in realtà di un linguaggio unificato capace di fare da veicolo tra macchine a distanza, quale che sia il canale usato, in modo da mandare messaggi da qualunque nodo alla giusta destinazione. PROTOCOLLO TCP/IP Generalità Il protocollo TCP/IP è un protocollo basato sul paradigma Client-Server del tipo Peer-to-Peer : un sistema che implementa il protocollo TCP/IP può funzionare da Client e da Server indifferentemente e cambiare addirittura identità in fase di elaborazione. Il protocollo TCP/IP è un protocollo full duplex a commutazione di pacchetto : non esiste un’autorità centralizzata nella rete, ma un qualunque nodo è logicamente collegato ad un qualunque altro nodo e ciascun nodo può creare, elaborare e trasmettere informazioni. Tutti i nodi si trovano quindi allo stesso livello gerarchico. Modello TCP/IP e Modello OSI Nella terminologia usata per la definizione di una Intranet, cioè di una rete aziendale, il protocollo TCP/IP è classificato come protocollo Routable. Nella figura successiva sono messe a confronto la struttura OSI e quella del protocollo TCP/IP. 7 Applicazione 6 Presentazione Applicazione 5 Sessione API 4 Trasporto Trasporto 3 Rete Internet 2 Collegamento Interfaccia Rete 1 Fisico Hardware Modello OSI Modello TCP/IP Applicazioni E Servizi Applicazione API Trasporto Internet UDP TCP IP ICMP ARP RARP RIP OSPF EGP BGP Interfaccia Rete Hardware Modello TCP/IP DRIVER di RETE e NIC Protocolli e Componenti TCP/IP Indirizzo TCP/IP TIPO Indirizzamento di Rete Indirizzamento di Host Il TIPO varia da 1 a 4 bit e specifica se l’indirizzo è di Classe A (bit 0); di Classe B (bit 10); di Classe C (bit 110); di Classe D (bit 1110). A seconda del tipo c’è un formato diverso e una lunghezza diversa per le altre due parti. Il Tipo più l’Indirizzamento di Rete individuano l’Identificativo di Rete, cioè la singola rete alla quale appartiene il sistema (host). L’Indirizzamento di Host è l’indirizzo del sistema Gli Indirizzi IP per Classe Gli indirizzi per la rete principale sono sempre su 8 bit vanno da 0 fino a (2^8-1) = 255. E’ stata stabilita la seguente suddivisione : Classe A : 0 – 126 (127 local host-NIC) Classe B : 128 –191 Classe C : 192 – 254 (255 subnetmaskTCP/IP) in questo intervallo i numeri da 224 a 239 sono assegnati alla Classe D (sono quelli in cui i primi quattro bit sono la sequenza 1110). CLASSE A : Ind.IP 0126 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 128 64 32 16 8 4 2 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 CLASSE B : Ind.IP 128-191 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 128 64 32 16 8 4 2 1 1 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 CLASSE C : Ind.IP 192-255 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 128 64 32 16 8 4 2 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 192 223 CLASSE D : Ind.IP 224-239 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 128 64 32 16 8 4 2 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 224 239 CLASSE C : Ind.IP 192-255 Si conviene che per la Classe C siano utilizzabili gli indirizzi : 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 128 64 32 16 8 4 2 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 0 1 Si parla anche di CLASSE E per gli indirizzi da 240 a 255 240 255 Il Protocollo TCP/IP : Applicazioni e Servizi Applicazioni e Servizi API UDP TCP IP ICMP ARP RARP RIP OSPF EGP BGP DRIVER di RETE e NIC Protocolli e Componenti TCP/IP Applicazioni e Servizi Esistono tutta una serie di protocolli a livello Applicazione. I più importanti sono i seguenti: PING : un servizio per il controllo del collegamento SMTP : servizio di posta elettronica TELNET : servizio di login remoto FTP : servizio di trasferimento di file DNS : servizio di traduzione nome in indirizzo IP X_Windows : servizio per la rappresentazione grafica delle applicazioni API Application Program Interface Sono le interfacce tra il livello Applicazione, i suoi servizi e protocolli, e il livello di Trasporto, cioè tutti i protocolli di comunicazione TCP/IP. Le interfacce più usate : Socket TLI : Transport Layer Interface Entrambe specificano : 1) l’indirizzo Internet, 2)l’indirizzo della porta, 3) il protocollo TCP o UDP a seconda del tipo di connessione necessaria (affidabile o orientata alla connessione verso non affidabile o connectionless). La TLI può usufruire di una ulteriore interfaccia intermedia detta Stream. Caso Interfaccia TLI Applicazioni e Servizi TLI STREAM Protocolli di Comunicazione TCP/IP Driver di Rete e NIC Protocolli dello Strato Trasporto : UDP UDP User Datagram Protocol : è un protocollo non affidabile, connectionless. I messaggi trasferiti dal livello applicazione vengono scomposti in datagrammi detti Udp o Utente, che sono poi incapsulati all’interno della struttura del protocollo IP dello strato sottostante. L’unico controllo in arrivo è fatto attraverso la verifica del checksum ricevuto con quello calcolato. Se i due checksum sono diversi, il sistema ricevente stabilisce che è intercorso un errore e scarta il datagramma. Datagramma UDP Vari Ottetti Indirizzo di Destinazione Indirizzo di Origine Lunghezza del Datagramma Checksum DATI 32 bit Protocolli dello Strato Trasporto : TCP TCP Transmission Control Protocol : è un protocollo affidabile, orientato alla connessione, full duplex, con conferma. Il sistema trasmittente spedisce il messaggio diviso in segmenti numerati in ordine di sequenza. Attende una conferma da parte del sistema ricevente entro un certo intervallo di tempo. Se la conferma non arriva rispedisce il segmento. Il sistema in ricezione opera un controllo sugli errori in trasmissione tramite il checksum e su errori di perdita, duplicazione o fuori sequenza dei segmenti specificando il segmento che si aspetta di ricevere. Anche in questo caso ciascun segmento è incapsulato nella struttura Segmento TCP Indirizzo di Destinazione Indirizzo Origine Numero di Sequenza Numero di Applicazione Altri Campi Puntatore di Urgenza CHECKSUM OPZIONI DATI Protocolli del livello Internet IP è responsabile di trasmettere Datagrammi UDP o Segmenti TCP incapsulati nei suoi Datagrammi IP. Realizza un servizio di trasmissione best-effort, connectionless, tra il sistema sorgente e il destinatario. ICMP è l’insieme dei protocollo per realizzare le varie funzioni di controllo sul messaggio da trasmettere. Si serve a sua volta dei servizi IP. ARP è il protocollo per la conversione dell’indirizzo Internet nell’indirizzo MAC fisico del sistema (generalmente a 48 bit) RARP consente ad un sistema senza indirizzo IP di richiederlo Protocolli di Routing del Livello Internet A livello Internet sono specificati i vari Protocolli di Routing : RIP Routing Internet Protocol OSPF Open Shortest Path First EGP Exterior Gateway Protocol BGP Board Gateway Protocol Sono tutti i protocolli volti a stabilire il miglior percorso per la trasmissione dei Datagrammi IP. Il Gateway del Protocollo TCP/IP Nelle reti aziendali verrà introdotto il Gateway : un elemento che opera come convertitore di protocollo. Il termine Gateway usato nei protocolli di routing è invece sinonimo di router (in realtà ne individua l’indirizzo IP). Quando un sistema deve trasmettere un messaggio chiama un router di default o usa un algoritmo per stabilire a quale router rivolgersi (sulla base dell’indirizzo a cui trasmettere). Il router ricevuto il datagramma IP verifica l’indirizzo ed eventualmente comunica al sistema sorgente il miglior router a cui spedire il prossimo datagramma. Il sistema sorgente memorizza queste informazioni in una tabella di routing. L’Interfaccia Rete (Livello Data-Link del mod.OSI) Il protocollo TCP/IP non definisce specifiche per i livelli Interfaccia Rete e Fisico, ma usa quelli delle LAN che lo implementano (LAN Ethernet, Token Ring, FDDI, ecc…). Questa peculiarità (adattabilità) ha reso il protocollo TCP/IP il protocollo più usato nel mondo e non è quindi un caso che su di esso si basa il funzionamento della rete Internet. Servizio di Demultiplexing Un importante servizio fornito dal livello Interfaccia Rete e che merita una particolare attenzione è quello di Demultiplexing delle Trame. Una scheda di interfaccia (NIC) trasferisce una trama ricevuta verso il livello Interfaccia Rete, che la scompone e stabilisce a quali protocolli del livello Internet essa va indirizzata. Protocolli per Ll risoluzione degli indirizzi Protocolli per la risol degli ind. inversi Protocolli Internet Protocolli per i messaggi di controllo Internet DEMULTIPLEXING NIC TRAMA Ambienti Client-Server Generalità Un ambiente Client-Server è caratterizzato dalla presenza di una rete (LAN o WAN) per trasmissioni ad alta velocità tra “fornitori” di servizi, detti Server e “consumatori” di servizi, detti Client. I Server e i Client rappresentano i nodi della rete. La filosofia alla base delle strutture ClientServer è rendere accessibili al massimo numero di utenti in maniera affidabile ed efficiente un gran numero di risorse high-level da gestire in maniera ottimale. I Server sono i supervisori che ne regolano l’uso in un ambiente Struttura tipo La struttura per un tipico sistema Client-Server è quella di figura : Mainframe SERVER 1 I dati vengono conservati in un magazzino dei dati (prima si usava il Mainframe) al quale accedono vari Server, che gestiscono le interrogazioni e gli aggiornamenti dei dati. I Server possono essere workstation o PC con prestazioni superiori. I Server sono poi collegati tramite la rete ai Client, semplici PC, che rappresentano l’interfaccia con gli utenti finali. SERVER 2 LAN PC_1 PC_2 CLIENT PC_3 PC_4 I Server sono sistemi reattivi che agiscono solo su richiesta. I Client sono sistemi attivi che avnzano richieste anche indipendentemente dagli utenti finali. Processi Client - Server I processi Client-Server a cui facciamo riferimento sono nella maggior parte dei casi quelli multithreaded, dove una classe di Server (Thread) sono attivati e disattivati dai Client sulla base di considerazioni basate sull’efficienza, sui tempi di risposta e sulle code esistenti. I Sistemi Server I possibili Sistemi Server in ambienti Client-Server sono : FILE SERVER per l’accesso a file e directory : il server trasmette ai client record di file o interi file dietro richiesta PRINT SERVER per l’accesso a servizi di stampa DATABASE SERVER per l’accesso a DataBase : il server riceve dai client interrogazioni in SQL; le elabora; accede alle basi dei dati e rispedisce ai client lungo la rete solo i risultati COMMUNICATION o GROUPWARE SERVER per l’accesso a dispositivi specifici per le comunicazioni tra client e loro utenti allo scopo di trattare testi, immagini, banche dati, ecc… APPLICATION o TRANSACTION SERVER per l’accesso a specifiche applicazioni con la possibilità di distribuzione della potenza di calcolo : il client richiede al server l’esecuzione di una procedura remota tramite istruzioni in SQL e quando l’esecuzione della procedura è terminata e il client riceve i risultati si dice che ha avuto luogo la transazione. I componenti sw di un sistema C/S (componenti base) I componenti base di un sistema C/S sono : sw di interfaccia per la presentazione e l’interazione con l’utente finale sw di applicazione per l’elaborazione dei processi sw di gestione per le basi dei dati Questi tre componenti possono essere allocati o sul server o sul client determinando un sistema a “Server Pesante” o “Client Pesante” a seconda di dove vengano allocati il numero maggiore di componenti. Esempi Client Pesante : File Server, DataBase Server dove sw di interfaccia e di applicazione risiedono sul client; Server Pesante : Groupware Server, Transaction Server dove sw di applicazione e di gestione delle basi dei dati risiedono sul server. Sistemi Peer-to-Peer C/S Esistono anche sistemi più flessibili Peer-toPeer C/S dove il generico nodo della rete può funzionare sia da client che da server, cambiando addirittura identità nel corso di una elaborazione se necessario. Esempi di sistemi Peer-to-Peer Client-Server sono quelli che supportano le famiglie di protocolli TCP/IP. I componenti sw di un sistema C/S (componenti addizionali) Oltre ai tre componenti base esistono altri componenti sw addizionali il cui insieme è detto middleware: sw di rete (sistemi operativi per la gestione della rete); sw di comunicazione fra i nodi (protocolli); sw per applicazioni high level (es. X-Open DTP per il colloquio tra DBMS eterogenei all’interno di una stessa transazione). Questi componenti possono essere allocati sia sul server che sul client. Configurazioni ClientServer Parte I Con le varie combinazioni di componenti sw si vengono a creare le seguenti configurazioni : Presentazione Distribuita : la logica della base dei dati e delle applicazioni risiede sul server e il client si occupa della presentazione grafica delle informazioni, cioè della loro codifica, mentre la logica delle interfacce utente risiede sul server Presentazione Remota : rispetto alla precedente sul client risiede anche la logica delle interfacce utente; la rappresentazione grafica è allestita dal Client sulla base dei dati trasmessi dal server attraverso la rete Configurazioni Client-Server Parte II Logica Distribuita : il server si occupa della gestione delle basi dei dati e delle funzioni di controllo; elabora le richieste formulate dai client, che hanno la gestione delle interfacce utente e dell’interfaccia verso il server per trasferire le interrogazioni degli utenti. Il sw di applicazione risiede sul server. Gestione dei dati remota : esistono fonti esterne usate come Data Source. I Server acquisiscono i dati da queste fonti per generarne altri disponibili ai client attraverso specifiche applicazioni. Configurazioni Client-Server Parte III Base di Dati Distribuite : le basi dei dati sono distribuite tra server e client e quindi anche i client hanno il sw per la gestione delle basi dei dati. La soluzione più tipica è comunque quella che assegna i sw di interfaccia utente al client, quelli per la gestione delle basi dei dati al server (dove spesso risiede anche la base dei dati). I dati statici sono allocati sul client per ridurre il sovraccarico del server e della rete. Collegamenti tra i Componenti sw I collegamenti più usati per i tre componenti base e per quelli del middleware sono : le pipeline usate per lo più in ambienti Unix per collegare stazioni che usano differenti sistemi operativi; le chiamate a procedura remota attraverso le quali vengono richieste le esecuzioni di procedure remote, residenti cioè su altri sistemi; interazioni SQL, tramite linguaggio SQL, usate per DBMS relazionali; l’Object Request Broker (ORB) : un mediatore di richieste di oggetti che coordina richieste e offerte, le cui caratteristiche sono definite dallo standard CORBA e che è usato in amcienti client-server object oriented. Progettazione di Sistemi Client-Server Nella progettazione di sistemi C/S ha trovato largo impiego il “Modello di Sviluppo Concorrente” anche detto “Concurrent Engineering”. Questo modello fissa una sequenza di stati : 1. INESISTENTE 4. IN ATTESA DI MODIFICHE 2. IN CORSO DI SVILUPPO 5. IN CORSO DI REVISIONE 3. IN ESAME 6. ACQUISITO 7. COMPLETATO Le Attività per la Progettazione Per un sistema Client-Server il modello concorrente stabilisce le attività inerenti al progetto del sistema e al progetto dei suoi componenti. Le attività per il progetto del sistema sono: progettazione assemblaggio utilizzo per il progetto dei suoi componenti : progettazione realizzazione Il Modello Concorrente Il modello concorrente si applica ad ognuna delle attività viste prima. Il passaggio in uno stato di una certa attività può produrre il passaggio di stato di un’altra attività ad essa correlata. Le attività del sistema e quelle dei componenti si svolgono in parallelo. 4. IN ATTESA DI MODIFICHE 1. INESISTENTE 2. IN CORSO DI SVILUPPO 5. IN CORSO DI REVISIONE 3. IN ESAME 6. ACQUISITO 7. COMPLETATO Progettazione dei Componenti All’interno della progettazione dei componenti per un sistema Client-Server attenzione particolare è dedicata a : la progettazione della Base dei Dati, tipicamente un RDBMS o una Base dei Dati OO; la progettazione dell’interfaccia utente il collaudo finale, che riveste un ruolo molto importante. Progettazione della Base di Dati La progettazione della Base di Dati rientra nel Ciclo di Vita di un sistema informativo, secondo lo schema che segue : REQUISITI PER DBMS STUDIO DI FATTIBILITA’ RICERCA E ANALISI DEI REQUISITI PROGETTAZIONE PROGETTAZIONE CONCETTUALE SCHEMA E/R PROGETTAZIONE LOGICA SCHEMA RELAZIONALE IMPLEMENTAZIONE VALIDAZIONE E COLLAUDO FUNZIONAMENTO PROGETTAZIONE FISICA SCHEMA FISICO DEL DBMS Base di Dati in Ambiente C/S La Base di Dati usata in un ambiente ClientServer, che vede la presenza di una rete, è necessariamente una Base di Dati distribuita. Diventa cruciale l’organizzazione dei dati in termini di loro formato e allocazione. Diventa altresì cruciale gestire l’accesso a questi dati in maniera efficiente e stabile nel tempo. Linguaggio SQL e RDBMS rappresentano un’ottima combinazione software-hardware per la risoluzione di questi problemi.