La sintassi di alto livello di un URL è composta da due parti separate dal carattere :
scheme:scheme_specific_part
Queste due parti si formano in modo diverso a seconda della risorsa a cui si vuol far riferimento con l'URL.
In questo scritto tratteremo in
modo approfondito la formazione degli URL utilizzati
per la navigazione WEB, mentre accenneremo alla
formazione degli URL per l'acquisizione di altri servizi.
I concetti e le regole qui apprese e relative alla
formazione degli URL, saranno preziosi anche per chi si
voglia cimentare nella realizzazione dei documenti
ipertestuali attraverso i linguaggi di marcatura HTML o XHTML.
La parte chiamata scheme identifica il protocollo di comunicazione utilizzato per reperire una risorsa specifica e quindi indirettamente individua la tipologia di risorsa a cui si vuol far riferimento con l'URL.
Il protocollo utilizzato per la navigazine WEB e quindi per i documenti ipertestuali, è il protocollo http.
Lo scheme_specific_part degli URL http ha due funzioni fondamentali: la prima è quella di identificare l'host a cui inviare la richiesta; la seconda è quella di individuare in modo specifico la risorsa che il server dovrebbe restituire con la sua risposta.
La parte scheme_specific_part di un URL http, può essere ulteriormente disaggregata in questo modo:
//autorità/percorso
In questa sezione sarà approfondito il significato di //autorità, come parte in cui inserire un nome di dominio.
http://www.jacknake.org
Il nome di dominio, o anche nodo, identifica l'host su cui è avviato, ed è in ascolto, il server http, che risponderà alle nostre richieste.
Il nome di dominio è formato da almeno due parti ciascuna separata da un punto (jacknake.org); le parti che formano il nome di dominio possono essere anche più di due, ma comunque l'ultima rappresenta un codice, normalmente di due o tre lettere, che identifica, o la regione geografica in cui è situato il server (.it per Italia, .de per Germania .fr per Francia ecc.), oppure il tipo di sito a cui ci connettiamo (.com per sito commerciale, .org per sito di organizzazioni non governative senza scopo di lucro, .edu per sito di università ecc.).
In realtà dietro al nome di dominio si cela un indirizzo IP; non è lo scopo di questo scritto spiegare come i nomi di dominio vengono risolti in indirizzi IP.
La seconda importante funzione dello scheme_specific_part è quella di indicare la risorsa da acquisire, in particolare questo compito è svolto dalla parte /percorso
http://www.jacknake.org/index.html
Il file da acquisire è normalmente un documento ipertestuale di tipo HTML che sarà spedito dal server in risposta alla richiesta ricevuta; in particolare il file ricevuto sarà elaborato dal programma che ha fatto la richiesta, il quale potrà, ad esempio, visualizzarlo all'interno di una finestra, oppure avviare una procedura di download sulla nostra macchina.
Il tipo di elaborazione eseguita sul file ricevuto dipende dal programma che fa la richiesta e dal tipo di file richiesto; normalmente il programma che fa la richiesta è un browser, il file richiesto è di tipo HTML e quindi l'elaborazione consiste nella visualizzazione dei contenuti del file secondo i significati propri dei vari marcatori HTML.
L' Host su cui gira il server è, come già detto, un
computer che, con tutta probabilità, avrà centinaia di directory, all'interno delle quali ci potranno essere migliaia di file.
La questione importante da capire è come faccia il
server a conoscere in quale directory si trovi il file
che gli è stato chiesto dal client.
A questo scopo è necessaria una digressione
sull'organizzazione gerarchica ad albero rovesciato
delle directory all'interno di un filesystem.
Il filesystem può essere considerato come un modo di
organizzare e gestire logicamente i file e le cartelle
in un qualsiasi supporto di memorizzazione.
La maggior parte dei filesystem hanno una directory radice da cui tutto parte, nel senso che è da questo punto che vengono create ulteriori directory in cui memorizzare i file.
La directory radice, in quanto tale, può contenere file o altre directory; ciascuna delle directory contenute in quella radice possono contenere altre directory o altri file e così via fino a che vi sia capacità fisica di memorizzazione sul supporto utilizzato.
Il modo di indicare la directory radice varia da un
sistema operativo ad un altro; in una console Linux, la
directory radice è rappresentata con uno slash /.
Per individuare un file memorizzato su un disco,
quindi, si dovrà indicare tutto il percorso da seguire
partendo dalla directory radice, fino ad arrivare alla
directory in cui si trova il file voluto.
Se il file index.html fosse nella directory radice, il
percorso o PATH sarebbe semplicemente /index.html; se
invece lo stesso file fosse all'interno della directory
mysite, a sua volta contenuta nella directory radice,
il percorso sarebbe /mysite/index.html.
Il primo slash indica la directory radice, il secondo
slash ci dice che stiamo dentro una directory, il cui
nome è la sequenza di caratteri immediatamente precedente.
Se scrivessimo un percorso del tipo /mysite/mirror/index.html, il nostro file sarebbe posizionato nella directory mirror, contenuta all'interno della directory mysite, che a sua volta è posizionata all'interno della directory radice.
Un server http è impostato per far riferimento ad una
propria directory radice.
La directory radice a cui si riferisce il server non
necessariamente corrisponde alla directory radice del
sistema su cui quel server è avviato; in ogni caso, il server permetterà l'accesso dall'esterno a
partire dalla sua directory radice.
l'URL http://www.jacknake.org/index.html, quindi, identifica una risorsa sotto forma di file HTML di nome index.html, che si trova nella directory radice del server che gira sulla macchina identificata da www.jacknake.org.
Il file risorsa può essere memorizzato in una qualsiasi directory a partire dalla radice del server.
Se fosse indicato un file, oppure una directory, che non esiste nel percorso specificato, il server WEB risponderà con l'errore n. 404 Not Found.
Qualsiasi browser per la navigazione in internet ha una barra degli indirizzi in cui scrivere l'URL del sito che si intende visitare.
A tal propostio si è sicuramente notato che in tale barra è sufficiente scrivere l'URL indicando solamente l'identificativo della macchina host su cui gira il server.
L'omissione del protocolo di comunicazione da utilizzare non provoca la generazione di un errore da parte del server, in quanto i programmi client come i browser sono configurati per utilizzare il protocollo http in modo predefinito, quando la sequenza scritta nella barra degli indirizzi appare essere un URL destinato ad un server WEB.
La mancata indicazione espressa di una risorsa da acquisire, allo stesso modo, non genera un errore, in quanto il server WEB è normalmente configurato per restituire un file predefinito, qualora non sia in grado di determinare dall'URL quale file restituire.
Gli URL che si sono visti finora, quando referenziano
in modo esplicito una risorsa, indicano sempre un nome
di un file.
Ciò non è obbligatorio, in quanto con l'URL si può
indicare come risorsa da reperire anche una directory.
La risposta del server è diversa a seconda
di come esso è stato configurato.
Infatti l'amministratore del sistema può decidere di
negare l'accesso a determinate directory, o può
consentirlo solo a determinati utenti; in tali casi, se
l'utente non è autorizzato, la risposta del server sarà
l'errore n. 403 Forbidden.
Un'altro tipo di configurazione del server implica l'associazione di un file predefinito ad una o più directory, cosicchè quando il client fa riferimento ad una di quelle directory otterà in risposta quello specifico file.
L'ultima ipotesi di configurazione prevede che il server invii come risposta la lista dei file e delle directory contenuti nella directory referenziata; normalmente gli elementi di questa lista sono visualizzati dal browser in modo attivo sotto forma di collegamento, in modo che l'utente possa accedervi direttamente, ad esempio cliccando su uno dei termini della lista.
Per mezzo di un URL http si possono acquisire risorse diverse dai documenti ipertestuali: immagini, audio, video, programmi eseguibili, documenti in altri formati, sono tutte risorse a cui si può accedere grazie al protocollo http.
Dietro a ciascuna di queste risorse vi è, naturalmente, un file, che può essere referenziato con un URL allo stesso modo con cui si referenziano i file di tipo HTML.
Conoscere il tipo di file che si stà acquisendo non è tanto importante per la costruzione dell'URL, ma piuttosto per capire come il browser reagirà una volta ricevuta la risorsa dal server.
Quando il browser non è in grado di elaborare
direttamente il file ricevuto dal server, il suo
comportamento dipende da come è stato configurato.
Esso può essere configurato per avviare
in automatico un apposito programma esterno, per mezzo
del quale elaborare il file acquisito via internet; in
tal caso, una volta conclusa l'acquisizione, il browser
lancia uno specifico programma, gli passa il file
acquisito e da questo momento l'elaborazione va sotto
il controllo di questo programma esterno.
La configurazione predefinita dei browser non è quella di avviare un programma esterno, ma piuttosto quella di salvare il file sul disco locale, normalmente previa richiesta all'utente di indicare in quale directory tale salvataggio deve essere effettuato.