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
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