Scarica Appunti Informatica: teoria e Python e più Schemi e mappe concettuali in PDF di Elementi di Informatica solo su Docsity!
LABORARIO DI INFORMATICA
01 - Introduzione
Informatica Dal dizionario Treccani: Informàtica : l’insieme dei vari aspetti scientifici e tecnici che sono specificamente applicati alla raccolta e al trattamento dell’informazione e in particolare all’elaborazione automatica dei dati, come sussidio e supporto alla documentazione, alla ricerca e allo studio nei vari settori della scienza, della tecnica, delle attività economiche, sociali, e anche pratiche. Definizione della Association for Computing Machinery: L’informatica è lo studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione.
Un po’ di storia… Costruire sistemi automatici di calcolo è sempre stata una grande ambizione dell’uomo, per necessità, come:
- Astronomia e navigazione;
- Commercio e agricoltura;
- Architettura;
- Strumenti bellici…
- 1837: La macchina analitica di Babbage: prima macchina programmabile e quindi pensata per eseguire compiti generici. Utilizzava un linguaggio simile al moderno codice assembly. Venne costruita soltanto alla fine del 900.
- 1938: Konrad Zuse progetta e realizza lo Z1, calcolatore programmabile meccanico binario ad azionamento elettrico, con limitate funzionalità.
- 1941: Konrad Zuse progetta e realizza lo Z3, il primo calcolatore elettromeccanico programmabile binario con tecnologia a relè.
- 1946: J. Presper Eckley e John Mauchly guidano il progetto di ENIAC, primo calcolatore elettronico programmabile non specifico.
Informazione L’informatica studia la rappresentazione e l’elaborazione dell’informazione:
- Dati numerici;
- Dati testuali;
- Immagini, suoni, video. Nei calcolatori tutti i dati sono rappresentati in forma digitale, quindi discreta, ed elaborati tramite algoritmi.
Algoritmi Che cos’è un algoritmo?
- Una sequenza finita di passi effettuabili per risolvere una classe di problemi in un tempo finito;
- Il nome deriva da quello del matematico persiano Al-Khuwarizmi (IX secolo) che introdusse il numero zero e la notazione posizionale in occidente;
- Nel Medioevo, il termine algorismus indicava la tecnica di effettuare calcoli con numeri arabi. Elementi di un algoritmo:
- Passi elementari: azioni atomiche non scomponibili in azioni più semplici;
- Processo (esecuzione): sequenza ordinata di passi;
- Dati in ingresso: istanza del problema;
- Dati in uscita: soluzione. Proprietà degli algoritmi:
- Finitezza: numero finito di passi elementari;
- Non ambiguità: i risultati non variano in funzione di chi (macchina o persona) esegue l’algoritmo;
- Realizzabilità: eseguibile con le risorse disponibili;
- Efficienza: preferibile uso minimo delle risorse. Algoritmo:
- Metodo per la risoluzione di un problema Programma;
- Traduzione di un algoritmo in un linguaggio di programmazione interpretabile dal calcolatore;
- Processo;
- Programma in esecuzione sul calcolatore.
Macchina di Turing Alan Turing (1912-1954) è un matematico inglese, tra i fondatori dell’informatica. Che costruì la “Macchina di Turing”:
- Modello matematico di una macchina capace di eseguire calcoli su numeri e simboli sulla base di un insieme di regole che definiscono il comportamento;
- Prima idea di calcolatore generale programmabile.
Computabilità Tesi di Church-Turing: non esiste alcun formalismo capace di risolvere una classe di problemi più ampia della macchina di Turing. Quindi… Se un problema non può essere risolto dalla macchina di Turing, allora non è risolvibile. La macchina di Turing può essere considerata un modello formale dei computer moderni.
Esistono classi di problemi irrisolvibili:
- Teorema di incompletezza di Godel;
- Esistono proposizioni né dimostrabili né confutabili. Anche tra i problemi risolvibili ci sono problemi più o meno difficili ovvero che richiedono molto tempo o molte risorse computazionali per essere risolti:
- Problemi risolvibili vs. non risolvibili (computabilità);
- Problemi trattabili vs. non trattabili (complessità).
I calcolatori moderni Evoluzione tecnologica:
- Dall’analogico al digitale;
- Dalle valvole termoioniche ai transistor;
- Legge di Moore: il numero di transistor presenti su un microchip raddoppia ogni 18 mesi.
Località in memoria Principio di località spaziale:
- Quando la CPU esegue una certa istruzione, è probabile che le successive istruzioni da seguire saranno in posizioni vicine in memoria. Principio di località temporale:
- Durante l’esecuzione di un programma, si accede molto frequentemente alle stesse zone di memoria.
BUS
Bus Dati:
- Dati da utilizzare come operandi. Bus Comandi:
- Comandi dalla CPU verso i vari dispositivi. Bus Indirizzi:
- Indirizzi di memoria (es. dove leggere/scrivere dati).
Architettura generale
Algebra di Boole Nel 1854 il matematico e logico britannico George Boole pubblica il trattato “Le leggi del pensiero”. Si tratta di un trattato che ha lo scopo di studiare le leggi del ragionamento umano attraverso la logica, dando alla logica una veste algebrica. Formalismo che opera su variabili dette booleane:
- Le variabili booleane posso assumere soltanto due valori: vero e falso;
- Sulle variabili booleane si possono definire delle funzioni, dette funzioni booleane;
- Anche le funzioni booleane possono assumere soltanto i due valori vero e falso;
- Le funzioni o operatori booleani di base sono and (congiunzione), or (disgiunzione) e not (negazione). Tabella di verità:
- Definisce una funzione booleana, indicando il valore risultante per ogni configurazione degli ingressi.
Operatori logici fondamentali:
- L’algebra di Boole si basa su operatori che possono essere combinati in espressioni per definire funzioni. Operatori e porte logiche:
Instruction Set Architecture Come si coordinano hardware e software? Come posso sapere quali istruzioni sono disponibili? Instruction Set Architecture (ISA):
- Interfaccia ben definita tra hardware e software;
- Definisce tutto ciò che è necessario per scrivere programmi in linguaggio macchina;
- Costituisce il vocabolario delle possibili istruzioni.
Linguaggi di programmazione I programmi sono scritti in linguaggi di programmazione, che sono linguaggi formali con cui è possibile dare istruzioni ad un computer. Un computer esegue istruzioni definite secondo una certa ISA: questo è il linguaggio macchina (il livello più vicino all’hardware, ovvero una sequenza di bit). Abbiamo bisogno di rappresentazioni più astratte! Linguaggi di basso livello (es. Assembly):
- Generalmente corrispondenza biunivoca con il linguaggio macchina, specifico di un’architettura, quindi non portabile. Linguaggi di alto livello (es. C, C++, Java, Python, …):
- Linguaggio più astratto e distante dall’hardware;
- Non c’è un linguaggio migliore di un altro;
- Tipicamente tutti computazionalmente equivalenti.
Compilatori e interpreti Come si traduce un linguaggio di alto livello in linguaggio macchina eseguibile dal calcolatore? Questa operazione può essere effettuata tramite un compilatore o un interprete a seconda del linguaggio:
- Linguaggi compilati (C, C++);
- Linguaggi interpretati (Javascript, Matlab);
- Linguaggi compilati su bytecode (Java, Python). La distanza tra codice di alto livello e codice di basso livello viene solitamente definita semantic gap ed è colmata dal compilatore. Il processo di compilazione non è univoco: ad esempio, ci sono molti compilatori per il linguaggio C. Ogni compilatore riesce a compiere diverse forme di ottimizzazione e quindi influenza le prestazioni! Virtual Machine (VM):
- Il codice di alto livello viene tradotto da un compilatore Just-In-Time (JIT) in un bytecode che è simile al codice macchina (poco più astratto);
- Il bytecode viene eseguito sulla VM, di cui esistono versioni per i diversi sistemi operativi;
- In questo modo si aumenta la portabilità del codice. Vantaggi dei linguaggi interpretati e bytecode:
- Sono indipendenti dalla piattaforma. Svantaggi dei linguaggi interpretati:
- Tipicamente meno efficienti di quelli compilati;
- I compilatori possono essere utili ai programmatori.
Compilatori Quando si scrive un programma, posso presentarsi diverse tipologie di errore:
- Errori di sintassi;
- Errori di semantica statica;
- Errori di semantica dinamica. Errori di sintassi: Si verificano quando si scrivono espressioni non legali, ovvero che non seguono le regole della grammatica del linguaggio. Questo tipo di errore è segnalato dal compilatore. Errori di semantica statica: Si verificano quando frasi sintatticamente corrette sono errate in quanto prive di significato. In questo caso il compilatore può dare qualche aiuto. Esempio: si utilizza una variabile non dichiarata… Errori di semantica dinamica: Si verificano quando all’esecuzione del programma si verifica un malfunzionamento (runtime errors). In questo caso il compilatore non offre aiuto. Sono gli errori più difficili da identificare e più critici. Il programma può:
- …dare la risposta corretta;
- …dare la risposta corretta solo apparentemente;
- …terminare con errore (crash);
- …non terminare mai;
- …dare la risposta sbagliata.
LABORARIO DI INFORMATICA
03 - Rappresentazione dei dati
Sistemi di numerazione Notazione non posizionale:
- Numeri romani: i simboli hanno un ruolo che dipende dalla loro posizione relativa. Notazione posizionale:
- Numeri arabi: i simboli hanno un ruolo che dipende dalla loro posizione assoluta. Numero romano XIII:
- I tre simboli I corrispondono tutti al valore 1;
- Il simbolo X corrisponde al valore 10;
- Si sommano i valori, ottenendo quindi 13. Numero romano IX:
- Il simbolo X corrisponde al valore 10;
- Il simbolo I corrisponde al valore 1, ma precede X;
- È necessario sottrarre 1 da 10, ottenendo quindi 9. Sistema decimale:
- Numero 374 = 3 * 10^2 + 7 * 10^1 + 4 * 10^0 Sistema in base B:
- cK-1 … c 1 c 0 = cK-1 * BK-1^ +… + c 1 * B^1 + c 0 * B^0 In base B l’alfabeto dei simboli è costituito da un numero B di cifre che vanno da 0 a B-1. In base 2 l’alfabeto dei simboli è costituito soltanto dai due simboli 0 e 1. In base 16 l’alfabeto dei simboli è costituito dai simboli 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. I calcolatori rappresentano qualsiasi tipo di informazione in base 2, ovvero con un codice binario. Ogni elemento di una sequenza binaria è detto bit (binary digit), ed una sequenza di 8 bit è detta byte. Esistono regole di conversione per trasformare un numero da una base in un’altra. Sistema Internazionale, potenze del byte:
n = cK-1 * BK-1^ +… + c 1 * B^1 + c 0 * B^0 n = c 0 * B^0 + c 1 * B^1 + … + cK-1 * BK- n = c 0 + B * (c 1 + B * (c 2 + B * (…) ) ) La cifra c 0 è il resto della divisione di n per la base B. Le altre cifre si ottengono iterando il procedimento. Le cifre vengono prodotte dalla meno significativa alla più significativa (least/most significant bit: LSB/MSB). Esempio: (base B=2) Esempio: (base B=8) Esempio: Sistema esadecimale (base B=16)
Conversione da binario a esadecimale:
- Si raggruppano i bit a gruppi di 4;
- Si sfrutta la tabella precedente;
- ( 0110110101111100 ) 2 = ( 6 D 7 C) 2
Conversione da esadecimale a binario:
- Per ogni cifra esadecimale si generano 4 bit;
- Si sfrutta la tabella precedente;
- • (A 5 E) 2 = ( 101001011110 ) 2
Internamente ad un calcolatore, tutte le informazioni sono rappresentate come sequenze di bit. Il valore che viene assegnato ad una sequenza di bit dipende dalla modalità (istruzione, programma, etc.) con cui si accede a tale sequenza! Una stessa sequenza di bit può essere interpretata come carattere, numero, istruzione, etc.…
Rappresentazione dei numeri Rappresentazione binaria di un intero senza segno:
- Dato il numero N, occorrono K bit dove 2K^ > N;
- Con K bit posso codificare gli interi tra 0 e 2K-1. Un calcolatore usa un numero fisso di bit:
- Ci sono quindi casi di valori non rappresentabili;
- Si parla di overflow e underflow. PRINCIPALMENTE PER NUMERI IN VIRGOLA MOBILE Rappresentazione binaria di un intero senza segno:
- Un valore tipico di K è 32 (ovvero 4 byte);
• Big Endian vs. Little Endian (ordine dei byte).
Byte più significativo a sinistra: Big-Endian. Byte più significativo a destra: Little-Endian. Rappresentazione binaria di un intero senza segno;
- Esempio su 4 bit;
- Massimo numero rappresentabile: (15) 10 = (1111) 2. Rappresentazione binaria di un intero con segno: Soluzione 1: codifica con segno e valore assoluto
- Primo bit = 0 se il numero è positivo
- Primo bit = 1 se il numero è negativo
- Svantaggio #1: due codifiche per lo zero
- Svantaggio #2: operazioni non automatizzabili…
- Occorrono algoritmi ad hoc per fare le operazioni
- Esempio: (+6) + (-6) = -12??? Rappresentazione binaria di un intero con segno: Soluzione 2: complemento a 2
- Il MSB ha peso -2K-
- n = - cK-1 * 2K-1^ +… + c 1 * B^1 + c 0 * B^0
- Il numero è negativo se e solo se cK-1 vale 1
- Rappresento tutti gli interi in [- 2K-1, 2K-1^ - 1]
- Come si calcola il complemento a 2 di un numero?
- Si invertono tutti i bit (da 0 a 1 e da 1 a 0)
- Si aggiunge 1 al risultato
- Il procedimento inverso ricalcola il numero originario NOTA: IL MINIMO NUMERO RAPPRESENTABILE (1000…0000) HA COME COMPLEMENTO A DUE SÉ STESSO
Esempio: Complemento a 2: a = (30) 10 = (00011110)2C b = (22) 10 = (00010110)2C a - b = (8) 10 = (00001000)2C -b = (-22) 10 = (11101010)2C a + (-b) = (00001000)2C
Vantaggi del complemento a 2:
- Una sola rappresentazione dello zero;
- Unificazione del trattamento di somme e sottrazioni;
- Semplificazione dell’unità logico-aritmetica (Arithmetic Logic Unit, ALU) nel calcolatore. Overflow nella rappresentazione in complemento a 2:
- In generale, si parla di overflow quando il risultato di un’operazione non è rappresentabile;
- Per gli interi senza segno, questo corrisponde ad avere valore 1 sul bit di riporto (bit di overflow);
- Per gli interi con segno, questo corrisponde ad ottenere un numero positivo come somma di due numeri negativi, o viceversa. Con 4 bit posso rappresentare l’intervallo [-8,7] quindi i due valori 7+1 e (-4 + (-7)) eccedono la dinamica della rappresentazione. Rappresentazione binaria dei numeri in virgola mobile:
- Come si codifica in base 2 una parte frazionaria?
- Algoritmo delle moltiplicazioni successive
- Algoritmo delle moltiplicazioni successive
Numeri non normalizzati:
- Codifica per gestire numeri più piccoli (intorno di 0)
- I 23 bit della mantissa codificano la parte frazionaria
- Quindi 2-23^ è proprio la più piccola mantissa
Rappresentazione caratteri Rappresentazione dei caratteri
- Si associa un codice binario ad ogni carattere
- Codice standard ASCII (1968): 128 caratteri [0-127]
- I codici superiori a 127 possono variare secondo la codifica adottata (es. ISO 8859-1: alfabeto latino)
LABORARIO DI INFORMATICA
04 - Dati multimediali
Media digitali Nel trasformare un dato analogico in un dato digitale occorre tenere conto di due operazioni fondamentali:
- Campionamento: partizionamento di un flusso continuo di informazioni in quantità discrete;
- Quantizzazione: rappresentazione di una quantità (continua) utilizzando un valore intero (discreto).
Immagini digitali Un’immagine è una rappresentazione spaziale di un oggetto o di una scena. Da un punto di vista matematico, si può pensare come una funzione che associa ad ogni punto la sua intensità luminosa. Per essere rappresentata nelle immagini digitali, questa funzione deve campionata ad intervalli discreti, e l’intensità luminosa deve essere quantizzata. La quantizzazione di un’immagine è collegata alla risoluzione cromatica associata ad ogni punto (pixel), data dal numero di bit usati per il segnale quantizzato Esempio: un’immagine a livelli di grigio codificata con N bit per pixel utilizza 2N diversi livelli di grigio Come rappresentare il colore…?
Esistono tre metodi fondamentali per memorizzare e visualizzare un’immagine digitale:
- Raster;
- Vettoriale;
- Meta. Immagini raster: L’immagine è suddivisa in unità fondamentali (pixel), ciascuno rappresentato con una sequenza di bit. Esempi di formati raster: GIF, JPG, BMP, etc. Un ingrandimento di un’immagine raster non preserva la qualità (l’immagine appare sgranata). Immagini vettoriali: L’immagine è definita come un insieme di forme matematiche (linee, curve, punti, etc.) ed è la loro rappresentazione che viene memorizzata. Quando un’immagine viene ingrandita, non si perde in qualità! Inoltre, la dimensione del file è limitata! Esempi di formati vettoriali: SVG, EMF, HGL, etc. Immagini meta: Combinano rappresentazioni raster e vettoriali Quando si ingrandisce un’immagine meta, soltanto le sue componenti vettoriali preservano la qualità
Colore La luce è un’onda elettromagnetica, il colore è un effetto percepito dal nostro sistema visivo in funzione della lunghezza d’onda (o frequenza). Spettro del visibile: 350 nm — 780 nm. Sotto i 350 nm si hanno gli ultravioletti. Sopra i 780 nm si hanno gli infrarossi. Nella gamma intermedia tutti i colori che percepiamo:
L’occhio umano ha fotorecettori di due tipi:
- Coni: sensibili al colore, situati al centro dell’occhio;
- Bastoncelli: visione notturna, periferia dell’occhio.
Modelli di colore Come tradurre i colori in dati numerici? Colori RGB Si mischiano raggi luminosi dei tre colori fondamentali (Red, Green, Blue) ciascuno con la sua intensità. Ogni colore è una terna di valori (modello additivo).
Audio digitali Anche la rappresentazione digitale dell’audio necessita di effettuare operazioni di campionamento e quantizzazione del segnale analogico. MPEG-1 encoding:
- Livello I - uscita con compressione > 128 Kbit/s
- Livello II - uscita con compressione > 64 Kbit/s
- Livello III - uscita con compressione < 64 Kbit/s mp
Gestione periferiche Il sistema operativo permette l’interazione tra i processi in esecuzione e le periferiche del sistema:
- Un driver è un programma (software) che permette l’accesso ad una determinata periferica;
- All’avvio, il BIOS (Basic I/O System) offre programmi (firmware) per l’accesso alle periferiche.
BIOS
Avvio del computer:
- Diagnostica e inizializzazione dispositivi interni;
- Controllo memoria;
- Verifica dispositivi collegati, segnalazione errori;
- Avvio del sistema operativo (dal boot sector). Impostazioni del computer:
- Data e ora, quantità di memoria, tipo dischi, …
Polling In generale, le periferiche sono caratterizzare da:
- Velocità di gestione dati molto minore della CPU;
- Invio dati sporadico e imprevedibile. È necessario un meccanismo per gestire le periferiche mentre la CPU compie altre attività. Una possibilità (polling) prevede che la CPU richieda continuamente la disponibilità dei dati alle periferiche tramite continue interrogazioni: troppo dispendioso.
Interruzioni Con il meccanismo delle interruzioni, la CPU nel suo stato normale si disinteressa delle periferiche:
- Una periferica richiede dati: attiva una linea verso la CPU, generando una interruzione;
- Il processo in esecuzione viene sospeso, si salva lo stato dei registri per riprendere successivamente;
- Si esegue il cosiddetto interrupt handler, ovvero si effettua il trasferimento dati con la periferica;
- Si riattiva il processo sospeso.
File system Organizzazione logica dei dati in struttura ad albero:
- Radice: unità disco;
- Nodi intermedi: cartelle;
- Foglie, o nodi terminali: singoli file.
Esempio: Percorsi dei file — Assoluti:
- C:\Utenti\Marco\Documenti\Report.pdf
- /home/marco/Documents/Report.pdf Percorsi dei file — Relativi:
- Report.pdf
- ../Documenti/Report.pdf
Attributi dei file — Assoluti:
- Nome (associato a estensione che indica il tipo);
- Dimensione (in byte);
- Modalità di accesso;
- Data creazione;
- Data ultimo accesso. Tra i compiti più importanti del sistema operativo:
- Semplificazione delle operazioni ad alto livello;
- Condivisione dati e protezione da accessi esterni.
Interprete dei comandi Interfaccia che permette di eseguire programmi e funzioni del sistema operativo:
- Riceve comandi dall’utente;
- Interpreta richiamando le funzioni opportune;
- Modalità testuale o grafica.
Sistema multi-utente Meccanismi per identificare gli utenti:
- Attribuire username e password agli utenti. Ciascun utente deve essere associato a...
- Un proprio ambiente personalizzato;
- Ruoli e permessi per accedere alle risorse;
- Un insieme di risorse dedicate.
LABORARIO DI INFORMATICA
06 - Internet e WWW
Reti di calcolatori Una rete di calcolatori è una rete di comunicazione che collega tra loro dispositivi di calcolo per:
- Condividere informazioni;
- Condividere e replicare risorse;
- Costruire sistemi di calcolo su larga scala. Classificazione in base alla dimensione:
- LAN — Local Area Network;
- MAN — Metropolitan Area Network;
- WAN — Wide Area Network. Prestazioni solitamente basate sul throughput, o larghezza di banda: quantità di informazione trasportata nell’unità di tempo (bit/s).
Mezzi fisici
- Wired: ✦ Doppino telefonico (56 Kbit/s); ✦ ADSL (640 Kbit/s, fino ad alcuni Mbit/s); ✦ Cavo coassiale (10 Mbit/s); ✦ Fibra ottica (Tbit/s).
- Wireless: ✦ Bluetooth, WiFi, etc.
Topologia delle reti
Interconnessioni Come connettere una rete di computer ad altre reti.
Come connettere una rete di computer ad altre reti:
- Gateway: apparato di confine, che instrada le informazioni tra diverse reti;
- Host: singolo nodo collegato alla rete. Internet è una rete delle reti di dimensione planetaria:
- Evoluzione di Arpanet nata nel 1969…
Indirizzo IP Ogni calcolatore nella rete deve essere identificato tramite un indirizzo univoco, detto indirizzo IP:
- Si basa sul protocollo TCP/IP (vedi più avanti…);
- Rete a commutazione di pacchetto: pacchetti di lunghezza fissa instradati tra i nodi della rete. Un indirizzo IP è costituito da una sequenza di quattro numeri compresi tra 0 e 255 (versione IPv4).
Protocolli Un protocollo è un insieme di regole per la comunicazione tra un programma (o componente del sistema operativo) in funzione su un calcolatore ed un corrispondente programma (o componente del sistema operativo) in funzione su un altro calcolatore:
- Come si inizia la comunicazione?
- Come si scambiano i dati?
- I protocolli di rete hanno diversi livelli di astrazione.
Architettura client/server In un’architettura di tipo client/server un programma o calcolatore offre un servizio (server) e un altro programma o calcolatore (client) utilizza tale servizio.
Porta Una porta è un identificativo logico che identifica il traffico di diverse connessioni su uno stesso computer:
- Numero a 16 bit usato sia da TCP sia da UDP;
- Serve ad inviare i dati ad una certa applicazione che sta “in ascolto” sul computer destinazione;
- Una porta tipicamente identifica un servizio;
- Esempio: 80/HTTP, 25/SMTP, …
World Wide Web Sistema per condividere informazioni ipertestuali. Uno dei modi più diffusi per usare la rete Internet:
- Consente agli utenti di pubblicare ed accedere a documenti HTML raggiungibili ad un certo indirizzo (URL) via il protocollo HTTP. Si basa sull’architettura client/server:
- Server web;
- Client, ovvero il browser.
HTTP
HyperText Transfer Protocol (HTTP) è un protocollo di livello applicazione per sistemi informativi distribuiti:
- Usato nel WWW fin dal 1990;
- Basato su un meccanismo richiesta/risposta;
- Flessibile, supporta varie tipologie di dati;
- Usa TCP/IP sulla porta 80;
- Si richiede l’accesso ad una risorsa tramite URL.
Una Uniform Resource Locator (URL) è un riferimento per una risorsa, che dipende da un certo protocollo:
- Esempio: http://www.unifi.it
- Può contenere una porta dopo il “:” (default 80)
- Può contenere il percorso relativo del file sul server
- Esempio: http://www.ietf.org:80/rfc/rfc2732.txt