07.05.2013 Views

Examen de Redes - ETSIA – 9 de septiembre - Primer Parcial

Examen de Redes - ETSIA – 9 de septiembre - Primer Parcial

Examen de Redes - ETSIA – 9 de septiembre - Primer Parcial

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Apellidos, Nombre:<br />

Grupo:<br />

<strong>Examen</strong> <strong>de</strong> Re<strong>de</strong>s - <strong>ETSIA</strong> <strong>–</strong> 9 <strong>de</strong> <strong>septiembre</strong> - <strong>Primer</strong> <strong>Parcial</strong><br />

AUTORIZO a los profesores <strong>de</strong> la asignatura Re<strong>de</strong>s <strong>de</strong> 2º curso <strong>de</strong> la <strong>ETSIA</strong> a publicar las calificaciones<br />

<strong>de</strong> los exámenes <strong>de</strong> la asignatura en la web o microweb <strong>de</strong> la asignatura.<br />

Firma: ..................................................<br />

1. (0,5 puntos) Indica cómo pue<strong>de</strong> un servidor web saber qué cliente (Mozilla, Internet Explorer, etc.) está<br />

solicitándole una página web. ¿Lo pue<strong>de</strong> saber siempre? Justifica la respuesta.<br />

Mediante una cabecera en la petición HTTP. Concretamente la cabecera User-Agent:<br />

No lo pue<strong>de</strong> saber siempre ya que esta cabecera no es obligatoria.<br />

2. (1 punto) El protocolo SMTP no requiere la autenticación <strong>de</strong>l cliente. ¿Debe permitirse que clientes<br />

ajenos a la organización que gestiona un servidor SMTP abran una sesión SMTP en el servidor (tengáse<br />

en cuenta que estos clientes pue<strong>de</strong>n estar incluidos en agentes <strong>de</strong> usuario u otros servidores)? ¿Por qué?<br />

¿Qué acciones <strong>de</strong>berían permitírseles a cada uno <strong>de</strong> estos tipos <strong>de</strong> clientes?<br />

Sí <strong>de</strong>be permitirse que clientes ajenos a la organización abran una sesión SMTP en el servidor. Es<br />

necesario para que otros servidores SMTP hagan llegar sus mensajes a los <strong>de</strong>stinatarios <strong>de</strong> la<br />

organización.<br />

Estos clientes “ajenos” sólo <strong>de</strong>berían tener la posibilidad <strong>de</strong> entregar mensajes dirigidos a<br />

<strong>de</strong>stinatarios <strong>de</strong> la propia organización. No se les <strong>de</strong>bería permitir que utilizasen a nuestro<br />

servidor como retransmisor para enviar mensajes a otros <strong>de</strong>stinatarios externos.<br />

3. (0,75 puntos) En una comunicación <strong>de</strong> datos mediante FTP, ¿qué es el modo activo?, ¿cómo se conoce la<br />

dirección IP y el puerto al que conectarse?<br />

Modo activo: cuando se va a transferir un archivo, el servidor inicia la conexión <strong>de</strong> datos<br />

<strong>de</strong>s<strong>de</strong> su puerto 20 al puerto que le indica el cliente. Para comunicarle el puerto <strong>de</strong> conexión (y<br />

la dirección IP) el cliente envía por la conexión <strong>de</strong> control la or<strong>de</strong>n<br />

PORT d1,d2,d3,d4,p1,p2<br />

don<strong>de</strong> d1.d2.d3.d4 es la dirección IP en la notación usual y p1*256+p2 es el puerto en <strong>de</strong>cimal.<br />

1


4. (2 puntos) Dado el siguiente servidor escrito en Java:<br />

import java.net.*;<br />

import java.io.*;<br />

class servidor {<br />

public static void main(String args[]) throws IOException {<br />

ServerSocket ss=new ServerSocket(7777);<br />

while (true) {<br />

Socket s=ss.accept();<br />

PrintWriter out = new PrintWriter(s.getOutputStream(),true);<br />

out.println("Bienvenido!");<br />

s.close(); }<br />

}<br />

}<br />

a) Escribe un cliente en Java que se conecte a este servidor que se ejecuta en “zoltar.re<strong>de</strong>s.upv.es”,<br />

lea la información que envía el servidor y la visualice por pantalla.<br />

import java.net.*;<br />

import java.io.*;<br />

class cliente {<br />

public static void main(String args[]) throws UnknownHostException,IOException {<br />

Socket s = new Socket("zoltar.re<strong>de</strong>s.upv.es",7777);<br />

BufferedRea<strong>de</strong>r entrada =<br />

new BufferedRea<strong>de</strong>r(new InputStreamRea<strong>de</strong>r(s.getInputStream()));<br />

System.out.println(entrada.readLine());<br />

}<br />

}<br />

b) Diseña una versión concurrente <strong>de</strong>l servidor.<br />

import java.io.*;<br />

import java.net.*;<br />

class servidorConcurrente extends Thread {<br />

}<br />

Socket sock;<br />

servidorConcurrente(Socket s) { sock = s; }<br />

public void run() {<br />

try {<br />

PrintWriter salida = new PrintWriter(sock.getOutputStream(),true);<br />

salida.println("Bienvenido!");<br />

sock.close();<br />

}<br />

catch (Exception e) { }<br />

}<br />

public static void main(String[] args) throws IOException {<br />

ServerSocket ss=new ServerSocket(7777);<br />

while (true) {<br />

Socket s=ss.accept();<br />

servidorConcurrente t = new servidorConcurrente(s);<br />

t.start();<br />

}<br />

}<br />

5. (2 puntos) Tras resolver el nombre <strong>de</strong> un servidor web, un cliente se conecta a él para obtener una página<br />

que contiene un documento HTML <strong>de</strong> 100 bytes y dos gráficos <strong>de</strong> 3000 bytes cada uno (3 objetos en<br />

2


total). Las conexiones emplean los mecanismos <strong>de</strong> control <strong>de</strong> la congestión TCP, con tamaño inicial <strong>de</strong><br />

ventana <strong>de</strong> congestión igual a uno. Para cada segmento recibido se genera un ACK <strong>de</strong> forma inmediata.<br />

El MSS <strong>de</strong>l segmento es <strong>de</strong> 1000 bytes. Todas las peticiones HTTP tienen un tamaño <strong>de</strong> 100 bytes.<br />

El nivel <strong>de</strong> enlace aña<strong>de</strong> cabeceras <strong>de</strong> 14 bytes y no impone ninguna restricción al tamaño máximo o<br />

mínimo <strong>de</strong> trama. El nivel <strong>de</strong> red aña<strong>de</strong> cabeceras <strong>de</strong> 20 bytes. La velocidad <strong>de</strong> transmisión es 10 Mbps,<br />

y el tiempo <strong>de</strong> propagación 1 segundo.<br />

Calcula el tiempo que tarda en bajarse dicha página si:<br />

a) El navegador emplea el protocolo HTTP 1.0 y no admite conexiones concurrentes.<br />

b) El navegador y el servidor utilizan el protocolo HTTP 1.1 sin pipeline.<br />

La solución a este problema no es única. Mostraremos aquí una <strong>de</strong> las posibles soluciones.<br />

a) HTTP 1.0: conexiones no persistentes. Se necesita una conexión para cada uno <strong>de</strong> los objetos.<br />

SYN<br />

SYN , ACK<br />

ACK<br />

GET<br />

HTML<br />

ACK<br />

FIN<br />

FIN, ACK<br />

ACK<br />

Para cada gráfico se necesitarán 4 segmentos, ya que hay que<br />

transmitir 3000 bytes más las cabeceras HTML. El tiempo <strong>de</strong> transmision <strong>de</strong><br />

las cabeceras HTML lo <strong>de</strong>spreciaremos ya que se trata <strong>de</strong> unos pocos bytes.<br />

Desglosaremos el cálculo en dos partes: los tiempos <strong>de</strong> transmisión y los tiempos<br />

<strong>de</strong> propagación.<br />

El tiempo <strong>de</strong> transmisión diferirá para los distintos segmentos, ya que tienen distintas longitu<strong>de</strong>s:<br />

<strong>–</strong> segmentos sólo <strong>de</strong> control (ACKs, SYN, FIN) = 20 + 20 + 14 = 54 bytes (20 <strong>de</strong> la cabecera TCP, 20 <strong>de</strong><br />

la cab. IP y 14 <strong>de</strong> la cab. <strong>de</strong> enlace <strong>de</strong> datos).<br />

<strong>–</strong> Gets y página HTML = 20 + 20 + 14 + 100 = 154 bytes<br />

<strong>–</strong> Gráficos = 1054 bytes<br />

RTT 1<br />

RTT 2<br />

RTT 3<br />

RTT 4<br />

T =27×544×1546×1054×8=63.026/10<br />

trans<br />

7 =6,3×10 −3<br />

El tiempo <strong>de</strong> propagación compren<strong>de</strong> 2 segundos por cada RTT (exceptuando el RTT 6).<br />

T =4×25×25×22=30 s.<br />

propag<br />

Como pue<strong>de</strong> verse el tiempo <strong>de</strong> transmisión es <strong>de</strong>spreciable frente al <strong>de</strong> propagación ya que es 3 ór<strong>de</strong>nes<br />

<strong>de</strong> magnitud menor, por lo que el tiempo necesario para <strong>de</strong>scargarse la página pue<strong>de</strong> estimarse como:<br />

T ≈ T ≈30 s.<br />

total propag<br />

3<br />

s.<br />

SYN<br />

SYN , ACK<br />

ACK<br />

GET<br />

Graf. 1.1<br />

ACK<br />

Graf. 1.2<br />

Graf. 1.3<br />

ACK<br />

ACK<br />

Graf. 1.4<br />

ACK<br />

FIN<br />

FIN, ACK<br />

ACK<br />

RTT 1<br />

RTT 2<br />

RTT 3<br />

RTT 4<br />

RTT 5<br />

RTT 6


) HTTP 1.1: conexión persistente. Una conexión para todos los objetos.<br />

SYN<br />

SYN , ACK<br />

ACK<br />

GET<br />

HTML<br />

ACK<br />

GET<br />

Graf. 1.1<br />

Graf. 1.2<br />

ACK<br />

ACK<br />

Graf. 1.3<br />

Graf. 1.4<br />

GET<br />

Graf. 2.1<br />

Graf. 2.2<br />

Graf. 2.3<br />

Graf. 2.4<br />

ACK<br />

FIN<br />

FIN, ACK<br />

ACK<br />

RTT 1<br />

RTT 2<br />

RTT 3<br />

RTT 4<br />

RTT 5<br />

RTT 6<br />

RTT 7<br />

Nota: por claridad en el dibujo durante el RTT sólo se ha dibujado un<br />

único ACK <strong>de</strong> los 4.<br />

El tiempo <strong>de</strong> propagación es:<br />

T =7×2=14 s.<br />

propag<br />

El tiempo <strong>de</strong> transmisión es:<br />

T =15×544×1546×1054×8=61.578/10<br />

trans<br />

7 =6,1×10 −3<br />

También en este caso po<strong>de</strong>mos aproximar el tiempo total al <strong>de</strong><br />

≈14 s.<br />

propagación. T<br />

total<br />

≈ T<br />

propag<br />

6. (1 punto) El host B recibe peticiones <strong>de</strong> conexión TCP <strong>de</strong>s<strong>de</strong> un host remoto llamado “A”. Realiza, para<br />

cada uno <strong>de</strong> los escenarios siguientes, un esquema gráfico <strong>de</strong>tallando qué segmentos se intercambiarían<br />

TRAS la llegada <strong>de</strong> los segmentos que se indican. No hay que <strong>de</strong>tallar ningún segmento <strong>de</strong> la posible<br />

fase <strong>de</strong> transferencia <strong>de</strong> datos.<br />

a) Llega una petición <strong>de</strong> conexión <strong>de</strong>s<strong>de</strong> “A”, con número <strong>de</strong> secuencia 34, a un puerto don<strong>de</strong> no hay<br />

ningún servidor escuchando.<br />

SYN , 34<br />

RST y, ACK 35B rechaza la conexión<br />

b) Llega una petición <strong>de</strong> conexión <strong>de</strong>s<strong>de</strong> “A”, con número <strong>de</strong> secuencia 34, a un puerto don<strong>de</strong> hay un<br />

servidor escuchando. Antes <strong>de</strong> que se haya completado el establecimiento <strong>de</strong> la conexión en “B”<br />

llega, <strong>de</strong>s<strong>de</strong> “A”, una retransmisión <strong>de</strong> la petición anterior.<br />

SYN , 34<br />

SYN , 34<br />

SYN 2000 , ACK 35<br />

SYN 2000 , ACK 35<br />

ACK 2001<br />

ACK 2001<br />

4<br />

B elige como número <strong>de</strong><br />

secuencia inicial 2000<br />

Conexión establecida<br />

Se ignora<br />

s.


c) “B” envía una petición <strong>de</strong> conexión a “A”, con número <strong>de</strong> secuencia 75, a un puerto don<strong>de</strong> hay un<br />

servidor escuchando. Instantes <strong>de</strong>spués, “B” recibe una petición <strong>de</strong> conexión <strong>de</strong>s<strong>de</strong> “A”, con número<br />

<strong>de</strong> secuencia 34, a un puerto don<strong>de</strong> también hay un servidor escuchando.<br />

A elige como número <strong>de</strong><br />

secuencia inicial 3000<br />

Conexión establecida<br />

d) Llega una petición <strong>de</strong> conexión <strong>de</strong>s<strong>de</strong> “A”, con número <strong>de</strong> secuencia 34. Tras enviar “A” la petición<br />

<strong>de</strong> conexión, el computador A es reiniciado. Cuando “B” contesta esta petición <strong>de</strong> conexión, el<br />

computador A vuelve a estar totalmente operativo, ¿cuál sería su respuesta?<br />

A se reinicia y no tiene<br />

constancia <strong>de</strong> su petición<br />

A rechaza la conexión<br />

SYN 75<br />

SYN 34<br />

SYN 3000, ACK 76<br />

SYN 2000 , ACK 35<br />

ACK 3001<br />

ACK 2001<br />

SYN 2000 , ACK 35<br />

RST x, ACK 2001<br />

7. (0,5 puntos) ¿Qué tipo <strong>de</strong> información obtenemos cuando hacemos una consulta al servidor DNS con el<br />

nombre <strong>de</strong> dominio upv.es y el tipo MX?, ¿y si repetimos la consulta con el tipo NS?<br />

Cuando hacemos una consulta <strong>de</strong>l tipo MX al servidor DNS acerca <strong>de</strong>l dominio upv.es obtenemos los<br />

nombres <strong>de</strong> dominio <strong>de</strong> los servidores <strong>de</strong> correo electrónico que atien<strong>de</strong>n el dominio <strong>de</strong> correo upv.es.<br />

Si hacemos la misma consulta, pero con el tipo NS, obtenemos nombres <strong>de</strong> dominio <strong>de</strong> los servidores <strong>de</strong><br />

nombres para el dominio upv.es.<br />

8. (0,5 puntos) Explica <strong>de</strong> qué forma se pue<strong>de</strong> reducir el tiempo <strong>de</strong> respuesta en los accesos a páginas web<br />

al usar un proxy web.<br />

Al usar un proxy web, todas las peticiones <strong>de</strong> los clientes se canalizan por dicho proxy. Este proxy podría<br />

guardar una caché <strong>de</strong> las páginas consultadas por los clientes, <strong>de</strong> forma que cuando un cliente acce<strong>de</strong> a<br />

una página web <strong>de</strong>terminada, si antes otro cliente ha accedido a esa misma página, el proxy no necesita<br />

solicitar la página al servidor web correspondiente sino que la pue<strong>de</strong> sacar <strong>de</strong> su propia caché,<br />

ahorrándose el tiempo <strong>de</strong> la consulta y <strong>de</strong> esta forma reduciendo el tiempo <strong>de</strong> respuesta que observa el<br />

cliente.<br />

5<br />

B elige como número <strong>de</strong><br />

secuencia inicial 2000<br />

Conexión establecida<br />

SYN , 34B elige como número <strong>de</strong><br />

secuencia inicial 2000


9. (1 punto) Suponiendo que el emisor tiene siempre datos pendientes <strong>de</strong> transmitirse, muestra en la tabla<br />

siguiente la evolución <strong>de</strong> la ventana <strong>de</strong> transmisión <strong>de</strong>l emisor (en segmentos) en función <strong>de</strong>l tiempo<br />

(medido en RTTs), para una conexión TCP que se inicia en RTT=0 con la ventana <strong>de</strong> congestión igual a<br />

2 segmentos y la ventana <strong>de</strong> permisos <strong>de</strong>l receptor permanentemente igual a 64 segmentos. Asimismo,<br />

indica cómo se modifica esta ventana si en RTT=10 vence un temporizador.<br />

RTT 0 1 2 3 4 5 6 7 8 9<br />

Vtrans 2 4 8 16 32 64 64 64 64 64<br />

Tras vencer el temporizador en RTT= 10, Vtrans = 1<br />

10.(0,75 puntos) Encuentra los cinco errores <strong>de</strong> la siguiente cabecera TCP, sabiendo que correspon<strong>de</strong> al<br />

primer segmento <strong>de</strong> establecimiento <strong>de</strong> una conexión realizada por un cliente estándar <strong>de</strong> HTTP hacia el<br />

correspondiente servidor estándar, y que el campo <strong>de</strong> opciones no está vacío. Razona la respuesta.<br />

Puerto TCP origen: 120<br />

Puerto TCP <strong>de</strong>stino: 80<br />

Número <strong>de</strong> secuencia: 1400<br />

Número <strong>de</strong> reconocimiento: 0<br />

Longitud <strong>de</strong> la cabecera: 5<br />

Reservado: 0<br />

Código: URG = 0<br />

ACK = 1<br />

PSH = 0<br />

RST = 0<br />

SYN = 1<br />

FIN = 0<br />

Tamaño <strong>de</strong> la ventana (en <strong>de</strong>cimal) 86535<br />

Checksum (en hexa<strong>de</strong>cimal) 9FB0<br />

Opciones (en bytes hexa<strong>de</strong>cimales) 02- 04 - 05 <strong>–</strong> B4 (MSS = 1460)<br />

04 <strong>–</strong> 02 (activar reconocimiento selectivo)<br />

Relleno: (sin relleno)<br />

Nota: los valores <strong>de</strong>l checksum y <strong>de</strong> las opciones son correctos.<br />

Error 1: El puerto origen no pue<strong>de</strong> ser el 120, dado que es un cliente estándar y por tanto el puerto que<br />

utilizase <strong>de</strong>bería ser mayor que 1023.<br />

Error 2: La longitud <strong>de</strong> la cabecera no pue<strong>de</strong> ser 5, dado que el cabecera tiene opciones y una longitud<br />

<strong>de</strong> 5 correspon<strong>de</strong> a una cabecera sin opciones. El valor correcto es 7.<br />

Error 3: El bit ACK no pue<strong>de</strong> ser 1 dado que es el primer segmento que se envía y aun no hay nada que<br />

reconocer.<br />

Error 4: El tamaño <strong>de</strong> la ventana no pue<strong>de</strong> ser 86.535 puesto que ese valor es superior al valor máximo<br />

<strong>de</strong> 64K.<br />

Error 5: Dado que el campo <strong>de</strong> opciones no abarca un número entero <strong>de</strong> palabras <strong>de</strong> 32 bits, necesita ser<br />

rellenado para ajustarse a un múltiplo entero <strong>de</strong> 32 bits. Sin embargo, el relleno está vacío, cuando<br />

<strong>de</strong>bería ser <strong>de</strong> 16 bits.<br />

6

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!