Ora ci interessa evidenziare il fatto che in corrispondenza di un nodo (sia esso identificato da un indirizzo IP o da un nome di dominio) possono essere presenti diverse risorse messe a disposizione per essere raggiungibili attraverso l'Internet.
Lo standard che attualmente consente di ottenere un riferimento universale
e univoco per ogni risorsa disponibile nell'Internet si chiama URI
(Uniform Resource Identifiers) ed è così definito
perché progettato secondo le seguenti linee guida
(l'esposizione che segue è una traduzione praticamente letterale di
parti estratte dalla RFC2396):
Una volta identificata una risorsa, un sistema può eseguire su di essa diverse operazioni, come per esempio: "accedere", "aggiornare" o "rilevarne gli attributi" («Qual è in questo momento la temperatura a Bombay ?»).
Un identificatore (URI) può essere ulteriormente classificato come una locazione, un nome o entrambi.
Esistono un certo numero di schemi per le URI, corrispondenti
alle tipologie di servizi che differenti risorse possono offrire o costituire.
Frequentemente gli schemi corrispondono ai diversi protocolli usati a livello
applicativo in internet (gli stessi nomi degli schemi corrispondono spesso ai nomi dei
rispettivi protocolli). Tuttavia non è necessariamente vero che
per accedere a una risorsa si debba necessariamente fare uso del protocollo
dichiarato nello schema dell'URI; la risoluzione di alcuni URI può anche
richiedere l'uso di più di un protocollo (per esempio, per raggiungere
una risorsa identificata da un URL http richiede tipicamente
l'uso tanto del protocollo DNS quanto dell'HTTP).
Il concetto di URN è focalizzato sulla persistenza del nome, più che dalla costanza della localizzazione. Tali identificatori sono tratti da un insieme di "namespaces" definiti, ciascuno dei quali possiede la propria struttura di insiemi di nomi e le proprie regole di assegnamento.
ftp://ftp.is.co.za/rfc/rfc1808.txtftp per un servizio di File Transfer Protocol
(la risorsa in questo caso è un file)http://www.math.uio.no/faq/compression-faq/part1.htmlhttp per una pagina webmailto:marco.panizza@unipv.itmailto per un indirizzo di posta elettronicanews:comp.infosystems.www.servers.unixnews per news group e articoli USENETtelnet://melvyl.ucop.edu/telnet per servizi interattivi mediante protocollo
TELNETLa sintassi generale delle URI è molto complessa e viene espressa nelle specifiche da un insieme di regole di layout e BNF (Backus-Naur Form, un metalinguaggio comunemente utilizzato per definire le regole sintattiche di linguaggi artificiali). Ne diamo qui solo una vista ristretta, valida comunque nella maggior parte dei casi incontrati in pratica.
La sintassi più generale per gli URI è esprimibile con
la seguente forma di layout:
<scheme>:<scheme-specific-part>
Molti schemi tuttavia (anche se non necessariamente tutti) sono formati
secondo un comune layout più di dettaglio:
<scheme>://<authority><path>?<query>
Ove (non tutte le parti sono sempre presenti):
<scheme><authority><userinfo>@<host>:<port><userinfo>user:password, oramai sostanzialmente deprecata in quanto
la presenza di
una password in chiaro costituisce un rischio per la sicurezza)<host><port><path>'/')<query>'&', ciascuna nella forma
<name>=<value>
Gli URI sono codificati in US-ASCII a 7 bit con esclusione dei caratteri di controllo (tabella G0 dello standard ISO/IEC 2022).
Di tale insieme di caratteri, come abbiamo visto, alcuni sono impiegati
come separatori, di conseguenza, all'interno dei token non tutti i
caratteri sono ammessi. In particolare vi sono vietati o sconsigliati:
spazio, '/', ':',
'@', '?', '&', '#',
'%', '<', '>', '=',
'"', '+', '$', '{',
'}', '[', ']', '|',
'\', '^'
vi possono tuttavia essere casi in cui è necessario (se riconosciuto
nello schema o nel namespace di pertinenza) usare anche all'interno dei
token di un URI alcuni di tali caratteri. In tali casi si deve ricorrere
all'escaping formato dal carattere di percentuale seguito dalle due cifre
esadecimali del codice ASCII del carattere in questione. Per esempio
%20 rappresenta lo spazio; in questo particolare caso va
tuttavia ricordato anche che, in alcuni schemi di URL, il carattere
'+' viene interpretato come spazio.