1º parcial de Redes - ETSIA

Anuncio
1º parcial de Redes - ETSIA - 30 de enero de 2007
Apellidos, Nombre:
Soluciones
_
Grupo de matrícula:
1. (1,5 punto) Dos host, A y B, están conectados mediante un router. La distancia entre cada uno
de los hosts (A, B) y el router es de 100 m. La velocidad de transmisión empleada por todos los
dispositivos es 100 Mbps, y la velocidad de propagación a través de los enlaces es de 2 x 10⁸
m/s.
a) Si se está transmitiendo de forma continua, ¿cuántos bits puede transmitir A antes de que su
primer bit transmitido llegue al router?
El número de bits que A podrá transmitir hasta que su primer bit llegue al router serán los bits que
pueden transmitirse durante un intervalo igual al tiempo de propagación. De esta forma tenemos:
Ttrans = Tprop
nº bits/Vtrans = Distancia/Vprop --> nº bits = (100 m / 2 x 108 m/s) x (100 x 106 bit/s)
nº bits = 50 bits
b)Sabiendo que las cabeceras de los niveles inferiores a TCP ocupan 34 bytes en total, ¿cuánto
tiempo tardaría A en establecer una conexión TCP con B? Suponemos despreciables los
tiempos de procesamiento, y no se considera el retardo asociado a las colas en el router.
El establecimiento de conexión en TCP se realiza mediante el intercambio de los segmentos que
podemos ver en la figura:
router
A
B El tiempo de transmisión de un segmento será:
SYN
SYN
SYN,ACK
SYN,ACK
ACK
ACK
T trans = nº bits/Vtrans
Los segmentos intercambiados entre los dispositivos no llevarán
datos, al tratarse de segmentos de establecimiento de conexión,
por lo tanto:
nº bits = cabecera TCP + cabeceras inferiores =
= 20 bytes + 34 bytes = 54 x 8 bits = 432 bits
El tiempo total necesario para que el segmento de SYN llegue
de A hasta B será:
T sync = T trans A-router + T prop A-router + T trans router-B + T prop router-B
donde
T trans A-router = T trans router-B = 432 bits / 100 x 106 bit/s = 432 x 10-8 seg.
T prop A-router = T prop router-B = 100 m / 2 x 108 m/s = 50 x 10-8 seg.
Puesto que los tres segmentos de establecimiento de conexión son del mismo tamaño, el tiempo
total de establecimiento de la conexión con B será:
=3xT
= 3 x ( 2 x (432 + 50) x 10-8 seg) = 3 x 964 x 10-8 = 2892 x 10-8 seg.
T
total
sync
c) ¿Cuál sería la longitud de un bit expresada en metros si aumentamos la velocidad de
transmisión a 155 Mbps?
El tiempo de transmisión de 1 bit será: Ttrans = nº bits/Vtrans = 1 bit/155 x 106 bit/s
el tiempo que tardará en propagarse la señal de dicho bit por el enlace será:
T = (Distancia / 2 x 108 m/s))
prop
por lo tanto, igualando los dos términos tendremos:
Ttrans = Tprop
nº bits/Vtrans = 1 bit/155 x 106 bit/s = (Distancia / 2 x 108 m/s)
Distancia = (1 bit/155 x 106 bit/s) x 2 x 108 m/s) = 1,29 m/bit
2. (0,5 puntos) Justifica la utilización de MIME en el correo electrónico.
El protocolo de correo SMTP impone que los mensajes de correo estén en formato ASCII 7-bits. La
utilización de MIME permite enviar texto y objetos que inicialmente están en un formato diferente al
ASCII 7-bits, permitiendo así la inclusión de imágenes, audio, ficheros comprimidos, ejecutables, etc...
en los correos electrónicos. Entre otras cosas, MIME especifica cómo convertir esos objetos al ASCII 7bits que necesita SMTP.
3. (0,5 puntos) Indica la utilidad de la cabecera “ Content-Transfer-Encoding”.
La cabecera “Content-Transfer-Encoding” especifica el método empleado para codificar los
datos en formato distinto a ASCII 7-bits.
Esta cabecera permite al receptor conocer el método que debe emplear para decodificar los datos
recibidos.
4. (0,5 puntos) ¿Es posible emplear un mismo socket TCP para intercambiar datos con dos
procesos diferentes? ¿Y si el socket es UDP? Justifica las respuestas.
No, ya que un socket TCP, o bien está en modo pasivo (no intercambia datos, sino que espera
conexiones), o está conectado a un único socket remoto, y por tanto a un único proceso.
En el caso de sockets UDP, sí es posible, puesto que estos sockets no conectan con otros, sino que es
necesario especificar la dirección destino para cada DatagramPacket. Cada datagrama que se envía
puede ir destinado a un socket distinto.
5. (0,5 puntos) Indica las clases mínimas necesarias de Java.net necesarias para implementar un:
a) Servidor TCP
b)Cliente TCP
c) Cliente UDP
a) ServerSocket, Socket
b) Socket
c) DatagramSocket, DatagramPacket, InetAddress
6. (0,5 puntos)
a) ¿Puede un cliente abrir dos sockets sobre el mismo puerto local (del mismo protocolo)?
Justifica la respuesta.
No. La apertura del segundo socket produciría un error, ya que de permitirse la existencia de este
segundo socket haría que TCP no supiera a cuál entregar un segmento si se emplean ambos para
acceder al mismo servidor.
b)¿Pueden existir en un servidor dos sockets con el mismo puerto y protocolo? Justifica la
respuesta, y pon un ejemplo.
Si, únicamente en los servidores TCP, ya que en este caso los sockets se diferencian por la conexión,
de la cual forma parte la dirección del socket remoto (del cliente), ya que son sockets conectados.
Ejemplo: Se crean sockets con el mismo puerto en un servidor concurrente cada vez que se ejecuta la
llamada a accept .
7. (0,5 puntos)¿Cuáles son los objetivos del control de flujo y del control de la congestión en TCP?
Ambos mecanismos intentan evitar la pérdida de datos por saturación. En el caso del control de flujo,
se desea evitar que se sature el receptor de los datos, mientras que en el caso del control de
congestión se evita que lo haga la red.
8. (0,5 puntos) ¿En qué consiste el piggybacking?
Consiste en añadir un campo ACK (de reconocimiento) a los datos transmitidos, intentando minimizar
el número de mensajes de ACK de los datos recibidos.
Dicho de otra forma, permite que los mensajes de ACK viajen en los segmentos de datos del sentido
contrario.
9. (1 punto) Desde el ordenador rtv1.retevision.es se quiere enviar un correo. El remitente es
[email protected] y el destinatario [email protected]. El DNS local de dicho ordenador
es montgo.retevision.es y el servidor SMTP del remitente smtp.retevision.es. La dirección
destino [email protected] es un alias de [email protected], [email protected] y
[email protected]. Sabiendo que el servidor de correo para el dominio redes.upv.es es
zoltar.rediris.es, y que las cachés DNS de los equipos mencionados están vacías, indica la
secuencia TOTAL de PETICIONES DNS (las contestaciones no) necesaria para poder hacer
llegar el correo. Supóngase que los TLD's conocen todos los servidores de nombres autorizados.
Orden
Origen
Destino
Tipo de
consulta
Recursiva/
Iterativa
Objeto de la consulta
1
rtv1.retevisión.es
montgo.retevision.com
A
R
smtp.retevision.es
2
smtp.retevision.es
montgo.retevision.com
MX
R
redes.upv.es
3
montgo.retevision.com
root.A
MX
I
redes.upv.es
4
montgo.retevision.com
DNS.es
MX
I
redes.upv.es
5
montgo.retevision.com
DNS.redes.upv.es
MX
I
redes.upv.es
6
zoltar.rediris.es
DNS.rediris.es
MX
R
privada.com
7
DNS.rediris.es
root.A
MX
I
privada.com
8
DNS.rediris.es
DNS.com
MX
I
privada.com
9
DNS.rediris.es
DNS.privada.com
MX
I
privada.com
10.(1 punto) Escribe un programa en Java que implemente un servidor TCP iterativo. El servidor
acepta una línea de caracteres del cliente y devuelve al cliente la misma línea.
import java.net.*;
import java.io.*;
class ServidorTCP {
public static void main(String args[]) throws UnknownHostException,IOException
{
ServerSocket ss = new ServerSocket(7777);
while (true) {
Socket s = ss.accept();
BufferedReader entrada =
new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter salida = new PrintWriter(s.getOutputStream());
salida.println(entrada.readLine());
s.close();
}
}
}
b) Modifica el programa realizado para convertir el servidor iterativo en un servidor
concurrente.
import java.net.*;
import java.io.*;
class ServidorTCPConcurrente extends Thread {
Socket id;
public ServidorTCPConcurrente(Socket s) {id=s;}
public void run() {
try {
BufferedReader entrada =
new BufferedReader(new InputStreamReader(id.getInputStream()));
PrintWriter salida = new PrintWriter(id.getOutputStream());
salida.println(entrada.readLine());
id.close();
}
} catch(Exception e) {}
}
public static void main(String args[]) throws IOException{
ServerSocket ss=new ServerSocket(7777);
while(true) {
Socket s = ss.accept();
ServidorTCPConcurrente t = new ServidorTCPConcurrente(s);
t.start();
}
}
}
11.(0,5 puntos) Indica alguna razón por la que pueda ocurrir la excepción IOException al
instanciar un objeto de tipo Socket en Java.
Al intentar conectar un socket cliente el puerto en el ordenador destino está cerrado.
12.(1 punto) La gráfica siguiente representa la evolución de una ventana de congestión TCP en
función del tiempo. Responde las siguientes preguntas:
a) ¿Qué valor tiene la ventana de permisos del receptor (WIN)?
64 segmentos
b)Identifica los intervalos en los que actúa el mecanismo de incremento aditivo.
[6,8] y [9,13]
c) ¿Qué ha sucedido en RTT 8? ¿y en RTT 13?
En ambos casos se ha producido una pérdida de segmento, ésta se ha detectado por:
RTT = 8 : recepción de 3 ACKs duplicados
RTT = 13: vencimiento del temporizador
d)Calcula el valor del umbral en los RTTs: 3, 10 y 15. Indica la fórmula utilizada para el
cálculo.
RTT = 3, umbral= WIN=64
RTT = 10, umbral = max ( ventana de transmisión/2, 2 segmentos) = (64/2,2) =32
RTT = 15, umbral = max ( ventana de transmisión/2, 2 segmentos) = (36/2,2) =18
e) Suponiendo que en el RTT 10 WIN pasa a valer 32 , calcula los valores de la ventana de
congestión y del umbral en el RTT 18. Indica la fórmula utilizada para el cálculo.
umbral = max ( ventana de transmisión/2, 2 segmentos) = (32/2,2) =16
Ventana de congestión = Ventana de congestión + 1/Ventana de congestión = 17
13.(0,5 puntos) En una aplicación ftp:
a) ¿Qué órdenes de un cliente FTP provocan que se establezca una conexión de datos? Indica si
son órdenes del protocolo FTP o de la interfaz de usuario. (Se aceptan ambos tipos)
Las órdenes que crean una conexión de datos son las que producen un intercambio de datos (bien sea
ficheros o contenido de directorios). Estas órdenes son LIST, RETR y STOR en el caso del protocolo
FTP y dir, ls, get, put, mget y mput en el caso de la interfaz de usuario.
b)¿Cómo se sabe el número de puerto al que hay que conectarse al establecer una conexión de
datos?
Si el modo es activo, el cliente le envía al servidor la orden PORT n1, n2, n3, n4, n5, n6, donde
n5*256+n6 es el número de puerto donde el servidor debe conectarse al cliente.
Si el modo es pasivo, entonces el servidor devuelve la cadena “227 Entering Passive Mode (n1, n2,
n3, n4, n5, n6)”, donde n5*256+n6 es el número de puerto donde el cliente debe conectarse al
servidor.
14.(0,5 puntos) Dada la orden ./sock -l :7777 -d 'cat inicio.htm' indica la misión de cada uno de los
parámetros.
El parámetro “-l” indica que se va a crear un servidor. Por defecto, el servidor será un servidor TCP,
dado que no se indica lo contrario.
El parámetro “-d” indica que cuando se conecte un cliente se ejecute la orden “cat inicio.htm”. La
salida estándar de esta orden se redirige hacia la red, de forma que el cliente recibe la salida generada
por la orden.
15.(0,5 puntos) El siguiente fragmento de código forma parte de un cliente del protocolo http:
Socket s = new Socket(“www.redes.upv.es”,80);
System.setProperty(“line.separator”,”\r\n”);
BufferedReader lee = new BufferedReader(new
InputStreamReader(s.getInputStream()));
PrintWriter esc = new PrintWriter(s.getOutputStream(),true);
esc.println(“GET /redes/index.html HTTP/1.0”);
System.out.println(“lectura: “ + lee.readLine());
Suponiendo que en el puerto 80 de www.upv.es está escuchando un servidor que emplea el
protocolo http y que el archivo solicitado se encuentra disponible, indica qué ocurrirá al ejecutar el
programa. Justifica la respuesta.
El cliente se bloqueará en la línea “System.out.println(“lectura: “ + lee.readLine());” y no continua su
ejecución. La razón es que el servidor ha recibido parte de la petición HTTP, pero no la ha recibido
completa. Le falta una línea en blanco para saber que puede procesar la petición. Dado que el cliente
no envía esa línea en blanco, el servidor sigue esperando el resto de la petición y, por lo tanto, no
devuelve nada al cliente. A su vez, el cliente está esperando una línea del servidor. Como ambos se
esperan mutuamente, se entra en una situación de bloqueo.
Descargar