Protocolli del web

informazioni utiliPer la creazione di un sito è necessario, come abbiamo visto nell'articolo di bigham "Professionalità nel web" , avere una buona infarinatura di molte cose, tra cui quella dei protocolli del web.

Essi fanno parte dei protocolli di trasmissione, ovvero di tutto quell'insieme di regole di comunicazione che definiscono le modalità di scambio dei dati tra dispositivi (protocolli inter-rete).

Nell'articolo sopra citato si parla del protocollo TCP/IP, il quale è uno dei protocolli inter-rete più diffusi al mondo e su di esso si basa la comunicazione fra i nodi della rete Internet.

Ad ogni nodo della rete viene assegnato un indirizzo IP. L'indirizzo IP è composto da quattro numeri compresi tra 0 e 255 (es.:  151.97.39.155).

Osservazione: nelle le reti TCP/IP l'indirizzo IP del localhost è 127.0.0.1, infatti quando andiamo ad usare piattaforme per lo sviluppo del web (ambienti che contengono un server Web Apache, un server di di basi di dati MySQL, l'interprete di script PHP e l'interfaccia phpMyAdmin) come EasyPHP oppure XAMPP nel browser per richiamare il localhost si può utilizzare anche il suo indirizzo ip prefissato. Mediante DNS è possibile convertire gli IP address numerici in indirizzi mnemonici.

Sopra al protocollo TCP/IP possono viaggiare informazioni codificate secondo altri protocolli di comunicazione, come FTP, HTTP, HTTPS e Telnet, dei quali verranno approfonditi i primi tre.

HTTP

Acronimo di HyperText Transfer Protocol. Consente l'accesso a documenti ipertestuali in cui vengono realizzati dei link tra file di vario genere (testi, file multimediali e altro) fisicamente residenti anche su host differenti.
È gestito dal server HTTP residente sugli host che intendono essere i "fornitori di informazioni".
Per usare queste informazioni si utilizza il browser (che rappresenta il client) il quale riesce ad interpretare le informazioni che il server gli invia.
Caratteristiche principali:
  • HTTP è un protocollo "stateless": ad ogni richiesta si effettua una connessione al server che viene chiusa al termine del trasferimento dell'oggetto richiesto (pagina HTML, immagine, ecc.);
  • usa di default la porta 80. (*)
Le risorse in rete vengono identificate tramite una URL (Universal Resource Locator). In generale una url la scrivo così: protocollo://host.dominio:porta/documento , per esempio:
Analizziamo ora i diversi oggetti che sono coinvolti con questo protocollo.
Il server HTTP
Gira su un server in attesa che gli arrivi una richiesta di connessione sul suo socket (cioè sulla porta).
Una volta arrivata la richiesta, invia al client le risorse disponibili localmente e richiama alcune procedure esterne (se richieste) mediante la CGI (Common Gateway Interface) per scambiare parametri e ottenere in risposta delle informazioni (tipicamente in html).
In pratica un server HTTP ha il ruolo di interfaccia tra il client remoto (il browser che fa la richiesta sul socket) e il sistema che lo ospita.

Il client HTTP
E' rappresentato, come detto, dal browser.
Esso legge ed interpreta l'output fornito dal server in formato HTML.
Visualizza le informazioni in formati a lui noti (per esempio può far vedere un'immagine PNG o GIF, un testo, un filmato ecc ecc) oppure, se non riconosce il formato, rimanda a programmi esterni che possono essere presenti sulla macchina del client.

Interfaccia CGI
E' il canale di comunicazione tra un server HTTP e i software che girano sul sistema.
Consente di passare dei parametri ad un programma esterno attraverso, per esempio, una URL o un form. L'output della procedura viene spedito al client.
Per il passaggio dei parametri esistono due metodi:
  • GET : i parametri vengono inseriti nell'url che viene inviata al server e quindi sono accessibili da tutti;
  • POST: non prevede il passaggio in chiaro dei parametri o, per essere più precisi, il passaggio dei parametri avviene all'interno dell'intestazione del messaggio HTTP inviato al server.

HTTPS

Acronimo di Hypertext Transfer Protocol over Secure Socket Layer. E' nato per usare un protocollo di crittografia asimmetrica con l'HTTP, quindi, come possiamo ben capire, non è proprio un protocollo ma un'integrazione.
Il suo scopo è quello di garantire i trasferimenti di dati nel web in modo riservato e sicuro, in modo da impedire intercettazioni che potrebbero essere effettuati tramite per esempio la tecnica MITM (man in the middle).
Differenze con l'http:
  • la porta di default è la 443;
Nei browser web, la URI (Uniform Resource Identifier) che si riferisce a tale tecnologia è analoga alle URI http, basta aggiungere https invece di http.

A questo link possiamo leggere come poteva essere utilizzato un certificato SSL con Joomla 1.0.
Ovviamente questo non vale più, infatti sono stati assunti dei criteri di sicurezza migliori.

Dalla versione 1.5.9 nella configurazione globale, nella scheda "server" è comparso il parametro "forza SSL". Questo parametro può assumere tre valori:
  • nessuno (valore di default);
  • solo amministrazione;
  • tutto il sito.
Bisogna stare attenti a come viene settato: infatti quel parametro serve per attivare questo protocollo sul sito Joomla, ma è necessario essere in possesso di un certificato digitale associato al dominio.

FTP

Acronimo di File Transfer Protocol. Il suo scopo principale è, come si può ben capire dal nome, il trasferimento dei file su una rete TC/IP.
Più precisamente questo protocollo permettere una condivisione di file tra terminali remoti, permettere l'indipendenza ai sistemi di file dei client e server e di trasferire dati in modo efficace.
Usa il modello client/server.
Per la connessione FTP esistono due canali di trasmissione:
  • il canale di controllo o di comando (che usa la porta 21);
  • il canale per i dati (che usa la porta 20).
E' ormai un protocollo datato, ma la sua semplicità nell'uso dei pochi comandi (per esempio per impostare permessi, eliminare o spostare file, uploadare o scaricare e così via) è stata la chiave del suo successo.
Per ovviare ai problemi dovuti all'uso di due canali e porte distinte è stato implementato il supporto per le connessioni passive: connessioni avviate dal client e non dal server in modo da evitare problemi legati a firewall o all'architettura della rete utilizzata.
Nel canale dati di tipo attivo sarà il client ad aprire una porta e, tramite il canale comandi, renderà noto il numero di tale porta al server aspettando che quest’ultimo si connetta.
Se, invece, il canale dati è di tipo passivo sarà il server ad aprire una porta e il client si dovrà connetterà al server.
Nella maggior parte dei client la connessione di default è passiva.
La sicurezza tra connessioni attive e passive è, come possiamo immaginarci, diversa. l principale problema con FTP in modalità attiva cade sulla configurazione del firewall nel lato client della connessione ftp.

Il trasferimento di file tramite FTP può essere anonimo oppure con account.
Il primo caso viene utilizzato per il prelievo di file ad accesso pubblico, come per esempio una società o un'università. In questo caso abbiamo un login, che nella pratica consiste nell'ingresso in un computer remoto e tale accesso viene effettuato senza disporre di un nome utente e di una password propria, quindi anonimamente.
Ovviamente, per motivi di sicurezza, colui che accede tramite FTP non avrà totale accesso al computer remoto, ma potrà navigare solo in alcune directory e leggere i file presenti, ma non potrà cancellarli o modificarli.

Se invece un utente utilizza FTP con account di solito ha pieno accesso ad una determinata directory, nella quale potrà non solo leggere ma anche inserire, modificare e cancellare i file.
Un caso molto comune è quando usiamo FTP nei nostri siti.

I programmi client per utilizzare FTP sui vari sistemi operativi si dividono in due categorie:
  • quelli con interfaccia a caratteri;
  • quelli con interfaccia grafica.

I primi sono magari più ostici per chi non ha molta esperienza ma i risultati sono i medesimi.

FTP in modalità carattere mette a disposizione tutta una serie di comandi. Nella tabella ne mostro alcuni:

Comando

Descrizione

ascii

è il comando inverso rispetto a 'bin'. Imposta la trasmissione in modalità testo

bin

imposta la trasmissione in modalità binaria, ovvero la modalità adatta a programmi, immagini digitali, ecc. Alcuni server FTP commutano automaticamente in 'binary mode' quando si preleva uno di questi file

cd nome_directory

cambia directory.

 lcd nome_directory cambia la directory locale (quella del proprio PC).

delete nome_file

cancella un file

dir

visualizza il contenuto di una directory

dir abbreviazione*

se si vogliono visualizzare solo i file che iniziano per l'abbreviazione scritta.

get nome_file

preleva un file.

put nome_file questo comando consente di trasferire un file dal proprio computer al server FTP cui si è connessi.
 pwd visualizza il nome (e il path) della directory nella quale ci si trova

 help

fornisce l'elenco dei comandi disponibili (con help nome_commando invece da la spiegazione del comando)

 quit chiude una sessione FTP.

Dobbiamo però dire che le interfacce grafiche userfriendly stanno avendo la meglio nel mondo del software sia di rete che non, così anche per FTP sono ormai disponibili numerosi programmi che permettono ad esempio col semplice drag and drop il prelievo o il caricamento dei file.

FTP su linux
Poniamo di volersi connettere, tramite Linux, al sito ftp anonimo lab.unirome.edu (link di fantasia) per scaricare dei file.
Basta digitare, al prompt dei comandi:
    $ ftp lab.unirome.edu
Il programma ftp tenterà di connettersi a lab.unirome.edu. Un altro modo per fare ciò è quello di eseguire ftp dal prompt dei comandi senza parametri, usando poi il comando open, con il nome del sito come argomento:
    $ ftp
ftp> open lab.unirome.edu

E' poi necessario utilizzare vari comandi, come quelli descritti sopra o che è possibile reperire tramite un qualsiasi motore di ricerca.

FTP tramite browser
E' possibile utilizzare FTP anche attraverso il browser. In tal caso basta digitare al post dell'url:

E poi utilizzare i relativi comandi (vedi la tabella sopra).
Bisogna stare attenti al tipo di browser che si usa e alla sua versione, basta pensare per esempio che la versione 7 di Internet Explorer ha modificato le modalità con cui è possibile utilizzare l'FTP.

FTP tramite TELNET

E' possibile accedere ad FTP anche senza utilizzare un client ma usando TELNET (TELetype NETwork).


Il plugin di Firefox: FireFTP
Anche il browser Firefox mette a disposizione un componente per l'uso, tramite interfaccia grafica, del protocollo FTP: FireFTP.
Tale componente lo trovate a questo link.
Ecco un breve accenno a come si usa:
  1. una volta che abbiamo i nostri dati per l'accesso ftp clicchiamo nella finestra in alto a sinistra dove c'è scritto "Manage Accounts" e scegliamo "Create an account";
  2. nella finestra che compare inserire i dati necessario per l'autenticazione;
  3. una volta creato il nuovo profilo FTP ritornare in alto a sinistra e scegliamo il nostro account;
  4. cliccare sul bottone Connect;
  5. per caricare e scaricare file basta usare il drag e drop (oppure le frecce verdi) trascinandoli nella cartella giusta.
In basso a questa interfaccia abbiamo due sezioni:
  • log: mostra i messaggi, per esempio quello di login, di tipo di connessione, di caricamento ecc ecc
  • queue: mostra l'elenco dei file in coda per l'upload o per il download.


Abbiamo così visto alcuni dei principali protocolli necessari per il trasferimento di pagine web e, più in generale, di file.
La conoscenza di questi protocolli e il loro utilizzo (in particolare dell'ultimo esposto) è fondamentale per colui che deve costruire un sito, basta pensare che già prima dell'installazione di Joomla è necessario caricare i nostri file nella root del sito o in un'altra cartella.

* Una porta è il mezzo che permette ai protocolli TCP (e UDP) di gestire dei flussi multipli di dati attraverso una unica connessione fisica alla rete. Una porta, che viene codificata con 16 bits, viene attribuita ad una applicazione. Essa viene combinata con l'indirizzo IP e tale combinazione è chiamata socket.
Le porte che vanno da 0 a 1023 sono le porte riconosciute o riservate ("Well Known Ports"): sono, in maniera generale, riservate ai processi di sistema o a programmi eseguiti da utenti privilegiati. L'amministratore di rete può tuttavia legare dei servizi alle porte di sua scelta. Le porte che vanno da 1024 a 49151 sono dette porte registrate ("Registered Ports"), mentre quelle che vanno da 49152 a 655535 sono le porte dinamiche e/o private ("Dynamic and/or Private Ports").

Link utili:

http://www.w3.org/Protocols/
RFC protocollo HTTP
RFC protocollo HTTPS
RFC protocollo FTP
How can I set the administrator directory to use an SSL server
Tutorial per SSL
Concetti sui protocolli di comunicazione


Scritto da ventus85 (http://www.ventus85.com/)
commentaCommenta questo articolo sul forum