Università degli Studi di Parma
L’architettura di rete TCP/IP
Cenni Storici
• Nella prima metà degli anni ‘70 la DARPA dimostra interesse e
finanzia l’Università di Stanford e la BBN (Bolt, Beraken e
Newman) per realizzare una rete:
– a commutazione di pacchetto;
– tra elaboratori eterogenei;
– per le istituzioni di ricerca degli USA.
• Verso la fine degli anni ‘70 si completa la realizzazione
dell’Internet Protocol Suite, di cui i due principali protocolli sono:
– IP: Internet Protocol;
– TCP: Transmission Control Protocol.
• Da cui il nome TCP/IP usato per questa architettura di rete.
• Nasce la rete Arpanet, prima rete della ricerca mondiale che
evolve e diventa Internet.
L’architettura di rete TCP/IP
• Comprende anche molti altri protocolli,
quali:
– UDP (User Datagram Protocol);
– NFS (Network File System).
• È una architettura di dominio pubblico
realizzata da tutti i costruttori di
calcolatori.
• Molto spesso è l’unica architettura di rete
fornita.
• Standardizzata con dei documenti detti
RFC (Request For Comment).
L’Architettura di rete TCP/IP
Application
Telnet
NFS
FTP
Presentation
Session
SMTP
RPC
SNMP
Transport
Network
XDR
TCP e UDP
ICMP
IP
Protocolli
di routing
Arp e Rarp
Data Link
Physical
OSI
Non Specificati
Internet Protocol Suite
Sotto l’IP - I livelli 1 e 2
• L’architettura TCP/IP è concepita come un
mezzo per fare internetworking tra reti
(locali o geografiche).
• È in grado di operare su tutte le reti:
–
–
–
–
Ethernet, token-ring, FDDI
ATM, SMDS, Frame Relay
X.25
SLIP, PPP, Dialup
• Esistono realizzazioni di TCP/IP anche per
reti non standard.
IP (Internet Protocol)
• È il livello Network di
0
4
8
16
19
24
31
TCP/IP.
Version
Service Type
Total Length
• Offre un servizio non
Identification
Flags Fragment Offset
connesso offrendo un
Header Checksum
semplice protocollo di Time To Live Protocol
tipo Datagram.
Source IP Address
• Un protocollo datato ...
Destination IP Address
ma non obsoleto.
Options
PAD
• Si occupa di:
HLEN
– instradare i messaggi;
– frammentare i messaggi;
– rilevare gli errori.
Indirizzi IP
• Ampi 32 bit (4 byte).
• Si scrivono come 4 numeri decimali
separati dal carattere “.”.
• Ogni numero rappresenta il contenuto di
un byte ed è quindi compreso tra 0 e 255.
• Esempi:
– 131.190.0.2
– 1.1.2.17
– 200.70.27.33
• Esistono 5 classi di indirizzi IP.
Indirizzi IP

Classe A


0 1

0

Network 7 bit (128 reti)
primo decimale dell’ indirizzzo tra 0 e 127
Host 24 bit (16M host)
7 8
Network
31
Host
Classe B



0 1 2
10
Network 14 bit (16K reti)
primo decimale dell’indirizzzo tra 128 e 191
Host 16 bit (64K host)
15 16
Network
Host
31
Indirizzi IP

Classe C



Network 21 bit (2M reti)
primo decimale dell’indirizzzo tra 192 e 223
Host 8 bit (256 host)
0 1 2 3
31
23 24
110
Network
Host
Classi D ed E
0 1 2
31
3
1110
Multicast Address
0 1 2 3
1 1 11
31
Reserved for Future Use
Subnetting
• Il campo Host di un indirizzo di classe A, B e C
può essere diviso in due parti:
– subnet
– host
• L’ampiezza del campo subnet può essere
definito in base a un parametro detto netmask:
– bit a 1 in corrispondenza dei campi network e subnetwork;
– bit a 0 in corrispondenza del campo host.
• Esempio: si supponga di voler partizionare una
rete di classe B in 16 subnet da 4096 host:
– Netmask 11111111 11111111 11110000 00000000
– Netmask esadecimale ff ff f0 00
– Netmask decimale 255.255.240.0
Subnetting
1 0
Network
Host
Indirizzo di classe B prima del subnetting
Indirizzo di classe B dopo il subnetting
1 0
Network
Subnet
Host
Subnetting
• IP assume una corrispondenza biunivoca tra reti
fisiche e subnet:
– routing implicito all’interno di una subnet;
– realizzazioni più moderne ammettono più subnet sulla stessa
rete fisica;
– mai più reti fisiche sulla stessa subnet.
• Il routing tra subnet diverse è esplicito:
– gestito dai router tramite tabelle di instrada-mento.
• All’interno della subnet l’instradamento deve
essere fornito dalla rete fisica.
• Corrispondenza tra gli indirizzi di subnet (indirizzi
IP) e gli indirizzi di livello 2 gestita da ARP.
Subnetting
• Gli host devono conoscere almeno un router presente sulla
loro rete fisica.
• Il protocollo ICMP permette di ottimizzare dinamicamente il
routing.
• Ad esempio sull’host H4: route add default 190.3.1.5
• L’instradamento tra subnet diverse viene gestito da tabelle di
instradamento presenti sui router. Ad esempio:
– tabelle di instradamento del router R5;
– 3 subnet non raggiungibili direttamente.
Subnet di Destinazione
190.3.1.0
190.3.7.0
190.3.9.0
Indirizzo del router
190.3.3.2
190.3.3.2
190.3.6.8
Subnetting
Subnet di Destinazione
190.3.1.0
190.3.7.0
190.3.9.0
Indirizzo del router
190.3.3.2
190.3.3.2
190.3.6.8
ARP (Address Resolution
Protocol) & RARP (Reverse ARP)


Protocolli in broadcast di tipo sollicitation.
ARP



la stazione che vuole scoprire l’indirizzo MAC di un’altra
stazione, di cui conosce l’indirizzo di livello 3, invia la
richiesta in broadcast di tipo sollicitation;
la stazione sollecitata risponde.
RARP



usato da stazioni diskless per sapere il proprio indirizzo IP;
la stazione che vuole scoprire il proprio indirizzo IP
conoscendo il proprio indirizzo MAC, invia la richiesta in
broadcast di tipo sollicitation;
una stazione sollecitata risponde.
ICMP (Internet Control Message Protocol)

Verificare lo stato della rete

Migliorare il routing
Valore
Tipo di Messaggio
0
Echo Reply
 Echo request ed Echo reply
3
Destination Unreachable
 Riportare anomalie
4
Source Quence
5
Redirect
 Destination Unreachable
8
Echo Request
 Time Exceeded for a Datagram
11
Time Exceeded for a Datagram
 Parameter Problem on a Datagram 12 Parameter Problem on a Datagram
13
Timestamp Request
 Scoprire la netmask
14
Timestamp Reply
 Introdotto nelle ultime versioni
15
Information Request
16
Information Reply
 Mask Request
17
Address Mask Request
 Address Mask Reply
18
Address Mask Reply

Redirect
Protocolli di Routing



Le reti sono raggruppate in Autonomous System cioè in gruppi di
reti controllate dalla stessa autorità.
I router si dividono in IR (Interior Router) e in ER (Exterior Router).
Gli IR si scambiano informazioni di instradamento tramite dei IGP
(Interior Gateway Protocol):





RIP (Routing Information Protocol)
IGRP (Interior Gateway Routing Protocol)
OSPF (Open Shortest Path First)
Integrated IS-IS
Gli ER si scambiano informazioni di instradamento tramite dei
Exterior Gateway Protocol (EGP):


EGP (Exterior Gateway Protocol)
BGP (Border Gateway Protocol)
Nomi e Indirizzi





Agli indirizzi IP si associano per comodità
uno o più nomi memorizzati
in un file “hosts”.
223.1.2.1
alpha
223.1.2.2
beta
Il file hosts diviene impraticabile
223.1.2.3
gamma
quando la rete IP cresce di
223.1.2.4
delta mycomputer
dimensione.
223.1.3.2
epsilon
223.1.4.2
iota
Si può utilizzare una base di dati
distribuita per la gestione dei nomi
DNS (Domain Name Server).
vm.cnuce.cnr.it
Non esiste corrispondenza tra domini e
reti.
Nomi di tipo gerarchico.
computer istituto
ente nazione
I protocolli UDP e TCP




Due protocolli di trasporto alternativi.
Realizzano funzionalità comuni a tutti gli applicativi.
Possono operare simultaneamente con molti applicativi diversi,
tramite il concetto di porta.
Le porte sono il mezzo con cui un programma client su un
elaboratore indirizza un programma server su un altro
elaboratore:


ad esempio un ftp client che voglia connettersi ad un ftp server lo
specifica indicando l’indirizzo IP dell’elaboratore remoto e il
numero della porta associata allo ftp server.
Gli applicativi principali hanno una Well Known Port, ad
esempio:


Telnet è associato alla porta 23 di TCP;
SNMP è associato alla porta 161 di UDP.
I protocolli UDP e TCP
0
UDP PDU Header
0
4
8
16
Source Port
4
8
16
19
24
UDP Source Port
UDP Destination Port
UDP Message Length
UDP Checksum
19
24
31
Destination Port
Sequence Number
Acknowledgement Number
TCP PDU Header
Data
Offset Res
Control
Checksum
Options
31
Window
Urgent Pointer
Padding
UDP (User Datagram Protocol)


Protocollo di trasporto di tipo non connesso.
Aggiunge due funzionalità a quelle di IP:



Utile quando:





multiplexing delle informazioni tra le varie applicazioni tramite il
concetto di porta;
checksum (opzionale) per verificare l’integrità dei dati.
si opera su rete locale;
l’applicazione mette tutti i dati in un singolo pacchetto;
non è importante che tutti i pacchetti arrivino a destinazione;
l’applicazione gestisce meccanismi di ritrasmissione.
Le applicazioni principali che utilizzano UDP sono:



NFS (Network File System);
SNMP (Simple Network Management Protocol);
Applicazioni Runix (rwho, ruptime, ...).
TCP (Transmission Control Protocol)


Un protocollo di trasporto connesso.
Utilizzato da applicativi che richiedono la trasmissione affidabile
dell’informazione:







telnet
ftp (file transfer protocol)
smtp (simple mail transfer protocol)
rcp (remote copy)
TCP garantisce la consegna del pacchetto, UDP no!
Il TCP di un nodo, quando deve comunicare con il TCP di un altro
nodo, crea un circuito virtuale.
Al circuito virtuale è associato un protocollo di trasporto:



full-duplex;
acknowledge;
controllo di flusso.
TCP (Transmission Control Protocol)


TCP richiede più banda e più CPU di UDP.
TCP segmenta e riassembla i dati secondo le sue necessità:






non garantisce nessuna relazione tra il numero di read e quello di write
Il TCP remoto deve fornire un acknowledge dei dati, normalmente
tramite piggybacking.
Protocollo con sliding window, timeout e ritrasmissione.
I protocolli a sliding window richiedono di fissare la dimensione della
finestra.
In TCP la dimensione della finestra è in byte, non in segmenti.
Il campo “window” del pacchetto TCP indica quanti byte possono
ancora essere trasmessi prima di un ACK.
TCP (Transmission Control Protocol)
Larghezza della finestra
del ricevente
Finestra usabile
1 2 3 4 5 6 7 8 9 10 11 ...
inviati e ACK
inviabili
inviati ma non ACK
non inviabili
TCP (Transmission Control Protocol)


Le prime versioni di TCP quando andavano in
timeout ritrasmettevano l’intera window.
Questo poteva causare gravi congestioni della rete:


Per evitare le congestioni venne introdotto
l’algoritmo slow-start:



Nell’ottobre 1986 Arpanet fu bloccata da una congestione
(da 32 kbs a 40 bps).
Quando si verifica un timeout la window viene
reinizializzata al valore minimo e fatta crescere lentamente,
per evitare nuove congestioni.
Il campo “Urgent Pointer” indica che nel pacchetto ci
sono uno o più byte urgenti.
Tipicamente associati ad eventi asincroni (interrupt).
RPC (Remote Procedure Call)


Sviluppato da SUN Microsystem.
È un paradigma di programmazione distribuita di tipo clientserver:




un programma (client) genera una richiesta e un programma
(server) gli risponde.
Imita la chiamata di una procedura locale.
Il processo client su una macchina chiama una procedura
che è realizzata da un processo server su un’altra macchina,
passandogli dei parametri.
Il processo server è “dormiente” in attesa di chiamate:



viene risvegliato
esegue la procedura
ritorna il risultato al client
richiesta
Client
Server
risposta
RPC (Remote Procedure Call)


Non vengono fatte ipotesi sul modello di concorrenza, client e
server possono operare, ad esempio, in modo sincrono o
asincrono.
Rispetto alle chiamate a procedure locali RPC si differenzia per:







Gestione degli errori.
Variabili Globali e “side effect”.
Prestazioni.
Meccanismi di autenticazione.
RPC è indipendente dal protocollo di trasporto: può appoggiarsi
su TCP, UDP e altri protocolli.
RPC non aggiunge affidabilità.
L’applicativo deve essere a conoscenza di quale protocollo di
trasporto è utilizzato sotto RPC.
XDR: eXternal Data
Representation



È uno standard per la descrizione e la
codifica dei dati.
Dati con identica semantica possono
essere rappresentati su elaboratori
diversi con formati diversi.
XDR permette di descrivere formati di
dati molto complessi in modo conciso e
non ambiguo.
INTERNET




rete mondiale: è una rete di reti
milioni di nodi.
crescita di circa 80% all’anno.
protocolli TCP/IP.
Applicativi

A UDP/TCP si appoggiano i seguenti applicativi:





telnet per l’accesso a calcolatore remoto;
ftp per l’accesso a file remoto;
e-mail per la posta elettronica;
Usenet News;
Sistemi Informativi concentrati:



sistemi informativi distribuiti:







Archie
Wais
X500
Gopher
WWW
X-Window
NFS (Network File System)
NTP (Network Time Protocol)
SNMP (Simple Network Management Protocol)
Introduzione a
Internet
Sommario



Breve storia di Internet
Commutazione di pacchetto e TCP/IP
Il Web

HTTP

HTML
CGI


Connessione tra basi di dati e Web
Internet
Sistema globale di informazione
• collegato da un unico spazio di
indirizzi basato sul protocollo IP
• consente di comunicare mediante
protocollo TCP/IP o sue estensioni
• rende accessibili, pubblicamente o
privatamente, servizi basati sulla
infrastruttura descritta
Federal Networking Council, 24/10/1995


Gruppo di coordinazione delle
rappresentanze di agenzie federali
coinvolte nello sviluppo ed uso del
networking con attenzione particolare a
reti che utilizzano TCP/IP e connesse ad
Internet
Membri da parte di: DOD, DOE, DARPA,
NSF, NASA, and HHS
Gli albori: ARPANET
reti a commutazione di pacchetto e
applicazioni militari delle
telecomunicazioni
Gli albori: ARPANET
1961-64
Kleinrok (MIT) pubblica i risultati delle
sue ricerche sulle reti a commutazione
di pacchetto
Gli albori: ARPANET
1961-64
Kleinrok (MIT) pubblica i risultati delle
sue ricerche sulle reti a commutazione
di pacchetto
Gli albori: ARPANET
1961-64
1967
Nasce il progetto ARPANET finanziato
da DARPA per una rete di calcolatori
basata su commutazione di pacchetto
Gli albori: ARPANET
1961-64
1967
1969
Il primo scambio di messaggi tra due
calcolatori in rete
UCLA
Stanford
Gli albori: ARPANET
1961-64
1967
1969
1972
Prima dimostrazione pubblica di rete a
commutazione di pacchetto (ICCC 72)
In 1972 a group of computer network
researchers organized themselves into
the International Packet Network
Working Group (INWG) with Dr.
Vinton Cerf as its first Chair. At the
Fall 1972 International Conference of
Computer Communication (ICCC)
Internet: la rete delle reti
dalle reti di calcolatori alle
reti di reti:
la nascita di TCP/IP
1961-64
1967
1969
1972
1972-74
Cerf & Kahn pubblicano i primi articoli
su un protocollo per reti di reti (TCP)
1961-64
1967
1969
1972
1972-74
1974-80
TCP diviene TCP / IP e si diffondono
varie realizzazioni, tra cui UNIX BSD
TCP / IP diviene il protocollo ufficiale
1961-64
1967
1969
1972
1972-74
1974-80
1983
di ARPANET
Le reti scientifiche
dalle applicazioni militari agli
usi civili di internet
CSNET
1961-64
1967
1969
1972
1972-74
1974-80
1979
Nasce il progetto Computer Science
Net per collegare i dipartimenti di CS
delle principali università americane
NSFNET
1961-64
1967
1969
1972
1972-74
1974-80
1979
1986 ....
Entra in funzione la rete dellla National
Science Foundation (NSFNET) la più
importante rete scientifica
L’era moderna
il World Wide Web
dalle applicazioni scientifiche all’uso
personale e commerciale di Internet
1989
Il Web
Tim Berners Lee pubblica l’articolo
Hypertexts and CERN, una proposta per
il trattamento elettronico di ipertesti
Nasce il nome World Wide Web;
il primo browser (Line Mode WWW )
entra in uso al CERN
1989
1990-91
richiesta
client
risposta
server
1989
1990-91
1994
Marc Andreessen fonda la "Mosaic
Communications Corp" (ora Netscape)
Lo sviluppo di Internet
Gen. 97
Gen. 96
Gen. 95
Gen. 94
N. calcolatori
registrati
Gen. 93
20000000
18000000
16000000
14000000
12000000
10000000
8000000
6000000
4000000
2000000
0
Protocolli e
linguaggi
di Internet
TCP / IP, HTTP, HTML
Il protocollo TCP/IP
 Transfer Control Protocol / Internet Protocol
 Insieme di protocolli (suite)
strutturati in
maniera gerarchica
PILA) usa i
servizi forniti dal livello inferiore e offre
servizi al livello superiore
 Ogni livello della gerarchia (detta
La pila TCP/IP
application offre servizi utilizzabili dalle
layer
applicazioni o dall’utente (es. telnet,
ftp, stmp)
transport fornisce meccanismi di comunicazione
layer
tra applicazioni (TCP, UDP)
internet
layer
fornisce il meccanismo di trasmissione
dati attraverso la rete Internet (IP)
network
interface
layer
nasconde i dettagli di accesso alla rete
fisica ai livelli superiori
TCP e IP
 Internet Protocol
si occupa della spedizione in rete di unità di
informazione (datagram)
 definisce il meccanismo di indirizzamento dei
nodi di Internet (IP address)
 Transfer Control Protocol
 converte il flusso dati proveniente dalla
applicazione in pacchetti (segment)
trasmissibili in rete
 verifica integrità e corretezza dei dati
trasmessi (recupero pacchetti persi,
rimozione duplicati ...)

Il protocollo HTTP
 HyperText Transfer Protocol
 Protocollo a livello di applicazione per lo




scambio di ipertesti multimediali
Prescrive il formato di
 nomi delle risorse (URL)
 richieste
 risposte
Versioni: HTTP/0.9, 1.0, 1.1
Principale designer: Tim Berners-Lee
RFC 1945 HTTP/1.0, RFC 2616 HTTP/1.1
Caratteristiche HTTP







Livello applicativo
Richiesta/risposta
Privo di stato
Trasferimento dati bidirezionale (forms)
Possibile negoziazione (character set)
Supporto per il caching
Supporto per i proxy
Gli attori di HTTP
•cliente
(browser):
genera richieste
di risorse
•(origin)
server:
depositario
della risorsa
richiesta
Gli attori di HTTP
•proxy:
nodo
intermedio
che può
fungere sia da
client che da
server
Gli attori di HTTP
•gateway:
nodo
intermedio
che può agire
solo da
server, per
tradurre
richieste in
altri protocolli
o a fini di
protezione
%4$$$-]]
$%##~^&^&
$$=@@@
Uniform Resource Locator (URL)
 E’
una stringa strutturata, ad esempio:
http://www.ce.unipr.it/didattica/SI.html
 Protocollo: http, ma anche ftp e gopher
 Indirizzo della macchina:



simbolico: www.ce.unipr.it
numerico (IP): 160.78.28.27
può includere il numero di porta (es. :8080)
 Path: sequenza di direttori
 Nome risorsa: identificativo di un file

se la risorsa è un file html, può includere un
indirizzo interno, es. SI.html#risultati
Formato delle richieste
 full-request :- request-line
*(general-header |
request-header |
entity-header)
CRLF [entity-body]
 request-line :- method SP URL SP version
CRLF
 method :- GET | POST | HEAD | altri..
 Esempio:
GET /pub/papers/pap101.html HTPP/1.0
Formato delle risposte
 full-response :- status-line
*(general-header |
request-header |
entity-header)
CRLF [entity-body]
 status-line :- version SP status SP message CRLF
 Codici di stato:
1XX (informativo), 2XX (successo),
3XX (ridirezione), 4XX(errore client),
5XX (errore server)
Formato dei documenti
 I documenti risiedono sul server come file e vengono
inviati al client usando il campo entity-body della
risposta
 ES: Ipertesto = file ASCII scritto secondo la sintassi
HyperText Markup Language (HTML)
 Estensioni tipiche del file: *.html *.htm
 Il documento può contenere inserti multimediali
(immagini, audio, video)


il programma client carica e visualizza il testo
poi richiede al server i file corrispondenti agli
inserti multimediali
Esempio HTML
<html>
<head>
<title>Titolo</title>
</head>
<body>
Il vostro testo va qui.
La pagina del corso la trovate
<A
HREF=“http://www.ce.unipr.it/didatti
ca/SI.html”>
qui<A>
</body>
</html>
HTML vs. XML
<B>John Q Public</B>
<P>
[email protected]<BR>
phone: 301-286 aaaa<BR>
fax: 301-286-bbbb<BR>
Bldg. 23, Rm. 999<BR>
NASA<BR>
Goddard Space Flight Center<BR>
588.0<BR>
Greenbelt, MD 20221<BR>
Se scritto in modo appropriato, HTML può riflettere la struttura del
documento (presentazione) ma non può rappresentare
adeguatamente la struttura dei dati
HTML vs. XML
<EMPLOYEE>
<NAME>
<FIRST>John</FIRST>
<MIDDLE>Q</MIDDLE>
<LAST>Public</LAST>
XML (Extensible Markup Language)
può rappresentare la relazione
tra i vari oggetti. La semantica e la
struttura dei dati sono preservati.
</NAME>
<EMAIL>[email protected]</EMAIL>
<PHONE>301-286-aaaa</PHONE>
<FAX>301-286-bbbb</FAX>
<LOCATION> <BUILDING>Bldg. 23</BUILDING> <ROOM>999</ROOM>
</LOCATION>
<ADDRESS> <ORG>NASA</ORG> <CENTER>Goddard Space Flight
Center</CENTER> <MAILSTOP>588.0</MAILSTOP>
<CITY>Greenbelt</CITY> <STATE>MD</STATE> <ZIP>20221</ZIP>
</ADDRESS>
</EMPLOYEE>
Sicurezza in HTTP/1.0
 Le risorse del server sono organizzate in
domini (realms)
Sicurezza in HTTP/1.0
•
 Richieste di risorse
protette devono
contenere un campo
(authorization) con le
credenziali (username+
password)
NB: le credenziali vengono trasmesse sotto forma di
stringa codificata secondo il formato base64
Sicurezza in HTTP/1.0
 Se la richiesta non contiene le giuste
credenziali, il server risponde con il codice
401 (unauthorized) + campo (authenticate) che
provoca la richiesta di username e password
Il browser HTTP
 Applicazione in grado di:



accedere alla rete secondo il protocollo HTTP
richiedere risorse identificate da un URL a un server
interpretare e rendere a video la risposta del server
Server HTTP: architettura base
interfaccia
di rete
interfaccia
applicazioni
Applicazioni
Scarica

seconda_lezione - Computer Engineering Group