Università dell’Insubria – Sede di Como
Laurea in Scienze e Tecnologie dell’Informazione
Corso di Reti ed Applicazioni – AA 2006/2007
Test 1
Nome e Cognome :______________________________________________Anno di corso______
Numero di matricola : _____________________________________________Como, 04 aprile 2007
Istruzioni
Nei quiz a risposta multipla segnare una croce o tracciare un cerchio sulla risposta considerata
corretta (SI equivale a VERO, mentre NO equivale a FALSO)
Nelle domande fornire, per favore, una risposta breve e concisa, con calligrafia chiara.
Non sono ammessi libri di testo o note, solo calcolatrici semplici .
Spegnere i cellulari.
Quiz a risposta multipla
1
W3C ed IETF sono lo stesso gruppo di lavoro.
NO
2
Nel modello a strati di Internet c’è lo strato di presentazione.
NO
3
Scrivere il massimo numero esprimibile con quattro cifre in
ternario ed il suo valore in esadecimale e decimale:
2222
3
50
80
16
10
4
Un Tier 3 ha dimensioni maggiori di un Tier 1.
NO
5
Un nodo può avere solo una interfaccia di rete.
NO
6
Un messaggio di grandi dimensioni non può venire spedito se è necessario
frammentarlo in più di 10 pacchetti.
NO
7
I protocolli di Trasporto in Internet (TCP ed UDP) sono orientati alla connessione.
NO
8
Un nodo può avere al massimo tre socket aperte ad ogni istante.
NO
9
Una trasmissione che utilizzi UDP può essere unidirezionale.
SI
10
Due diverse pagine web possono essere inviate nella stessa connessione HTTP
persistente.
SI
11
L’elenco completo dei parametri base di QoS a livello IP è: ritardo, variazione del
ritardo e perdita di pacchetti. {manca la capacità}
NO
12
Il messaggio DNS può non contenere un header. {qualsiasi protocollo aggiunge
informazioni di stato specifiche}
NO
13
L’utilizzo delle cache in HTTP fa parte delle specifiche del protocollo.
NO
14
L’applicazione che realizza il server DNS apre una socket su una porta nota (<1024).
SI
15
Ogni dominio DNS può avere un solo server autoritario {valide entrambe le
risposte}.
SI
1
NO
16
La parte dati in una trasmissione POP3 è sempre criptata.
NO
Domande e problemi
17
Si consideri l’invio fra due nodi di vari pacchetti di dimensione costante che seguano lo stesso
percorso.
a) si elenchino le componenti del ritardo che ogni pacchetto subisce nel percorso
1) ritardo di propagazione;
2) ritardo di trasmissione;
3) ritardo di processamento;
4) ritardo di accodamento.
b) quali fra queste, nel caso considerato, sono costanti e quali possono variare ?
Nel caso considerato questi ritardi hanno tutti un valore fisso, eccetto il ritardo di
accodamento, che può variare in funzione del carico globale della rete
18
Descrivete brevemente cos’è “MIME” e dove viene usato e perchè
MIME sta per Multipurpose Internet Mail Extensions descritto in varie RFC (si veda
http://www.iana.org/numbers.html).
Definisce una ulteriore strutturazione del corpo del messaggio di posta elettronica in
formato SMTP, basata su alcuni header aggiuntivi.
Viene usato nella spedizione attraverso SMTP di posta che contenga, oltre al testo, anche
altri oggetti, quali immagini o suoni, il cui tipo è codificato ed identificato dal “MIME
type”, presente in un header del messaggio.
19
Supponendo che oggi vi siano circa un miliardo di nodi IPv4 con indirizzamento a 32 bit e che
vi sia un aumento del numero del numero di nodi del 10% all’anno, tra quanti anni non vi
saranno più indirizzi IPv4 disponibili, supponendo che siano tutti utilizzabili ?
Si esaurirebbero fra 15 anni, 3 mesi e 15 giorni e mezzo circa (15.29 anni).
32
9
32
9
N
Deve valere la seguente eguaglianza (2 – 1) = 10 *(1.1) dove N è il numero di anni
cercato. N si ricava risolvendo l’equazione:
N = Log((2 – 1) / 10 )/Log (1.1)
2
20
Nella figura sottostante, Tutti i nodi trasmettono pacchetti di dimensione L byte. Ci sono tre host
(A, B, C), un router R1 e tre linee, con velocità trasmissiva V bit/s e V1 bit/s (tra C e R1) e sia
V1=V/2. Si assuma che ciascun nodo (router o host) abbia un ritardo di processamento fissato e
pari a Tproc. La distanza fisica tra i vari nodi sia in ogni caso eguale a D e sia M la memoria
fisica totale di buffer pacchetti nel router. Sia la velocità del segnale nei cavi pari alla costante
"C". Si risponda alle domande che seguono, ricordando che il ritardo totale è la somma di quattro
componenti
R1
V
A
L
V1
V
C
B
a) Si scriva la formula per calcolare il tempo per la trasmissione di un pacchetto da A a R1 (il
tempo che trascorre tra l’emissione del primo bit da A e la ricezione dell’ultimo in R1)
Tempo per la trasmissione = rtrasmis + rprop = 8*L/V + D/C (ritardo di accodamento e
processamento in questo non contano)
b) Si calcoli il tempo totale necessario per trasmettere un pacchetto da A a B a rete scarica.
Il tempo totale per la trasmissione è la somma dei tempi necessari per attraversare i due
salti:
Tempo da A a R1
= rtrasmis + rprop
= 8*L/V + D/C
Tempo in R1
= rproc + raccodam
= Tproc + 0
Tempo da R1 a B
= rtrasmis + rprop
= 8*L/V + D/C
Il totale è quindi = 16*L/V + Tproc + 2*D/C
c) Supponendo che A invii costantemente un pacchetto a B ed uno ad C (alternati) alla massima
velocità di linea, calcolare qual è la velocità massima con cui C può inviare pacchetti ad A
V1 perché il canale di trasmissione di A è indipendente dal suo canale di ricezione.
d) Supponendo che A invii costantemente un pacchetto a B ed uno ad C (alternati) alla massima
velocità di linea, calcolare qual è la velocità massima con cui C può inviare pacchetti ad B
V1 perché il carico della linea verso B è in questo caso la metà di V che è eguale a V1
e) Supponendo che B non trasmetta, in quali casi è possibile che si verifichi congestione e
quindi perdita di pacchetti nella rete sopra descritta ?
Per A che trasmette verso C, indipendentemente dall’attività di C, oppure per A e C
che trasmettono contemporaneamente a B. La memoria di buffer di R1 si satura per
trasmissione continua in t = (M*8)/(V-V1) nel primo caso o t = (M*8)/V nel secondo.
3
21) Si considerino i due programmi java sotto riportati. Completarli in modo che implementino
il seguente protocollo client-server:
-
-
il client si connette al server usando TCP, porta 6789
il client invia al server due righe di testo, in cui ciascuna riga di testo è terminata dal
carattere '\n'
dopo aver ricevuto due righe di testo, il server rimanda al client le due stringhe
ricevute, in ordine inverso, separate da una virgola e uno spazio, e convertite in
caratteri maiuscoli.
Le due stringhe vengono inviate su un'unica riga.
successivamente, il server invia al client una riga di testo contenente la lunghezza
complessiva delle due stringhe ricevute. Nel calcolo della lunghezza è compreso il
separatore, e non sono compresi i terminatori di riga
il client termina, il server è disponibile a servire un altro client.
0
1
2
3
4
5
6
7
8
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception
{
String sentence;
String modifiedSentence;
9
10
11
12
13
14
15
16
17
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
18
19
20
BufferedReader inFromServer =
new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
21
22
23
System.out.print("> ");
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
24
25
26
27
28
29
30
31
32
33
34
for (int i=0; i < argv.length; i++)
System.out.println("argv[" + i + "]" + argv[i]);
Socket clientSocket = new Socket(argv[0], 6789);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
...
...
...
System.out.print("2> ");
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
// stampa la stringa modificata
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
...
...
35
36
37 }
// stampa la lunghezza complessiva delle stringhe
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
4
1
2
3
4
5
6
7
8
9
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception
{
String clientSentence, clientSentence2;
String capitalizedSentence;
10
ServerSocket welcomeSocket = new ServerSocket(6789);
11
while(true) {
12
13
14
15
Socket connectionSocket = welcomeSocket.accept();
16
17
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
18
19 ...
clientSentence = inFromClient.readLine();
System.out.println("FROM CLIENT: " + clientSentence);
20
capitalizedSentence = clientSentence.toUpperCase() +"\n”;
21
22
23
24
25
26
27
28
BufferedReader inFromClient = new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
...
...
...
...
clientSentence2 = inFromClient.readLine();
...
...
...
capitalizedSentence = clientSentence2.toUpperCase() +
"\nlength:" + clientSentence2.length() + "\n";
System.out.println("TO CLIENT: " + capitalizedSentence);
29
30
31
32 }
clientSentence2 += ", ";
clientSentence2 += clientSentence;
outToClient.writeBytes(capitalizedSentence);
}
}
5