Transcript
Departamento de Física y Arquitectura de Computadores
ARQUITECTURA DE REDES Y SERVICIOS DE TELECOMUNICACIÓN Junio 2014 Teoría: 1) ¿Qué sucedería si por error recibiera UDP un datagrama UDP que originalmente iba destinado a otra máquina?. (0,5 ptos)
2) 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 RTT estimado es 5 segundos. (0,5 ptos) 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 RTTestimado el estimado para el paquete 3. Nota 2: Supóngase que el Timeout se calcula con la siguiente expresión: TOut = β*RTTestimado
3) En una LAN con un RTT estimado de 1 ms, indica la velocidad mínima de transmisión que debe alcanzarse en esta red para que se logre una utilización del 100% de su capacidad con una única conexión TCP. (0.5 ptos)
NOMBRE Y APELLIDOS:_______________________________________________
Departamento de Física y Arquitectura de Computadores
4) 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: (1 pto) 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 y (2) no se pierde ningún segmento, dibuja en un gráfico la evolución de los parámetros CWND, SSTHRES. 20 18 16 14 12 10 8 6 4 2 1
2
3
4 5 6 7 Tiempo (segundos)
8
9
10
(b) Lo mismo que el apartado (a) pero suponiendo que (1) se producen dos eventos de pérdida (se pierde el primer segmento enviado) en los RTTs número 5 y 10 (2,5 y 5 segundos respectivamente) y (2) en el instante 5,5 se recibe una indicación de ventana de 3000 bytes.
2
Segmentos (MSS)
Departamento de Física y Arquitectura de Computadores
20 18 16 14 12 10 8 6 4 2 1
2
3
4 5 6 7 Tiempo (segundos)
8
9
10
(c) Calcula la velocidad de transferencia (bps) que observa el usuario en ambos
5) Al utilizar el interfaz de sockets para implementar un servidor secuencial TCP, ¿cuál es la finalidad de la cola creada mediante la llamada listen? ¿Tiene sentido utilizar esta cola cuando se está implementando un servidor concurrente TCP?. Justifica las respuestas. (0.5 ptos)
3
Departamento de Física y Arquitectura de Computadores
6) Suponiendo que tenemos un socket conectado de tipo SOCK_STREAM, indique lo que tendremos que hacer para (1) enviar un mensaje como datos urgentes TCP, y (2) utilizar la función PUSH de TCP para el envío de mensajes a través de una conexión. Acompañar las respuestas con ejemplos de uso (pseudo-código). (0.5 ptos)
7) ¿A qué tipo de servidor corresponde cada uno de los siguientes esquemas?(0.5 ptos) 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)
4
S.O.
Departamento de Física y Arquitectura de Computadores
8) Cita tres circunstancias en las cuales sea preferible un servidor sin conexión a un servidor con conexión. (0.5 ptos)
9) A continuación se muestra la ejecución del siguiente comando:
(0.5 ptos)
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 “È*ý”?
10) Tanto en correo electrónico como en NEWS, el final de un mensaje se delimita con la secuencia <.>. ¿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? (0,5 ptos)
5
Departamento de Física y Arquitectura de Computadores
11) 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. (0.5 ptos)
12) Sea una fuente de 5 símbolos con sus probabilidades de aparición A(0.8), B(0.05), C(0.05), D(0.05) y E(0.05). Indicar la secuencia de bits resultante al comprimir la secuencia “AAA” con Huffman y una codificación aritmética. (0.5 ptos)
13) ¿Cuál es el objetivo de una función hash?, indica al menos una aplicación de seguridad en la que se utiliza. (0.5 ptos)
6
Departamento de Física y Arquitectura de Computadores
Prácticas: (1) En la práctica 1 se analizó el comportamiento del protocolo TCP a través del analizador de protocolos Wireshark. Se utilizó el fichero pr.pcap que contiene una captura de una transferencia FTP de un archivo pdf de 3.5 MB aproximadamente. En la figura se muestra la evolución de los números de secuencia. ¿cuál ha sido la razón del corte producido entre los instantes 0.5 y 0.6 ? (0.75 ptos)
7
Departamento de Física y Arquitectura de Computadores
(2) En la práctica sobre el control de congestión en TCP obtenemos una gráfica como la que se muestra abajo. ¿Qué representan cada una de las series?, ¿Por qué tienen forma de escalera ?, ¿A qué se debe la pequeña diferencia entre las dos series?. Justifica las respuestas. (0.75 ptos)
8
Departamento de Física y Arquitectura de Computadores
(3) Detecta y corrige los fallos que encuentres en la siguiente implementación del servidor de echo estándar concurrente con conexión. (0.75 ptos) #include #include #include #define LINELEN 80 #define QLEN 5 char *service = "37";
// El puerto bien conocido de echo es 7
void main (int argc, char *argv[]) { char buff[LINELEN]; struct sockaddr_in serv_addr, cli_addr; int ms, ss, cli_size, nbuf; struct servent *pse,*ppe; // struct protoent *ppe; switch (argc) { case 2: service = argv[1]; case 1: break; default: fprintf (stderr, "Uso: %s [port]\n",argv[0]); exit (1); } memset((char *)&serv_addr,0,sizeof(serv_addr)); serv_addr.sin_family= AF_INET; serv_addr.sin_addr.s_addr=INADDR_ANY; if (pse=getservbyname(service,"tcp")) serv_addr.sin_port=pse->s_port; else if ((serv_addr.sin_port=htons(atoi(service)))==0) errexit("Servicio desconocido\n"); if ((ppe=getprotobyname("tcp"))==0) errexit("No encuentro el protocolo tcp\n"); ms=socket(AF_INET,SOCK_STREAM,ppe->p_proto); if (bind(ms,&serv_addr,sizeof(serv_addr))<0) errexit("No puedo instalar el servidor\n"); while(1) { if((ss=accept(ms,&cli_addr,&cli_size))<0) errexit("Error al aceptar nuevos clientes\n"); if (fork()) close(ms); else { close(ss); while ((nbuf=read(ms,buff,LINELEN))>0) write(ms,buff,sizeof(buff)); close(ms); exit(0); } } }
9
Departamento de Física y Arquitectura de Computadores
(4) En la práctica cuatro se utilizó el módulo ACE (Application Characterization Environment) de OPNET IT Gurú para estudiar y analizar el rendimiento de las aplicaciones de red. La figura de abajo representa la información que una de las herramientas ACE ha suministrado acerca del rendimiento de una transferencia FTP en un escenario con pérdidas. ¿Podrías indicar las conclusiones que se obtienen de esta gráfica? (0.75 ptos)
10
Departamento de Física y Arquitectura de Computadores
Anexo A: Formatos de cabecera de protocolos TCP/IP IP
ARP
0
4
8
vers longc
16 tipo servicio
identificación cabecera
19
tiempo vida
24
31
0
8 tipo de hardware
longitud total flags
protocolo
desplaz. fragmento
lon. dir. física
checksum de la cabecera
dirección IP destino
direc. IP fuente (octetos 2-3)
dir. física 2 (otetos 0-1)
relleno
dirección física 2 (octetos 2-5) dirección IP 2 (octetos 0 -3)
ICMP (destino inalcanzable)
tipo (8 o 0) código (0) checksum identificador número de secuencia datos opcionales ...
tipo (3)
16
Puerto TCP origen
24
31
UDP 0
cabecera
16
Puerto TCP destino
Puerto origen UDP Longitud mensaje
Número de reconocimiento reservado
código
checksum
checksum
cabecera IP + 64 primeros bits del datagrama
Número de secuencia longc
código (0-12)
no se emplea (debe ser cero)
TCP 5 4 3 2 1 0 Campo código: URG-ACK-PSH-RST-SYN-FIN 10
operación
dir. IP fuente (octetos 0-1)
ICMP (Echo request/Echo reply)
4
lon. dir. prot.
dir. fís. fuente (octetos 4-5)
DATOS
0
31 tipo de protocolo
dirección física fuente (octetos 0-3)
dirección IP fuente opciones IP (variable)
16
31 Puerto destino UDP Checksum
DATOS
ventana puntero a datos urgentes
opciones (si las hay)
relleno
DATOS
Puertos bien conocidos echo daytime chargen ftp-data ftp telnet smtp domain tftp finger www pop3 nntp
7/tcp/udp 13/tcp/udp 19/tcp/udp ttytst source 20/tcp 21/tcp 23/tcp 25/tcp mail 53/tcp/udp nameserver 69/udp 79/tcp 80/tcp 110/tcp postoffice 119/tcp usenet news
Identificadores de protocolos TCP UDP ICMP
0x06 0x11 0x01
IP ARP RARP Novel
0x0800 0x0806 0x8035 0x8137
Tipos de Tramas
Campo Flags del paquete IP Bit 0 Bit 1 Bit 2
N/A (Not Assigned) DF (Don’t Fragment) MF (More Fragments)
11
Departamento de Física y Arquitectura de Computadores
Anexo B: Relación de rutinas y llamadas al sistema /* Definición de una dirección IP */ struct in_addr { u_long s_addr; } /* Definición de una dirección de socket */ struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }
/* familia de direcciones */ /* número de puerto */ /* dirección IP */ /* buffer de relleno. Inicializado a ceros */
/* Declaración de funciones que podemos utilizar */ extern errexit (char *formato, int error); extern int strcmp (char *dest, char *orig); extern void bcopy (char *origen, char *destino, int nbytes); extern void bzero (char *data, int nbytes); extern char * fgets (char * buffer, int size, int fd); extern int socket (int af, int type, int protocol); extern int connect (int s, const void *addr, int addrlen); extern int accept (int socket, struct sockaddr *dir_clnt, int *dir_size); extern int bind (int s, struct sockaddr *addr, int addrlen); extern int listen (int s, int qlen); extern int read (int sock, char *buffer, int size); extern int write (int sock, char *buffer, int size); extern int sendto (int sock, char *buffer, int size, int flags, struct sockaddr *to, int addrlen); extern int recvfrom (int sock, char *buffer, int size, int flags, struct sockaddr *to, int *addrlen); extern int close (int sock); extern int shutdown (int sock, int c); extern int select (int nfds, fd_set * rfds, fd_set * wfds, fd_set * excp, struct timeval * timeout); FD_ZERO (fd_set* set); FD_SET (sock, fd_set* set); FD_ISSET (sock, fd_set* set); extern int connectTCP (char *host, char *service); extern int connectUDP (char *host, char *service); extern int passiveTCP (char *service, int qlen); extern int passiveUDP (char *service); extern int fork( );
12