Ejercicios

Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
Sobre el Protocolo UDP_________________________________
1. ¿Qué sucedería si por error recibiera UDP un datagrama UDP destinado a otra
máquina (con otra dirección IP)?.
2. ¿ Por qué es necesario incluir un checksum en IP, TCP y opcionalmente en UDP,
cuando a nivel de trama ya se aplica uno?. Justificad la respuesta.
3. ¿Cómo se puede distinguir a qué aplicación debe entregar UDP el datagrama que
acaba de llegar?
4. ¿Tiene algún sentido hablar de conexión entre dos computadores que se
comunican mediante UDP? Razona la respuesta.
5. El cálculo del checksum en UDP incluye el propio mensaje UDP y una pseudocabecera. Dado que la pseudo-cabecera no se transmite, ¿cómo se puede
comprobar en destino si el checksum es correcto?
Sobre el Protocolo TCP__________________________________
6. Indica de forma gráfica el funcionamiento del protocolo a tres bandas de apertura
de conexión TCP. Poner un ejemplo en el que la presencia de un duplicado
retrasado es detectada por el protocolo.
7. En TCP se utiliza un control de flujo de tipo ventana deslizante, ¿Por qué es
necesario utilizar timeouts que se adapten a las condiciones dinámicas de la red ?.
Justificar.
8. En la apertura de una conexión TCP, protocolo a tres bandas, se presenta la
situación que muestra la figura
¿ Es posible que aparezca esta situación ? Justificar.
Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
9. En una red TCP/IP un usuario malicioso se dedica a transmitir (únicamente
transmite, no recibe) mensajes TCP con el bit RST activado al puerto 80 de todos
los hosts de su red IP. ¿Qué pretende dicho usuario?, ¿Por qué no tiene ningún
efecto su ataque? ¿Qué le recomendarías para lograr su cometido?.
10. Un hacker novel manipula un router con fines maliciosos para desviar todo el
tráfico IP de web (TCP con puerto destino 80) a una máquina concreta. Para ello,
al procesar el datagrama después de comprobar su checksum, no sólo decrementa
el TTL sino que también cambia la IP destino del tráfico web. Después recalcula
el checksum y continúa encaminando el datagrama hacia el nuevo destino. Esta
manipulación, ¿sería detectada en algún momento?
11. Control de Congestión TCP. ¿ En qué consiste el procedimiento conocido como
Slow-Start ?. ¿ Cuándo se aplica ?. Explicar brevemente.
12. En el protocolo TCP, la duración de los temporizadores para la retransmisión es
crítica ¿qué sucede si su duración es demasiado corta? ¿qué pasa si, por el
contrario, su duración es demasiado larga?
13. El Round Trip Time (RTT) es el tiempo que transcurre desde que se envía un
segmento hasta que se recibe su reconocimiento. En TCP, cuando se retransmite
un mismo segmento dos veces (por vencimiento del timeout asociado al primer
segmento), y finalmente llega un reconocimiento de ese segmento ¿a cuál de los
dos segmentos transmitidos se asocia ese reconocimiento para el cálculo de su
RTT?
14. El protocolo TCP utiliza un control de flujo basado en ventana deslizante. Las
ventanas de recepción son de tamaño variable, pudiendo cerrarse completamente.
¿Qué utilidad puede tener esto? ¿ Por qué no se definen de tamaño fijo,
facilitando el manejo de las mismas?.
15. El control de flujo TCP, basado en ventana deslizante, dispone de una indicación
de ventana (buffer disponible en el otro extremo) que limita la inyección de
segmentos en la conexión. El tamaño máximo que se puede indicar es de 64 KB.
Esta limitación, ¿podría afectar a las prestaciones del TCP cuando se utilizan
redes de alta velocidad (Ej.: Gigabit Ethernet ~1Gbps) con RTTs del orden de 2
ms.?
16. En una LAN con un RTT estimado de 1 ms, indica la velocidad máxima de
transmisión que debe alcanzar esta red (BW efectivo) para que se logre una
utilización del 100% de su ancho de banda con una única conexión TCP.
2
Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
17. En la comunicación entre dos computadores mediante una red Ethernet se utiliza
el protocolo TCP. Si el tamaño de ventana que cada uno de ellos anuncia es de
16383 bytes y suponiendo un flujo constante de datos en ambos sentidos y que se
pierde el sexto paquete enviado por el computador que inicia la conexión ¿Cuál
será el tamaño de la ventana de congestión tras enviar, el décimo paquete, el
computador que inició la conexión?
18. En el cierre de conexión del protocolo TCP, cuando un extremo recibe un
segmento de FIN y responde a este segmento con otro segmento de FIN con el
ACK correspondiente, este extremo queda a la espera de recibir el último ACK.
Sin embargo, si pasa un tiempo considerable (MSL, que es bastante mayor que el
timeout habitual), este extremo considera que se ha perdido el último ACK y
cierra la conexión (tal y como se aprecia en la figura).
FIN x
FIN x
FIN y, ACK x+1
activa temp.
FIN+ACK
Envía
ACK y+1
.
.
.
.
(t.o.)
Cierra la
conexión
Si de todas formas va a cerrar la conexión si no le llega el ACK, ¿por qué no
cierra la conexión justo después de enviar el segmento FIN+ACK?
3
Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
19. En una conexión TCP uno de los extremos está transmitiendo segmentos y el otro
recibiéndolos, el tamaño de la ventana indicado por el receptor para control de
flujo es de 16 segmentos. Después de una situación de congestión, el tamaño de
la ventana de transmisión es de cuatro segmentos, y se empieza a aplicar slowstart. Teniendo en cuenta que el RTT en la situación actual se estima constante, y
que la red ya no pierde paquetes, indica de forma gráfica la evolución del tamaño
de la ventana de transmisión durante los primeros 10*RTT segundos.
Tam. ventana de txon (en
número de segmentos)
20
18
16
14
12
10
8
6
4
2
Tiempo
(en RTTs)
1
2
3
4
5
6
7
8
9
10
a) ¿Cuántos segmentos se han transmitido desde el instante 0 hasta el
10*RTT segundos (ambos incluidos)?
b) ¿Cuántos de estos segmentos aún no han sido reconocidos por el otro
extremo en el instante 10*RTT segundos?
20. Asumiendo que la ventana del receptor TCP es siempre 1 (stop&wait) y suponiendo
alfa=0,4 y beta=2, simular la transmisión de los segmentos 1, 2, 3, 4 y 5 donde el
segmento 3 requiere dos retransmisiones. Rellenar las celdas de la tabla suponiendo
que el valor inicial de RTTestimado es 5 segundos.
Seq
1 5 seg.
2
3
3’
3’’
4
5
RTTestimado
TimeOut
2*5= 10
RTTmedido
1
0,7
TimeOut
TimeOut
0,001
0,35
0,44
Nota 1: En el envío del paquete 4 se ha tomado como RTTold el RTT estimado para el paquete 3.
Nota 2: Supóngase que el valor del Timeout se calcula con la siguiente expresión: TimeOut = β*RTTestimado
4
Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
21. Un cliente de HTTP (C) solicita la descarga de una página HTML de 1200 bytes de
un servidor web (S). Inicialmente, los tamaños de ventana de ambos TCP’s son de
600 bytes, el tamaño máximo de segmento (MMS) es de 300 bytes (no incluye la
cabecera TCP). Cuando el servidor (S) envía varios segmentos seguidos, el cliente
(C) envía un reconocimiento global de los datos recibidos cada dos segmentos.
Describe el intercambio de segmentos entre cliente y servidor, en las situaciones
descritas en cada uno de los siguientes apartados.
a) El cliente establece conexión con el servidor. Los números de secuencia iniciales
seleccionados son: Cliente 2000; Servidor 4000.
Sentido Nº Secuencia Nº ACK Código (Flags) Datos
--SYN
--C  S 2000
b) A continuación, el cliente envía la petición al servidor (300 bytes) y el servidor
responde con la página HTML solicitada
Sentido Nº Secuencia Nº ACK Código (Flags) Datos
c) Por último, el servidor inicia el cierre de la conexión.
Sentido Nº Secuencia Nº ACK Código (Flags) Datos
Nota: Suponed que no se produce ninguna pérdida de paquetes.
5
Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
22. Supongamos que abrimos una conexión TCP con un servidor remoto para transferir
un fichero de 39,5 Kbytes. Una vez establecida la conexión, los parámetros iniciales
de la misma son los siguientes:
Parámetro
MSS
CWND
SSTHRES
RCWND*
RTT
TIMEOUT
Valor
500
500
8000
10000
500
2*RTT
Descripción
Tamaño máximo de segmento (en bytes)
Tamaño de la ventana de congestión (en bytes)
Umbral (Slow Start  Congestion Avoidance) en bytes
Tamaño de la ventana de recepción (en bytes)
Tiempo de ida y vuelta (roundtrip) en milisegundos
Tiempo límite del temporizador
(*) Tamaño de la ventana de recepción que el otro extremo nos ha indicado
Segmentos (MSS)
(a) Suponiendo que (1) el RTT es constante a lo largo de la conexión, (2) SOLO se
pierden los segmentos que se envían en el intervalo de tiempo [3, 4) y (3) en el
instante de tiempo t = 4,5 segundos recibimos un segmento con indicación de
ventana de recepción RCWND = 2000, dibuja en un gráfico la evolución de los
parámetros CWND, SSTHRES y RCWND.
20
18
16
14
12
10
8
6
4
2
4
5
6
7
8
9 10
Tiempo (segundos)
(b) Calcula el tiempo total de transferencia del fichero arriba mencionado.
1
6
2
3
Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
23. Una conexión TCP abierta, está caracterizada en uno de sus extremos por los
siguientes parámetros:
Parámetro Valor Descripción
MSS
1000 Tamaño máximo de segmento (en bytes)
CWND
4 Tamaño de la ventana de congestión (en segmentos)
SSTHRES
8 Umbral (Slow Start  Congestion Avoidance)
RCVWND*
10 Tamaño de la ventana de recepción (en segmentos)
SNDWND
4 Tamaño de la ventana de transmisión (en segmentos)
(*) Tamaño de la ventana de recepción que el otro extremo nos ha indicado
A partir de entonces, se producen los siguientes eventos (Ti < Ti+1):
T1 – Se recibe un nuevo ACK valido
T2 – Se recibe un nuevo ACK válido
T3 – Se recibe un segmento con indicación de ventana de recepción de 20 MSS
T4 – Se produce un timeout
Escribe los valores de los parámetros tras producirse cada uno de los eventos
indicados
Sobre Sockets__________________________________________
24. ¿Por qué al hacer la llamada bind en un servidor siempre debemos especificar la
dirección del socket local?. ¿Por qué no es necesario especificar la dirección local
cuando el bind se hace a través de un connect en un cliente?
25. ¿Qué efecto tiene una llamada a la función connect sobre un socket UDP? ¿ En
qué afecta esta conexión al socket destino?. Cuándo hacemos un connect sobre
un socket UDP ¿cuál es el tráfico de mensajes entre el socket del cliente y el del
servidor?
26. ¿Para qué sirve la llamada al sistema BIND?
27. ¿Para qué sirve la llamada al sistema LISTEN?
28. La llamada al sistema ACCEPT la utilizan los servidores para esperar a que un
cliente establezca conexión con ellos.
(a) ¿Cómo funciona internamente?
(b) ¿El socket que se le pasa como argumento y el que devuelve en la llamada,
tienen la misma dirección de socket?
(c) Si lo anterior es cierto, imagine un servidor cuyo master socket ha establecido
4 conexiones. ¿Cómo se arregla el interfaz de los sockets para entregar un
segmento destinado a esa dirección de puerto común, es decir, a que socket se
la envía?
7
Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
29. ¿Se puede usar READ y WRITE sobre un socket de tipo SOCK_DGRAM?
Justificar.
30. ¿Qué diferencia fundamental existe entre las llamadas close y shutdown?
¿Cuándo se utiliza shutdown en lugar de close?
31. Supongamos que tenemos una conexión TCP establecida a través del socket "s" y
estoy esperando recibir 100 bytes del otro extremo. Escriba el trozo de código
que leería esos 100 bytes.
Sobre el Modelo Cliente / Servidor________________________
32. En un servidor, ¿es siempre obligatorio el usar la llamada BIND en su
inicialización? ¿ y en un cliente ?. Justificar brevemente las respuestas.
33. Dibuje el esquema de los pasos que sigue el super-servidor INETD.
34. Dibuje la estructura de procesos y sockets de los servidores concurrentes UDP y
TCP.
35. Cita tres circunstancias en las cuales sea preferible un servidor sin conexión a un
servidor con conexión.
36. Supongamos que tenemos 3 hosts: A, B y C. En los hosts A y C tenemos dos
clientes que usan los puertos 2725 y 3501 respectivamente. En el host B tenemos
un servidor concurrente TCP que ofrece su servicio en el puerto 37 (como
muestra la figura). El cliente A se conecta con el servidor B y este el acepta la
conexión. Posteriormente, el cliente C se conecta al servidor B.
(a) ¿Cómo puede B diferenciar las dos conexiones, si ambas son gestionadas
a través de un mismo puerto (el 37)?.
(b) ¿Qué ocurriría si el cliente C obtiene como puerto local el 2725?
8
Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
37. El servicio de FINGER (RFC 1288) permite a un usuario solicitar información
acerca de los usuarios registrados un sistema remoto. El servidor FINGER
escucha en el puerto TCP bien conocido 79. Tras la conexión el cliente envía una
cadena de texto indicando el usuario del que solicita información, o bien la
secuencia CR+LF para obtener una lista de todos los usuarios que actualmente
están usando el sistema. El servidor envía la información solicitada y cierra la
conexión TCP. Implemente un cliente para el servicio de FINGER.
38. ¿A qué tipo de servidor corresponde cada uno de los siguientes esquemas?
Fork
Maestro
Esclavo.n
Esclavo.1
Msock
Esclavo.2
Ssock
Ssock
Aplicación
Esclavo-1
Esclavo-1
Esclavo-1
Esclavo-n
M aestro
Servidor
App. Level
Aplicación
Ssock
S.O.
Sistem a
Operativo
Socket BC
a)
Msock
UDP
b)
Esclavo.n
Esclavo.1
Ms.1 M s.2
Ms.n
Es.1
Es.k
d)
S.O. Level
Servidor
Servidor
Aplicación
Aplicación
M s.1
M s.2
M s.n
M s.1
M s.n
Es.1
Es.k
S.O.
e)
Diagrama
a)
Ssock
c)
Fork
M aestro
Msock
TCP
f)
Tipo de servidor
b)
c)
d)
e)
f)
39. ¿Cuál es el número máximo de sockets abiertos que puede tener un servidor
concurrente TCP si admite un máximo de 10 clientes simultáneos? y un servidor
concurrente UDP? Justifica las respuestas.
40. ¿Cuál es la finalidad de incluir la llamada del sistema select en un servidor
multiservicio? ¿Es necesario también su uso en un servidor multiprotocolo?
Justifica la respuesta.
41. Explica brevemente cómo se las apaña el superservidor INETD para ofrecer
servicios secuenciales (iterativos).
9
S.O.
Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
42. Dado el código de la izquierda, indica si se trata de un cliente o un servidor, que
servicio(s) utiliza, es orientado a conexión o no, secuencial y/o iterativo, etc.
int main (int argc, char *argv[])
{
struct sockaddr_in fsin;
char *service ="daytime”, buff[128];
int
tsock, usock, ssock, alen, nfds;
fd_set
rfds;
ms1=passivesock(“echo”,”tcp”,5)
ms2=passivesock(“daytime”,”tcp”,5)
us1=passivesock(“echo”, ”udp”, 0)
us2=passivesock(“daytime”, “udp”,0)
nfds = MAX (ms1,ms2,us1,us2) +1 ;
FD_ZERO (&rfds);
while (1) {
FD_SET (ms1, &rfds);
FD_SET (ms2, &rfds);
FD_SET (us1, &rfds);
FD_SET (us2, &rfds);
if ( select (nfds, &rfds, (fd_set *)0, (fd_set *)0, (struct timeval *) 0) < 0)
errexit ("select error: %s\n", sys_errlist [errno]);
if ( FD_ISSET (ms1, &rfds)) {
alen = sizeof (fsin);
ssock = accept (ms1, (struct sockaddr *) &fsin, &alen);
if (ssock < 0) errexit ("accept: %s\n", sys_errlist [errno]);
if (fork ()) close (ssock);
else {
close (ms1);
do_echo (ssock);
exit (0);
}
}
if ( FD_ISSET (ms2, &rfds)) {
alen = sizeof (fsin);
ssock = accept (ms2, (struct sockaddr *) &fsin, &alen);
if (ssock < 0) errexit ("accept: %s\n", sys_errlist [errno]);
daytime (buff);
write (ssock, buff, strlen(buff));
close (ssock);
}
if (FD_ISSET (us1, &rfds)) {
alen = sizeof (fsin);
if (recvfrom (us1, buff, sizeof(buff),0, (struct sockaddr *)&fsin, &alen) < 0)
errexit ("recvfrom: %s\n",sys_errlist[errno]);
sendto (us2, buff, strlen (buff), 0, (struct sockaddr *) &fsin, sizeof (fsin));
}
if (FD_ISSET (us2, &rfds)) {
alen = sizeof (fsin);
if (recvfrom (us2, buff, sizeof(buff),0, (struct sockaddr *)&fsin, &alen) < 0)
errexit ("recvfrom: %s\n",sys_errlist[errno]);
daytime (buff);
sendto (us2, buff, strlen (buff), 0, (struct sockaddr *) &fsin, sizeof (fsin));
}
} /* fin del while */
} /* fin del main */
10
Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
Sobre Aplicaciones_____________________________________
43. ¿En qué consiste la definición del estándar NVT?
44. ¿Existiría algún problema si utilizamos un cliente de telnet para acceder a
cualquier servicio? (SMTP, POP3, etc.). Ej.: $telnet obelix 25.
45. Tanto en correo electrónico como en NEWS, el final de un mensaje se delimita
con la secuencia <CR><LF><.><CR><LF>. ¿Qué ocurre si dentro del texto del
mensaje tenemos una línea de texto que sólo tiene un punto decimal (carácter
<.>) en la primera columna? ¿Cómo procederíamos en este caso?
46. Supongamos que queremos enviar un correo electrónico, usando el mecanismo
de entrega directa, a [email protected]. Para ello dispongo de un cliente
TELNET. Describa los pasos que debe hacer para enviar un correo a dicho
usuario. Nota: No tenemos cuenta en ningún servidor de correo accesible.
47. ¿Cómo sabe un cliente SMTP que ha terminado la respuesta del servidor?
48. ¿Por qué se emplean dos protocolos para el correo (SMTP y POP3) en vez de uno
sólo?
49. Un cliente FTP se conecta a un servidor y le solicita la descarga del fichero
“datos.zip”. Indica la secuencia de comandos y repuestas que se intercambian el
cliente y servidor de FTP para llevar acabo la transferencia y dibuja la estructura
de puertos y procesos tanto del cliente como del servidor.
50. A continuación se muestra la ejecución del siguiente comando:
arss70@obelix:~$ telnet localhost 37
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
È*ýConnection closed by foreign host.
arss70@obelix:~$
a) ¿Para qué se ha usado el comando?
b) ¿Qué significado tienen los caracteres “È*ý”?
c) ¿Qué comando hubieras invocado en lugar de este?
51. Dibuje el esquema de un sistema de correo, incluyendo gestión de alias y
encaminamiento.
11
Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
52. ¿Por qué en muchas aplicaciones se usa el conjunto de caracteres US-ASCII-7
para formar los mensajes que intercambian un cliente y su servidor?
53. El servidor POP3 realiza su servicio en tres fases. ¿Cuáles son? ¿Qué comandos
intervienen en cada una de ellas?.
54. Indica qué protocolo (o protocolos) de aplicación emplean cada una de estas
órdenes (comandos) y cuál es su significado.
Orden
GET
PORT
HELO
STAT
HEAD
MAIL FROM
DATA
RETR
RCPT TO
LIST
Protocolo
Significado de la orden
55. Se dispone de un servidor FTP del que queremos bajarnos un fichero que está
públicamente disponible (acceso anónimo), ¿Podríamos descargar el fichero
utilizando un cliente TELNET? Justifica la respuesta.
12
Arquitectura de Redes y Servicios de
Telecomunicación (ARST)
Cuestiones y Problemas Propuestos
Sobre seguridad, compresión y transmisión de datos
multimedia ____________________________________________
56. Explica brevemente a que hacen referencia los siguientes objetivos de la
seguridad en redes: Integridad, confidencialidad y autenticación.
57. ¿Cuál es el objetivo de una función hash?, indica al menos una aplicación de
seguridad en la que se utiliza.
58. Realiza el cifrado clásico por columnas (transposición) del texto “En un lugar de
la Mancha de cuyo nombre no quiero acordarme” con la clave k = {13524}. No
consideréis los espacios en blanco a la hora de hacer el cifrado.
59. Si tenemos una fuente de 5 símbolos cuyas frecuencias de aparición son A(15),
B(10), C(5), D(4) y E(1), ¿cuál sería la asignación de bits que Huffman asociaría
al símbolo "E"?. Si comprimimos la secuencia ABCADBEBAA, ¿cuál sería la
tasa de compresión resultante si los símbolos sin comprimir necesitan tres bits
cada uno?
60. Explica brevemente los pasos de codificación del compresor de imagen JPEG
61. Explica brevemente en qué consiste la estimación de movimiento (búsqueda de
macrobloques) en un compresor de vídeo MPEG.
62. Transmisión de datos multimedia: Describe brevemente la misión de los
siguientes protocolos: RSVP, RTP y RTSP.
13