Examen de Redes - Primer Parcial

Anuncio
Examen de Redes - Primer Parcial - ETSIA – 26 de Enero de 2006
Apellidos, Nombre:
Grupo de matrícula:
Soluciones al examen
Todos
1. (1 punto) Convierte el siguiente servidor iterativo en un servidor concurrente:
import java.net.*;
import java.io.*;
class Servidor {
public static void main(String args[]) throws Exception {
ServerSocket ss = new ServerSocket(7777);
while(true) {
Socket s = ss.accept();
proporciona_el_servicio(s);
s.close();
}
}
}
import java.net.*;
import java.io.*;
class Servidor extends Thread {
Socket id;
public Servidor(Socket s) {id=s;}
public void run() {
proporciona_el_servicio(id);
id.close();
}
public static void main(String args[]) throws Exception{
ServerSocket ss=new ServerSocket(7777);
while(true) {
Socket s = ss.accept();
Servidor t = new Servidor(s);
t.start();
}
}
}
1
2. (1 punto) Con respecto al protocolo FTP:
a) ¿Pueden haber problemas al utilizar en FTP el modo activo cuando tenemos un cortafuegos?
¿Por qué?
Sí. Debido a que habitualmente los cortafuegos impiden el establecimiento de conexiones
iniciadas desde el exterior de la red que protegen, con lo que el intento de conexión (de datos) por
parte del servidor de FTP puede verse impedido por el cortafuegos
b) Supongamos establecida una sesión anónima con un servidor FTP al que le hemos enviado la
orden PASV, obteniendo la siguiente respuesta: 227 Entering Passive Mode
(158,42,180,62,180,94). Referido a los sockets, ¿qué implica dicha respuesta por parte del
servidor? Razona tu respuesta.
Que el cliente deberá establecer una conexión de datos con el servidor (158.42.180.62) al puerto
46174 (180*256+94).
3. (1 punto) Evalúa el tiempo necesario para establecer una conexión TCP entre dos hosts A y B.
Ambos están conectados a redes de 100 Mbps con una velocidad de propagación de 2*108 m/seg,
interconectadas mediante un router. La distancia entre el host A y el router es de 100 m, mientras
que la distancia del router al host B es 1000 m. Suponemos que las cabeceras de niveles
inferiores al de transporte ocupan 50 bytes en total. Asimismo, el tiempo de procesamiento en el
router y en los hosts A y B se supone despreciable.
La secuencia de eventos que sucederían sería la siguiente:
En el instante inicial, A comienza a transmitir el mensaje SYN. Su tamaño es de 20 bytes (sólo
cabeceras TCP, y suponemos que sin opciones) más 50 de cabeceras de nivel inferior, dando un
total de 70 bytes, que corresponden a 560 bits
Un tiempo de transmisión después, A ha terminado de enviar este segmento. El tiempo de
transmisión será Ttrans= 560 / 108 seg.
Un tiempo de propagación después, el último bit del segmento ha llegado al router. Este tiempo de
propagación será Tprop1 = 100 / 2*108 seg. = 50 / 108 seg.
Puesto que el tiempo de proceso en el router se considera despreciable, en este instante comienza
la transmisión del segmento a través de la segunda red. Un tiempo de transmisión más tarde se
finaliza dicha transmisión. Puesto que las redes tienen la misma velocidad, Ttrans = 560/ 108 seg.
Al igual que en el caso anterior, un tiempo de propagación más tarde el último bit llega a B. Este
tiempo de propagación es Tprop2= 1000 / 2*108 seg. = 500 / 108 seg.
A partir de aquí, y tras un tiempo de proceso despreciable, se contesta con un segmento SYN +
ACK. Su tamaño es el mismo que el primer segmento (solo cabeceras) y el tiempo que tarda en
llegar a A es el mismo que ha empleado el primer mensaje. Lo mismo es aplicable para el tercer
segmento ACK de A a B. Por tanto, el total corresponderá con el triple del tiempo empleado por el
primer segmento.
Luego
Ttotal= 3*(560+50+560+500)/ 108 = 3*1670/108=5010/ 108 = 50'1 μs.
2
4. (1 punto) Introduce las órdenes necesarias para, tras ejecutar en el computador
labrdc01.redes.upv.es la orden telnet smtp.upv.es 25, enviar un correo electrónico a
[email protected] con asunto "ejercicio 4" y que incluya en el mensaje el texto:
“Examen de redes”. El remitente del correo es [email protected].
helo labrdc01.redes.upv.es
mail from: <[email protected]>
rcpt to: <[email protected]>
data
From: <[email protected]>
To: <[email protected]>
Subject: ejercicio 4
<Línea en blanco>
Examen de redes
.
quit
5. (1 punto) En una conexión entre los computadores A y B se han intercambiado los siguientes
segmentos:
Origen
Secuencia
Código
ACK
Datos
A
1000
SYN
-
-
B
7000
ACK, SYN
1001
-
A
1001
ACK
7001
-
A
1001
ACK
7001
GET ..... (70 bytes)
B
7001
ACK
1071
HTTP ..... (900 bytes)
A
1071
ACK
7901
-
B
7901
ACK
1071
Continuación HTTP (300 bytes)
A
1071
ACK
8201
-
A
1071
ACK
8201
GET ..... (60 bytes)
A
1131
ACK
8201
GET ..... (50 bytes)
B
8201
ACK
1181
HTTP ..... (900 bytes)
A
1181
ACK
9101
-
B
9101
ACK
1181
Continuación HTTP (600 bytes)
A
1181
ACK
9701
-
B
9701
ACK
1181
HTTP ..... (400 bytes)
A
1181
ACK
10101
-
A
1181
FIN, ACK
10101
-
3
a) ¿Qué protocolo de aplicación (incluyendo versión si procede) ha generado este tráfico? Justifica
la respuesta.
HTTP 1.1, puesto que las órdenes empleadas corresponden a HTTP y la utilización de conexiones
persistentes y pipelinning es exclusiva de la versión 1.1.
b) ¿Emplea A reconocimientos retrasados? ¿Y B? Justifica la respuesta.
A no emplea reconocimientos retrasados, ya que para cada segmento recibido de B envía
inmediatamente el reconocimiento en un segmento ACK. B emplea reconocimientos retrasados, ya
que se puede observar, por ejemplo, que el reconocimiento a los dos segmentos que incluyen los
GETs enviados por A es devuelto con un único ACK.
c) ¿Cuál es el MSS de cada computador? Justifica la respuesta.
El MSS del computador B es 900, ya que los mensajes mayores que este tamaño se dividen en
varios segmentos (ejemplo, primer HTTP). El de A no es seguro, ya que todas las órdenes
enviadas caben en un segmento. Sólo puede asegurarse que es de 70 ó mayor.
d) Suponiendo que no se envian más datos y que no se ha producido ningún error, ¿cuál será el
siguiente segmento que aparecerá?
La confirmación del cierre de conexión por parte del servidor B, es decir
B
10101
FIN,ACK
1182
-
6. (1 punto) En el protocolo TCP, desde el punto de vista del emisor, ¿qué dos eventos le avisan
que hay una situación de congestión en la red? ¿Cuál de los dos señala una congestión más
severa? ¿Por qué?
El emisor intuye que se está produciendo una situación de congestión cuando:
•
Vence un temporizador o
•
Se reciben 3 ACKs duplicados
De estas dos señales el emisor interpreta el vencimiento de un temporizador como señal de una
situación de congestión más severa. Esta interpretación se basa en que el vencimiento de un
temporizador se produce porque no se ha recibido reconocimiento alguno, lo que implica que o
bien en el otro extremo de la conexión no se está recibiendo segmento alguno o que los
reconocimientos se están perdiendo o retrasando en exceso debido a una severa situación de
congestión en la red.
La recepción de 3 ACKs duplicados, está informando implícitamente al emisor que aunque el
segmento para el que esperaba el reconocimiento no ha llegado al receptor, si que lo están
haciendo otros segmentos enviados, por lo que se intuye que la situación de congestión, si existe,
no es tan severa como en el caso anterior.
4
7. (0,75 puntos) En el código Java del servidor web visto en clase se usa el método println de la
clase PrintWriter para enviar las cabeceras de la respuesta. Sin embargo, se emplea el método
write de la clase OutputStream para enviar el cuerpo de la respuesta. ¿A qué se debe esta
diferencia?
Esta diferencia se debe a que en el cuerpo de la respuesta se pueden enviar objetos de diferentes
tipos: imágenes, sonido, etc. y no únicamente ficheros en formato texto.
Para enviar esta información necesitamos una clase que nos permita enviar un flujo de bytes. El
método write de la clase OutputStream permite justamente esto, el envío de un flujo de bytes.
8. (1 punto) Tras establecer una conexión TCP, en la que no se usan ACKs retrasados, el
computador A transmite 4 segmentos con las siguiente características:
Segmento
Segmento
Segmento
Segmento
1:
2:
3:
4:
Número
Número
Número
Número
de
de
de
de
secuencia
secuencia
secuencia
secuencia
3500,
3700,
3900,
4100,
con
con
con
con
200
200
200
200
bytes
bytes
bytes
bytes
de
de
de
de
datos.
datos.
datos.
datos.
a) El segmento 2 se pierde durante la transmisión. ¿Cuántos reconocimientos recibirá A tras la
transmisión de estos 4 segmentos? ¿Qué valor tendrán en el campo "Número de
Reconocimiento"?
Se recibirán 3 ACKs con los siguientes valores: 3700, 3700 y 3700
b) Cuando se transmite el segmento número 2, el RTO tiene un valor de 1,2 segundos. El ACK
asociado a este segmento se pierde. ¿Qué valor tendrá el RTO que se utilice en la
retransmisión? Justifica por qué.
El valor del RTO en la retransmisión será de 2,4 segundos.
Cuando hay retransmisiones, no se aplica el procedimiento general de estimación del RTT, en
cambio se duplica el valor del RTO utilizado en la transmisión anterior. Este mecanismo se conoce
como exponential backoff.
9. (1 punto) Con respecto al protocolo HTTP:
a) Indica la URL completa que tenemos que introducir en un navegador para acceder al
documento "index.html" del servidor HTTP que está instalado en el puerto 7070 del
computador "www.servidor.com" .
http://www.servidor.com:7070/index.html
b) Describe la petición HTTP que generará el navegador si está configurado para usar la versión
1.1 de HTTP. Utiliza únicamente la(s) cabecera(s) imprescindible(s).
GET /index.html HTTP/1.1 <CR><LF>
Host: www.servidor.com:7070 <CR><LF>
<CR><LF>
5
c) Describe la respuesta HTTP (excepto el cuerpo) que generará el servidor si el documento
solicitado está disponible. La respuesta debe incluir las cabeceras necesarias para indicar el
formato del documento (text/html) y su longitud (335 bytes).
HTTP/1.1 200 OK <CR><LF>
Content-Length: 335 <CR><LF>
Content-Type: text/html <CR><LF>
<CR><LF>
Supondremos en lo que sigue que el documento "index.html" contiene dos imágenes asociadas:
d) Si se usara el protocolo HTTP versión 1.0, ¿cuántas conexiones TCP sería necesario
establecer entre cliente y servidor para descargar la página web completa? ¿Quién inicia el
establecimiento y quién el cierre de estas conexiones? Razona tu respuesta.
Se establecerán 3 conexiones: una para el documento "index.html" y dos más para las imágenes
asociadas. En la versión HTTP/1.0 se usa una conexión TCP distinta para descargar cada objeto
(html, gif, etc.).
Las conexiones las inicia el cliente y las cierra el servidor. En HTTP/1.0, el servidor envía el
documento solicitado e, inmediatamente después, cierra la conexión.
e) Supongamos ahora que la conexión se realiza a través de un proxy. Las imágenes están
contenidas en la caché del proxy, pero no el documento HTML. ¿Cuántas conexiones TCP
será necesario establecer entre cliente y proxy para descargar la página web completa? ¿y
entre proxy y servidor? (en ambos casos se usa el protocolo HTTP versión 1.0). Razona tu
respuesta.
Conexiones TCP entre cliente y proxy: 3, una por cada objeto.
Conexiones TCP entre proxy y servidor: una para el documento HTML, las imágenes las puede
servir desde su caché, evitando así el acceso al servidor.
10. (0,75 puntos) En el bucle principal de un servidor encontramos las siguientes instrucciones:
while(true) {
Socket cliente=ss.accept();
cliente=ss.accept();
new atiendePeticion(cliente).start();
}
¿Qué inesperado comportamiento producirá este servidor, suponiendo que la clase
atiendePeticion se encarga de ofrecer un determinado servicio de aplicación?
Los clientes pares reciben servicio normalmente. Los clientes impares, sin embargo, no reciben
servicio alguno.
11. (0,5 puntos) ¿Qué hacemos con las excepciones que se produzcan en el método run() de una
clase derivada de la clase Thread?
No se pueden lanzar excepciones en el método run() de una clase derivada de Thread, por lo tanto
hay que tratarlas oportunamente mediante el uso de cláusulas try/catch.
6
Descargar