Nel nostro contesto utilizziamo dei protocolli per scambiarci informazioni tra programmi in un ambiente di rete. Sono stati definiti tantissimi protocolli per svolgere le operazioni più diverse, ad esempio: per trasferire dei file possiamo usare SFTP, SSH per terminali remoti sicuri, HTTP per trasferire ipertesti, SMTP per inviare la posta e IMAP e POP3 per leggerla.
Nel protocollo oltre alle regole per comunicare viene specificato anche quale (o quali) formati vanno usati per rappresentare le informazioni che vogliamo scambiare, ci occuperemo di quelli più diffusi che si usano in ambito informatico partendo proprio da come si identifica un formato dei dati presenti in un file (che sia un file o un pacchetto di dati inviati in rete non cambia nulla): utilizzando il suo tipo mime.
Un media type conosciuto anche come "Multipurpose Internet Mail Extensions" o "tipo mime" indica la natura e il formato di un file. Nella sua forma più sempllice si scrive tipo/sottotipo.Degli esempi chiarificano la situazione: i file che contengono pagine
HTML sono di tipo text/html
sarebbe a dire appartengono al gruppo "text"
e in particolare sono "html", le immagini jpeg sono di tipo image/jpeg
.
Torniamo però allo scambio dei dati: uno dei primi formati usati per lo scambio dei dati
è il formato CSV (text/csv): questo formato è molto comodo perché è un formato di testo e
è adatto a rappresentare i valori presenti in una tabela.
I dati presenti in una singola cella vengono rappresentati in formato testo,
ogni cella è separata dalla successiva da una virgola e ogni riga termina con
un "a capo". Questo formato è a tutt'oggi molto usato,
possiamo facilmente avere un esempio per una agenda:
Nome,Cognome,Telefono Mario,Rossi,349771188 Luigi,Bianchi,374776749
È anche possibile che un protocollo utilizzi dei file binari
(application/octet-stream
), formati in cui si definisce byte per
byte cosa deve contere un file, erano abbastanza comuni formati come questo:
- ogni informazione occupa 50 byte
- i byte dallo 0 al 19 sono il nome
- i byte dal 20 al 40 sono il cognome
- i byte dal 41 al 49 sono il numero di telefono
Guardando questi due esempi possiamo trovare due punti deboli:
nel text/csv se ho una virgola nel nome o nel cognome sono nei guai...
nel application/octet-stream se ho un cognome molto lungo non posso scriverlo.
Il primo problema è falso in realtà:
il formato csv è un pochino più complesso e non ha problemi con le virgole
ma il secondo problema purtroppo è un problema reale.