TALLER LIBRO “REDES DE COMPUTADORAS UN ENFOQUE DESCENDENTE” CAPITULOS 2 Y 3 YEISON SAMIR AGUIRRE QUINTERO DANIEL HASSELL TORO FRANCO REDES I NESTOR ALZATE UNIVERSIDAD CATOLICA DE PEREIRA FACULTAD DE CIENCIAS BASICAS E INGENIERIA PEREIRA 2014 Capítulo 2 Cuestiones de repaso SECCIÓN 2.1 1. Enumere cinco aplicaciones de Internet no propietarias y los protocolos de la capa de aplicación que utilizan. R/. FTP: trasferencia de archivos HTTP: La web RCP: llamada remota SMTP: Correo electrónico P2P: Compartición de archivos 2. ¿Cuál es la diferencia entre la arquitectura de red y la arquitectura de aplicación? R/. La arquitectura de red se usa para la comunicación entre capas del modelo OSI, la arquitectura de aplicación es creada por un desarrollador para el manejo de las aplicaciones en la capa aplicación. 3. En una sesión de comunicación entre dos procesos, ¿qué proceso es el cliente y qué proceso es el servidor? R/. Para este caso el proceso que inicia la petición se convierte en cliente a espera de la respuesta del otro proceso que hace las veces de servidor, pero al momento de enviar la respuesta los roles cambian variando del uno al otro en el proceso de cliente servidor. 4. En una aplicación de compartición de archivos P2P, ¿está de acuerdo con la siguiente afirmación: “No existen los lados de cliente y de servidor en una sesión de comunicación”? ¿Por qué? R/. La afirmación es falsa, como ya sabemos en un proceso de aplicación P2P, se utilizan dos host uno que es el cliente y otro que hace el papel de servidor. 5. ¿Qué información utiliza un proceso que se ejecuta en un host para identificar a un proceso que se ejecuta en otro host? R/. La dirección de destino IP y número de puerto de destino. 6. Suponga que desea realizar una transición desde un cliente remoto a un servidor lo más rápidamente posible. ¿Qué utilizaría, UDP o TCP? ¿Por qué? R/. Utilizaría el UDP, ya que se podría hacer en un solo tiempo de ida y vuelta, porque no hace rectificación de archivos ni reenvió de paquetes. 7. Utilizando la Figura 2.4, podemos ver que ninguna de las aplicaciones indicadas en dicha figura presenta a la vez requisitos de temporización y de ausencia de pérdida de datos. ¿Puede concebir una aplicación que requiera que no haya pérdida de datos y que también sea extremadamente sensible al tiempo? R/. Hasta el momento no hay una aplicación que solucione o este exenta de la perdida de datos. 8. Enumere las cuatro clases principales de servicios que puede proporcionar un protocolo de transporte. Para cada una de las clases de servicios, indique si UDP o TCP (o ambos) proporcionan un servicio así. R/. Seguridad La garantía de que los datos se entreguen en un periodo de tiempo especifico La garantía de que se mantendrá un cierto valor para el rendimiento. Transferencia de datos fiables por medio del protocolo TCP. 9. Recuerde que TCP puede mejorarse con SSL para proporcionar servicios de seguridad proceso a proceso, incluyendo mecanismos de cifrado. ¿En qué capa opera SSL, en la capa de transporte o en la capa de aplicación? Si el desarrollador de la aplicación desea mejorar TCP con SSL, ¿qué tendrá que hacer? R/. Los SSL operan en la capa de Aplicación, y para mejorar la seguridad del TCP, solo debería incluir el código de la aplicación SSL SECCIONES 2.2 – 2.5 10. ¿Qué quiere decir el término protocolo de acuerdo? R/. Es cuando dos protocolos necesitan hacer un acuerdo al inicio de la comunicación, como es el caso del mensaje instantáneo. 11. ¿Por qué HTTP, FTP, SMTP y POP3 se ejecutan sobre TCP en lugar de sobre UDP? R/. Las aplicaciones asociadas a los protocolos requieren que todos los datos de la aplicación deben ser recibidos correctamente y sin lagunas. TCP proporciona este servicio mientras que UDP no lo hace. 12. Un sitio de comercio electrónico desea mantener un registro de compras para cada uno de sus clientes. Describa cómo se puede hacer esto utilizando cookies. R/. Cuando el usuario visita primero el sitio, el sitio devuelve un número de cookie. Este cookie o número se almacena en el host del usuario y es administrado por el navegador. Durante cada visita, el navegador envía el número de cookie de vuelta al sitio. Así, el sitio sabe cuando este usuario (más precisamente, este navegador) está de visita en el sitio. 13. Describa cómo el almacenamiento en caché web puede reducir el retardo de recepción de un objeto solicitado. ¿Reducirá este tipo de almacenamiento el retardo de todos los objetos solicitados por el usuario o sólo el de algunos objetos? ¿Por qué? R/. El almacenamiento en caché Web puede traer el contenido deseado "más cerca" del usuario, tal vez a la misma LAN al que está conectado el host del usuario. El almacenamiento en caché Web puede reducir la velocidad de transferencia lo que retrasa la entrega de paquetes para todos los objetos, incluso los objetos no tratan de almacenar en caché, ya que el almacenamiento en caché reduce el tráfico en los enlaces. 14. Establezca una sesión Telnet en un servidor web y envíe un mensaje de solicitud de varias líneas. Incluya en dicho mensaje la línea de cabecera If-modified-since: para forzar un mensaje de respuesta con el código de estado 304 Not Modified. 15. ¿Por qué se dice que FTP envía la información de control “fuera de banda”? R/. FTP utiliza dos conexiones TCP paralelas, una conexión para enviar información de control (tal como una solicitud para transferir un archivo) y otra conexión realmente para transferir el archivo. Debido a que la información de control no se envía a través de la misma conexión, el protocolo FTP envía información de control fuera de banda. 16. Suponga que Alicia, que dispone de una cuenta de correo electrónico web (como por ejemplo Hotmail o gmail), envía un mensaje a Benito, que accede a su correo almacenado en su servidor de correo utilizando POP3. Explique cómo se transmite el mensaje desde el host de Alicia hasta el de Benito. Asegúrese de citar la serie de protocolos de la capa de aplicación que se utilizan para llevar el mensaje de un host al otro. R/. El mensaje se envía desde un anfitrión HTTP en este caso el servidor de correo de Alice. El servidor de correo de Alice envía el mensaje al servidor de correo de Bob a través de SMTP. Bob y luego transfiere el mensaje de su servidor de correo a su anfitrión a través de POP3. 17. Imprima la cabecera de un mensaje de correo electrónico que haya recibido recientemente. ¿Cuántas líneas de cabecera Received: contiene? Analice cada una de las líneas de cabecera del mensaje. R/. Delivered-To: [email protected] Recibido: por 10.216.123.196 con SMTP Identificación v46csp242148weh; Mar, 01 de abril 2014 18:26:16 -0700 (PDT) -Recibido X: por 10.67.22.100 con SMTP Identificación hr4mr17703257pad.112.1396401976151; Mar, 01 de abril 2014 18:26:16 -0700 (PDT) Return-Path: <[email protected]> Recibido: de bay0-OMC2-s10.bay0.hotmail.com (. Bay0-OMC2-s10.bay0.hotmail.com [65.54.190.85]) por mx.google.com con ESMTP Identificación wh4si171571pbc.477.2014.04.01.18.26.15 para <[email protected]>; Mar, 01 de abril 2014 18:26:16 -0700 (PDT) Recibido-SPF: pass (google.com: domain de [email protected] designa 65.54.190.85 como remitente permitido) client-ip = 65.54.190.85; Autenticación-Resultados: mx.google.com; spf = pass (google.com: domain de [email protected] designa 65.54.190.85 como remitente permitido) smtp.mail = [email protected] Recibido: de BAY172-W29 ([65.54.190.123]) por bay0-OMC2-s10.bay0.hotmail.com con Microsoft SMTPSVC (6.0.3790.4675); Mar, 01 de abril 2014 18:26:15 -0700 X-RGT: [usXfrXnOO99SIurzMlIk0TWcJEp3YEmj] X-Originating-Email: [[email protected]] Message-ID: <[email protected]> Return-Path: [email protected] Content-Type: multipart / alternative; boundary = "_5aadb00a-be2e-4741-ADC6-7a38d3ee2602_" De: Yeison Aguirre <[email protected]> A: Daniel Toro <[email protected]> Asunto: Prueba Fecha: Martes, 01 de abril 2014 20:26:15 -0500 Importancia: Normal MIME-Version: 1.0 X-OriginalArrivalTime: 02 de abril 2014 01:26:15.0257 (UTC) FILETIME = [8A3B8C90: 01CF4E12] - _5aadb00a-Be2e-4741-ADC6-7a38d3ee2602_ Content-Type: text / plain; charset = "iso-8859-1" Content-Transfer-Encoding: quoted-printable Hola = - _5aadb00a-Be2e-4741-ADC6-7a38d3ee2602_ Content-Type: text / html; charset = "iso-8859-1" Content-Transfer-Encoding: quoted-printable <html> <head> <style> <! . Hmmessage P { margen: 0px = 3B padding: 0px } body.hmmessage { font-size: 12pt = 3B font-family: Calibri } -> </ Style> </ head> <body class=3D'hmmessage'> <div dir=3D'ltr'> de Hola </ div> </ body> </ Html> = - _5aadb00a-Be2e-4741-ADC6-7a38d3ee2602_ - Se pueden observar 5 recibidos lo cual significa que el mensaje de correo electrónico pasó por 6 servidores antes de llegar a su destinatario. Nos muestra la Ip del cliente servidor que en este caso es: 65.54.190.85. Muestra el remitente y destinatario: <[email protected]>, <[email protected]>. Muestra el STMP Cliente mail: [[email protected]]. La fecha de y hora exacta en que el remitente envía el mensaje: Martes, 01 de abril 2014 20:26:15 -0500. 18. Desde la perspectiva de un usuario, ¿cuál es la diferencia entre el modo “descargar y borrar” y el modo “descargar y mantener” en POP3? R/. Con la descarga y borrar, después de que un usuario recupera sus mensajes de un servidor POP, se eliminan los mensajes. Esto plantea un problema para el usuario nómada, que puede o desea acceder a los mensajes desde muchas máquinas diferentes (la oficina de PC, PC de casa, etc.) En la descarga y mantener la configuración de los mensajes no se eliminan después de que el usuario recupera los mensajes. Esto puede resolver inconvenientes, ya que cada vez que el usuario recupera los mensajes almacenados de una nueva máquina, todos los mensajes que no son eliminados serán transferidos a la nueva máquina (incluyendo mensajes muy viejos). 19. ¿Pueden el servidor web y el servidor de correo electrónico de una organización tener exactamente el mismo alias para un nombre de host (por ejemplo, foo.com)? ¿Cuál sería el tipo especificado en el registro de recurso (RR) que contiene el nombre de host del servidor de correo? R/. Si, el servidor de correo de una organización y el servidor Web pueden tener el mismo alias para un nombre de host. El registro MX se utiliza para asignar el nombre de host del servidor de correo a su dirección I.P SECCIÓN 2.6 20. En Bit Torrent, suponga que Alicia proporciona fragmentos a Benito a intervalos de 30 segundos. ¿Devolverá necesariamente Benito el favor y proporcionará fragmentos a Alicia en el mismo intervalo de tiempo? ¿Por qué? R/. No es necesario que Bob también proporcionara fragmentos a Alice. Alice tiene que estar en los 4 primeros vecinos de Bob para que Bob envíe fragmentos de ella, que puede no ocurrir incluso si ha Alice le proporciona fragmentos a Bob a lo largo de un intervalo de 30 segundos. 21. Suponga que un nuevo par Alicia se une a Bit Torrent sin tener en su posesión ningún fragmento. Dado que no posee fragmentos, no puede convertirse en uno de los cuatro principales suministradores de ninguno de los otros pares, ya que no tiene nada que suministrar. ¿Cómo obtendrá entonces Alicia su primer fragmento? R/. Mercedes recibirá su primer fragmento, como resultado de ella siendo seleccionado por uno de sus vecinos, como resultado de un "desenlace", para el envío de fragmentos de ella. 22. ¿Qué es una red solapada? ¿Contiene routers? ¿Cuáles son las fronteras en una red solapada? ¿Cómo se crea y se mantiene la red solapada que se encarga de distribuir las consultas? R/. La red superpuesta en un sistema de intercambio de archivos P2P consiste en los nodos que participan en el sistema de intercambio de archivos y los vínculos lógicos entre los nodos. Hay un enlace lógico (un "borde" en términos de teoría del gráfico ) del nodo A al nodo B si existe una conexión TCP semipermanente entre A y B. Una red overlay no incluye routers. Con Gnutella , cuando un nodo quiere unirse a la red Gnutella , primero descubre ( " fuera de banda" ) la dirección IP de uno o más que ya están en la red de nodos. A continuación, envía mensajes para unirse a estos nodos . Cuando el nodo recibe confirmaciones, se convierte en un miembro de la red Gnutella. Los nodos mantienen sus vínculos lógicos con mensajes de actualización periódicos. 23. ¿En qué sentido la mensajería instantánea con un índice centralizado es un híbrido de las arquitecturas cliente-servidor y P2P? R/. - Hay un componente centralizado (el índice) como en el caso de un sistema cliente-servidor. - Otras funciones (excepto la indexación) las cuales no utilizan ningún tipo de servidor central. Esto es similar a lo que existe en un sistema P2P. 24. Considere una DHT con una topología de red solapada en malla (es decir, cada par controla a todos los demás pares del sistema). ¿Cuáles son las ventajas y desventajas de un diseño de este tipo? ¿Cuáles son las ventajas y desventajas de una DHT circular (sin atajos)? R/. Malla DHT: La ventaja es que una ruta un mensaje a los pares más cercanos a la clave, sólo se requiere un salto, la desventaja es que cada interlocutor debe realizar un seguimiento de todos los demás compañeros en el DHT. DHT circular: la ventaja es que cada par tiene que realizar un seguimiento de sólo unos pocos otros compañeros; la desventaja es que se necesitan O (n) lúpulo para en rutar un mensaje a un compañero responsable de la tecla. 25. Skype utiliza técnicas P2P para dos funciones importantes. ¿Cuáles son dichas funciones? R/. - La ubicación de los usuarios. - NAT transversal ya que permite el uso del direccionamiento privado en las redes, tanto de empresas como domésticas. 26. Cite al menos cuatro aplicaciones distintas que se adapten de forma natural a las arquitecturas P2P. (Sugerencia: la distribución de archivos y la mensajería instantánea son dos de ellas.) R/. - Distribución de archivos - Mensajería instantánea - Video Streaming - Computación Distribuida 27. El servidor UDP descrito en la Sección 2.8 sólo necesitaba un socket, mientras que el servidor TCP descrito en la Sección 2.7 necesitaba dos. ¿Por qué? Si el servidor TCP tuviera que soportar n conexiones simultáneas, cada una procedente de un host cliente distinto, ¿cuántos sockets necesitaría el servidor TCP? R/. Con el servidor TCP hay un socket que recibe, y cada vez que un cliente inicia una conexión con el servidor, se crea un nuevo socket. Por lo tanto, para soportar n conexiones simultáneas, el servidor tendría que utilizar n 1 sockets. Con el servidor UDP, no hay ningún socket, y todos los datos de los diferentes clientes entran en el servidor a través de este zócalo. 28. En la aplicación cliente-servidor sobre TCP descrita en la Sección 2.7, ¿por qué tiene que ser ejecutado el programa servidor antes que el programa cliente? En la aplicación cliente-servidor sobre UDP descrita en la Sección 2.8, ¿por qué el programa cliente puede ejecutarse antes que el programa servidor? R/. Tan pronto como el cliente se ejecuta, que intenta iniciar una conexión TCP con el servidor. Si el servidor TCP no se está ejecutando, el cliente no podrá establecer una conexión. Para la aplicación UDP, el cliente no inicia conexiones (o el intento de comunicarse con el servidor UDP) inmediatamente después de la ejecución. Capítulo 2 Problemas 1. ¿Verdadero o falso? a. Un usuario solicita una página web que consta de texto y tres imágenes. Para obtener esa página, el cliente envía un mensaje de solicitud y recibe cuatro mensajes de respuesta. R/. Falsa b. Dos páginas web diferentes (por ejemplo, www.mit.edu/research.htmly www. mit.edu/students.html) se pueden enviar a través de la misma conexión persistente. R/. Verdadera c. Con las conexiones no persistentes entre un navegador y un servidor de origen, un único segmento TCP puede transportar dos mensajes de solicitud HTTP distintos. R/. Falsa d. d. La línea de cabecera Date: del mensaje de respuesta HTTP indica cuándo el objeto fue modificado por última vez. R/. Falsa e. Los mensajes de respuesta HTTP nunca incluyen un cuerpo de mensaje vacío. R/. Falsa 2. Lea el documento RFC 959 relativo a FTP. Enumere todos los comandos cliente que están soportados por dicho documento. R/. Comandos de Control de Acceso: USER, PASS, ACT, CWD, CDUP, SMNT, REIN, QUIT. Comando de Parámetros de Transferencia: PORT, PASV, TYPE STRU, MODE. Comandos de Servicio: RETR, STOR, STOU, APPE, ALLO, REST, RNFR, RNTO, ABOR, DELE, RMD, MRD, PWD, LIST, NLST, SITE, SYST, STAT, HELP, NOOP. P3. Un cliente HTTP desea recuperar un documento web que se encuentra en un URL dado. Inicialmente, la dirección IP del servidor HTTP es desconocida. ¿Qué protocolos de la capa de aplicación y de la capa de transporte además de HTTP son necesarios en este escenario? R/. Protocolos de capa de aplicación: DNS y HTTP Protocolos de capa de transporte: UDP para DNS; TCP para HTTP 4. La siguiente cadena de caracteres ASCII ha sido capturada por Wireshark cuando el navegador enviaba un mensaje GET HTTP (es decir, éste es el contenido real de un mensaje GET HTTP). Los caracteres <cr><lf>representan el retorno de carro y el salto de línea (es decir, la cadena de caracteres en cursiva <cr>del texto que sigue a este párrafo representa el carácter de retorno de carro contenido en dicho punto de la cabecera HTTP). Responda a las siguientes cuestiones, indicando en qué parte del siguiente mensaje GET HTTP se encuentra la respuesta. GET /cs453/index.html HTTP/1.1<cr><lf>Host: gai a.cs.umass.edu<cr><lf>User-Agent: Mozilla/5.0 ( Windows;U; Windows NT 5.1; en-US; rv:1.7.2) Gec ko/20040804 Netscape/7.2 (ax) <cr><lf>Accept:ex t/xml, application/xml, application/xhtml+xml, text /html;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5 <cr><lf>Accept-Language: en-us,en;q=0.5<cr><lf>Accept Encoding: zip,deflate<cr><lf>Accept-Charset: ISO -8859-1,utf-8;q=0.7,*;q=0.7<cr><lf>Keep-Alive: 300<cr> <lf>Connection:keep-alive<cr><lf><cr><lf> a. ¿Cuál es el URL del documento solicitado por el navegador? R/. http://gaia.cs.umass.edu/cs453/index.html. The Host : field indicates the server's name and /cs453/index.html indicates the file name. b. ¿Qué versión de HTTP se está ejecutando en el navegador? R/. HTTP versión 1.1 c. ¿Qué tipo de conexión solicita el navegador, persistente o no persistente? R/. El navegador solicita una conexión persistente, como se indica en la conexión: keep-alive . d. ¿Cuál es la dirección IP del host en el que se está ejecutando el navegador? R/. Esa información no es suministrada en un mensaje HTTP e. ¿Qué tipo de navegador inicia este mensaje? ¿Por qué es necesario indicar el tipo de navegador en un mensaje de solicitud HTTP? R/. Mozilla/5.0. La información del tipo de navegador es necesario por el servidor, para enviar diferentes versiones de un mismo objeto a diferentes tipos de navegadores. 5. El siguiente texto muestra la respuesta devuelta por el servidor al mensaje de solicitud GET HTTP del problema anterior. Responda a las siguientes cuestiones, indicando en qué parte del siguiente mensaje se encuentran las respuestas. HTTP/1.1 200 OK<cr><lf>Date: Tue, 07 Mar 2008 12:39:45GMT<cr><lf>Server: Apache/2.0.52 (Fedora) <cr><lf>Last-Modified: Sat, 10 Dec2005 18:27:46 GMT<cr><lf>ETag: “526c3-f22-a88a4c80”<cr><lf> Accept-Ranges: bytes<cr><lf>Content-Length: 3874<cr><lf> Keep-Alive: timeout=max=100<cr><lf>Connection: Keep-Alive<cr><lf>Content-Type: text/html; charset= ISO-8859-1<cr><lf><cr><lf><!doctype html public “//w3c//dtd html 4.0 transitional//en”><lf><html><lf> <head><lf> <meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”><lf> <meta name=”GENERATOR” content=”Mozilla/4.79 *en+ (Windows NT 5.0; U) Netscape+”><lf> <title>CMPSCI 453 / 591 / NTU-ST550A Spring 2005 homepage</title><lf></head><lf> <aquí continúa el texto del documento (no mostrado)> a. ¿Ha podido el servidor encontrar el documento? ¿En qué momento se suministró respuesta con el documento? R/. El código de estado 200 indica que el camarero fue capaz de localizar el documento con éxito. La respuesta fue enviada el Martes, 07 de marzo 2008 12:39:45. b. ¿Cuándo fue modificado por última vez el documento? R/. El documento fue modificado por última vez el sábado 10 de diciembre 2005 18:27:46 GMT. c. ¿Cuántos bytes contiene el documento devuelto? R/. Hay 3874 bytes en el documento que se devuelve. d. ¿Cuáles son los primeros cinco bytes del documento que se está devolviendo? ¿Ha acordado el servidor emplea una conexión persistente? R/. Los primeros cinco bytes del documento devuelto son: <!doc. El servidor emplea una conexión persistente, como lo indica la conexión: Keep-Alive. 6. Utilice la especificación HTTP/1.1 (RFC 2616) para responder a las siguientes cuestiones: a. Explique el mecanismo de señalización entre el cliente y el servidor para indicar que se está cerrando una conexión persistente. ¿Quién puede señalizar el cierre de la conexión, el cliente, el servidor o ambos? R/. El cliente o el servidor pueden indicar al otro que se va a cerrar la conexión persistente. Lo hacen mediante la inclusión de la primitiva Connection -token "Close" en el campo ConnectionHeader del HTTP petición / respuesta. b. ¿Qué servicios de cifrado proporciona HTTP? R/. HTTP no proporciona servicios de cifrado. c. ¿Puede un cliente abrir tres o más conexiones simultáneas con un determinado servidor? R/. "Los clientes que usan conexiones persistentes deben limitar el número de conexiones simultáneas que mantienen a un servidor determinado. Un cliente no debe mantener más de 2 conexiones con cualquier servidor o proxy. " d. Un servidor o un cliente pueden cerrar una conexión de transporte entre ellos si uno detecta que la conexión ha estado inactiva durante un cierto tiempo. ¿Es posible que un lado inicie el cierre de una conexión mientras que el otro lado está transmitiendo datos a través de dicha conexión? Explique su respuesta. R/. Sí. Un cliente podría haber comenzado a enviar una nueva solicitud al mismo tiempo que el servidor ha decidido cerrar la conexión “inactiva”. Desde el punto de vista del servidor, la conexión se está cerrando mientras estaba en reposo, y del punto de vista del cliente, la solicitud está en curso. 7. Suponga que en su navegador hace clic en un vínculo a una página web. La dirección IP correspondiente al URL asociado no está almacenado en la caché de su host local, por lo que es necesario realizar una búsqueda DNS para obtener la dirección IP. Suponga que antes de que su host reciba la dirección IP de DNS se han visitado n servidores DNS y que los tiempos de ida y vuelta (RTT) de las sucesivas visitas son RTT 1 , . . ., RTT n. Suponga además que la página web asociada con el vínculo contiene exactamente un objeto, que consta de un pequeño fragmento de texto HTML. Sea RTT 0 el tiempo RTT entre el host local y el servidor que contiene el objeto. Suponiendo un tiempo de transmisión despreciable para el objeto, ¿cuánto tiempo transcurre desde que el cliente hace clic en el vínculo hasta que recibe el objeto? R/. La cantidad total de tiempo para conseguir la dirección IP es: RTT1 + RTT2 +…+ RTTn. Una vez que se conoce la dirección IP, RTT0 que pasa a configurar la conexión TCP y otro pasa a RTT0 solicitar y recibir un pequeño objeto. El tiempo de respuesta total es: 2RTT0 + RTT1 + RTT2 +…+ RTTn. 8. Continuando con el Problema P7, suponga que el archivo HTML hace referencia a ocho objetos muy pequeños que se encuentran en el mismo servidor. Despreciando los tiempos de transmisión, ¿cuánto tiempo transcurre si se utiliza a. HTTP no persistente sin conexiones TCP en paralelo? R/. RTT1 + … + RTTn + 2RTT0 + 8 * 2RTT0 =18RTT0 + RTT1 + … + RTTn b. HTTP no persistente con el navegador configurado para 5 conexiones paralelo? R/. RTT1 + … + RTTn + 2RTT0 + 2 * 2RTT0 = 6RTT0 + RTT1 + … + RTTn c. HTTP persistente? R/. RTT1 + … + RTTn + 2RTT0 + RTT0 = 3RTT0 + RTT1 + … + RTTn 9. En la red institucional conectada a Internet de la Figura 2.12, suponga que el tamaño medio de objeto es de 850.000 bits y que la tasa media de solicitudes de los navegadores de la institución a los servidores de origen es de 16 solicitudes por segundo. Suponga también que el tiempo que se tarda desde que el router en el lado de Internet del enlace de acceso reenvía una solicitud HTTP hasta que recibe la respuesta es, como media, de tres segundos (véase la Sección 2.2.5). Modele el tiempo medio de respuesta total como la suma del retardo medio de acceso (es decir, el retardo desde el router de Internet al router de la institución) y el retardo medio de Internet. Para el retardo medio de acceso, utilice la expresión / (1 –), donde es el tiempo medio requerido para enviar un objeto a través del enlace de acceso y es la tasa de llegada de los objetos al enlace de acceso. a. Calcule el tiempo medio de respuesta total. R/. El tiempo para transmitir un objeto de tamaño L sobre un enlace o tasa R es L/R. El promedio de tiempo es el tamaño medio del objeto dividida por R: Δ = (850.000 bits) / (15.000.000 bits / Seg ) = 0,0567 Seg La intensidad de tráfico en el enlace viene dado por: βΔ = ( 16 peticiones / seg ) ( 0.0567 seg / petición) = 0.907 . Por lo tanto, el retardo de acceso promedio es (0,0567 seg ) / ( 1-0,907 ) ≈ 0,6 seg. El total Por lo tanto, del tiempo de respuesta promedio es de 0.6 seg + 3 seg = 3,6 seg. b. Ahora suponga que hay instalada una caché en la LAN institucional. Suponga que la tasa de fallos es de 0,4. Calcule el tiempo de respuesta total R/. La intensidad del tráfico en el enlace de acceso se reduce en un 60 % desde el 60 % de las peticiones que se cumplen dentro de la red institucional. Así, el retardo de acceso promedio es (0,0567 seg) / [1 - (0,4) (0,907)] = 0,089 segundos. El tiempo de respuesta es de aproximadamente cero si la petición se satisface con la memoria caché (lo que ocurre con probabilidad 0.6), el tiempo medio de respuesta es de 0.089 sec + 3 seg = 3,089 seg para los fallos de caché (que suceden el 40 % del tiempo). Así que el tiempo medio de respuesta es de (0.6) (0 segundos) + (0.4) (3.089seg) = 1,24 segundos. Así, el tiempo medio de respuesta se reduce de 3,6 a 1,24 seg. 10. Dispone de un enlace corto de 10 metros a través del cual un emisor puede transmitir a una velocidad de 150 bits/segundo en ambos sentidos. Suponga que los paquetes de datos tienen una longitud de 100.000 bits y los paquetes que contienen sólo comandos de control (por ejemplo, ACK o de acuerdo) tienen una longitud de 200 bits. Suponga que hay N conexiones en paralelo y que cada una utiliza 1/Ndel ancho de banda del enlace. Considere ahora el protocolo HTTP y suponga que cada objeto descargado es de 100 kbytes de largo y que el objeto inicialmente descargado contiene 10 objetos referenciados procedentes del mismo emisor. ¿Tiene sentido en este caso realizar descargas en paralelo mediante instancias paralelas de HTTP no persistente? Considere ahora HTTP persistente. ¿Cabe esperar alguna ventaja significativa respecto del caso no persistente? Justifique y explique su respuesta. R/. Cada objeto puede ser completamente descargado pero en un paquete de datos. Con el Tp cabe denotar el retardo de propagación de un solo sentido entre el cliente y el servidor. Primero se consideran las descargas paralelas a través de conexiones no persistentes. La descarga paralela permitiría 10 conexiones que comparten el ancho de banda de 150 bits/s, por lo que cada uno recibe solo 15 bits/seg. Por lo tanto, el tiempo total necesario para recibir todos los objetos está dado por: (200/150 + TP + 200/150 + TP + 200/150 + TP + 100 000 / 150 + Tp) + ( 200 / ( 150/10 ) + TP + 200 / ( 150/10 ) + TP + 200 / ( 150/10 ) + TP + 100000 / ( 150/10 ) + Tp ) = 7377 + 8 * Tp (segundos) Entonces consideremos una conexión HTTP persistente. El tiempo total necesario es de: (200/150 + TP + 200/150 + TP + 200/150 + TP + 100 000 / 150 + Tp) + 10 * (200/150 + TP + 100 000 / 150 + Tp) = 7351 + 24 * Tp (segundos) Supongamos que la velocidad de la luz es de 300 * 106 m/seg, a continuación, Tp = 10 / (300 * 106) = 0,03 microsegundos. Tp es insignificante en comparación con el retardo de transmisión. Por lo tanto, vemos que el HTTP persistente no tiene ganancia significativa (menos de 1 por ciento) sobre el caso no persistente con descarga paralela. 11. Continuando con el escenario del problema anterior, suponga que Benito comparte el enlace con otros cuatro usuarios. Benito utiliza instancias paralelas de HTTP no persistente y los otros cuatro usuarios utilizan HTTP no persistente sin descargas en paralelo. a. ¿Le ayudan a Benito las conexiones en paralelo a obtener las páginas más rápidamente? ¿Por qué? R/. Sí, porque Benito tiene más conexiones, y así pueda obtener proporcionalmente más ancho de banda de la cuota del ancho de banda total del enlace. b. Si los cinco usuarios abren cinco instancias paralelas de HTTP no persistente, ¿seguirán siendo beneficiosas las conexiones en paralelo de Benito? ¿Por qué? R/. Sí, Benito aún necesita realizar descargas en paralelo, de lo contrario va a recibir menos cuota de ancho de banda que otros cuatro usuarios. De hecho, todos los usuarios podrían tender a abrir más conexiones con el fin de ganar más cuota de ancho de banda. 12. Escriba un programa TCP simple para un servidor que acepte líneas de entrada procedentes de un cliente y muestre dichas líneas en la salida estándar del servidor. (Puede realizar esta tarea modificando el programa TCP Servidor. Java visto en el capítulo.) Compile y ejecute su programa. En cualquier otra máquina que disponga de un navegador web, configure el servidor proxy en el navegador para que apunte al host que está ejecutando su programa servidor; configure también el número de puerto de la forma apropiada. Su navegador deberá ahora enviar sus mensajes de solicitud GET a su servidor y el servidor tendrá que mostrar dichos mensajes en su salida estándar. Utilice esta plataforma para determinar si su navegador genera mensajes GET condicionales para los objetos almacenados localmente en la caché. R/. 13. ¿Cuál es la diferencia entre MAIL FROM: en SMTP y Fromm: en el propio mensaje de correo? R/. La MAIL FROM: en SMTP es un mensaje desde el cliente SMTP que identifica al remitente del mail a servidor SMTP. “El De:” en el mensaje de correo no es un mensajes SMTP, sino más bien es sólo una línea en el cuerpo del mensaje de correo. 14. ¿Cómo marca SMTP el final del cuerpo de un mensaje? ¿Cómo lo hace HTTP? ¿Puede HTTP utilizar el mismo método que SMTP para marcar el final del cuerpo de un mensaje? Explique su respuesta. R/. SMTP utiliza una línea que contiene sólo un período para marcar el final de un cuerpo de mensaje. HTTP utiliza "campo de encabezado Content-Length" para indicar la longitud de un cuerpo del mensaje. No, HTTP no puede utilizar el método utilizado por SMTP, porque el mensaje HTTP podría ser datos binarios, mientras que en SMTP, en el cuerpo del mensaje debe estar en formato ASCII de 7 bits. 15. Lea el documento RFC 5321 dedicado a SMTP. ¿Qué quiere decir MTA? Considere el siguiente mensaje de correo basura recibido (modificado a partir de un correo basura real). Suponiendo que únicamente el remitente de este mensaje de correo es malicioso y que los demás hosts son honestos, identifique al host malicioso que ha generado este correo basura. From - Fri Nov 07 13:41:30 2008 Return-Path: <[email protected]> Received: from barmail.cs.umass.edu (barmail.cs.umass.edu [128.119.240.3]) by cs.umass.edu (8.13.1/8.12.6) for <[email protected]>; Fri, 7 Nov 2008 13:27:10 -0500 Received: from asusus-4b96 (localhost [127.0.0.1]) by barmail.cs.umass.edu (Spam Firewall) for <[email protected]>; Fri, 7 Nov 2008 13:27:07 -0500 (EST) Received: from asusus-4b96 ([58.88.21.177]) by barmail.cs.umass.edu for <[email protected]>; Fri, 07 Nov 2008 13:27:07 -0500 (EST) Received: from [58.88.21.177] by inbnd55.exchangeddd.com; Sat, 8 Nov 2008 01:27:07 +0700 From: "Jonny" <[email protected]> To: <[email protected]> Subject: Cómo asegurar sus ahorros R/. MTA es sinónimo de Agente de Transferencia de Correo. Un correo electrónico se envía por una fuente a un MTA y entonces se sigue una secuencia de MTA para llegar al lector de correo del receptor. Vemos que este correo electrónico no deseado sigue una cadena de MTA. Un MTA honesto debe informar donde recibe el mensaje. Nótese que en este correo electrónico, "asusus-4b96 ([58.88.21.177]) "no informa de donde recibe el correo electrónico. Como se supone que sólo el autor es errado, por lo que "asusus-4b96 ([58.88.21.177])" debe ser el originador. 16. Lea el documento RFC 1939 dedicado a POP3. ¿Cuál es el propósito del comando UIDL POP3? R/. UIDL es abreviatura de "lista única-ID". Cuando un cliente POP3 emite el comando UIDL, el servidor responde con el ID de mensaje único para todos los mensajes presentes en los usuarios de buzones. Este comando es útil para "descargar y guardar". Al mantener un archivo que enumera los mensajes recuperados en las sesiones anteriores, el cliente puede utilizar el comando UIDL para determinan que ya se han visto los mensajes en el servidor. 17. Imagine que accede a su correo electrónico utilizando POP3. a. Suponga que ha configurado su cliente de correo POP para operar en el modo descargar y borrar. Complete la siguiente transacción: C: list S: 1 498 S: 2 912 S:. C: retr 1 S: bla bla... S: ..........blah S:. R/. C:dele 1 C:retr 2 S:(blah blah … S:………..blah) S:. C:dele 2 C:quit S:+OK POP3 server signing off b. Suponga que ha configurado su cliente de correo POP para operar en el modo descargar y guardar. Complete la siguiente transacción: C: list S: 1 498 S: 2 912 S: . C: retr 1 S: bla bla ... S: ..........bla S: . R/. C:retr 2 S:blah blah … S:………..blah S:. C:quit S:+OK POP3 server signing off c. Suponga que ha configurado su cliente de correo POP para operar en el modo descargar y guardar. Utilizando su transcripción del apartado (b), suponga que recupera los mensajes 1 y 2, sale de POP, y cinco minutos más tarde vuelve a acceder otra vez a POP para recuperar un nuevo mensaje de correo. Suponga que en ese intervalo de cinco minutos nadie le ha enviado un nuevo mensaje de correo. Proporcione una transcripción de esta segunda sesión de POP. R/. C:list S:1 498 S:2 912 S:. C:retr 1 S:blah ….. S:….blah S:. C:retr 2 S:blah blah … S:………..blah S:. C:quit S:+OK POP3 server signing off 18. a. ¿Qué es una base de datos whois? R/. Para una determinada entrada de nombre de dominio (como ccn.com), dirección IP o red nombre del administrador, whoisdatabase se puede utilizar para localizar el registro correspondiente, servidor whois, servidor DNS, y así sucesivamente. d. Utilice varias bases de datos whois de Internet para obtener los nombres de dos servidores DNS. Indique qué bases de datos whois ha utilizado. R/. NS4.YAHOO.COM de www.register.com; NS1.MSFT.NET de ww.register.com e. Utilice el programa nslookup en su host local para enviar consultas DNS a tres servidores DNS: su servidor DNS local y los dos servidores DNS que haya encontrado en el apartado (b). Intente realizar consultas para obtener registros de recursos de tipo A, NS y MX. Escriba un resumen de sus hallazgos. R/. Dominio local: www.mindspring.com Servidores Web: www.mindspring.com 207.69.189.21, 207.69.189.22, 207.69.189.23, 207.69.189.24, 207.69.189.25, 207.69.189.26, 207.69.189.27, 207.69.189.28 Servidores de correo: mx1.mindspring.com (207.69.189.217) mx2.mindspring.com (207.69.189.218) mx3.mindspring.com (207.69.189.219) mx4.mindspring.com (207.69.189.220) Servidores de nombres: itchy.earthlink.net (207.69.188.196) scratchy.earthlink.net (207.69.188.197) www.yahoo.com Servidores Web: www.yahoo.com (216.109.112.135, 66.94.234.13) Servidores de correo : a.mx.mail.yahoo.com ( 209.191.118.103 ) b.mx.mail.yahoo.com ( 66.196.97.250 ) c.mx.mail.yahoo.com ( 68.142.237.182 , 216.39.53.3 ) d.mx.mail.yahoo.com ( 216.39.53.2 ) e.mx.mail.yahoo.com ( 216.39.53.1 ) f.mx.mail.yahoo.com ( 209.191.88.247 , 68.142.202.247 ) g.mx.mail.yahoo.com ( 209.191.88.239 , 206.190.53.191 ) Servidores de nombres : ns1.yahoo.com ( 66.218.71.63 ) ns2.yahoo.com ( 68.142.255.16 ) ns3.yahoo.com ( 217.12.4.104 ) ns4.yahoo.com ( 68.142.196.63 ) ns5.yahoo.com ( 216.109.116.17 ) ns8.yahoo.com ( 202.165.104.22 ) ns9.yahoo.com ( 202.160.176.146 ) www.hotmail.com Servidores Web : www.hotmail.com ( 64.4.33.7 , 64.4.32.7 ) Servidores de correo : mx1.hotmail.com ( 65.54.245.8 , 65.54.244.8 , 65.54.244.136 ) mx2.hotmail.com ( 65.54.244.40 , 65.54.244.168 , 65.54.245.40 ) mx3.hotmail.com ( 65.54.244.72 , 65.54.244.200 , 65.54.245.72 ) mx4.hotmail.com ( 65.54.244.232 , 65.54.245.104 , 65.54.244.104 ) Servidores de nombres : ns1.msft.net ( 207.68.160.190 ) ns2.msft.net ( 65.54.240.126 ) ns3.msft.net ( 213.199.161.77 ) ns4.msft.net ( 207.46.66.126 ) ns5.msft.net ( 65.55.238.126 ) f. Utilice el programa nslookup para localizar un servidor web que tenga varias direcciones IP. ¿Tiene el servidor web de su institución (centro de estudios o empresa) varias direcciones IP? R/. El servidor web yahoo tiene varias direcciones IP www.yahoo.com (216.109.112.135, 66.94.234.13) g. e. Utilice la base de datos whois ARIN para determinar el rango de direcciones IP utilizado en su universidad. R/. El rango de direcciones de la Universidad Politécnica: 128.238.0.0 - 128.238.255.255 h. Describa cómo un atacante puede utilizar las bases de datos whois y la herramienta nslookup para realizar labores de reconocimiento en una institución antes de lanzar un ataque. R/. Un atacante puede utilizar la herramienta whoisdatabase y nslookup para determinar Los rangos de dirección IP, direcciones de servidor DNS, etc, para la institución de destino. i. Explique por qué las bases de datos whois deben estar disponibles públicamente. R/. Mediante el análisis de la dirección de origen de los paquetes de ataque, la víctima puede utilizar whois para obtener información acerca de dominio desde donde viene el ataque y, posiblemente, informar a los administradores del dominio origen. 19. En este problema empleará la útil herramienta dig, disponible en los hosts Unix y Linux para explorar la jerarquía de los servidores DNS. Como se muestra en la Figura 2.21, un servidor DNS que se encuentra en un nivel superior de la jerarquía DNS delega una consulta DNS en un servidor DNS que se encuentra en un nivel más bajo de la jerarquía, devolviendo al cliente DNS el nombre de dicho servidor DNS del nivel más bajo. Lea primero la página de manual dedicada a dig y, a continuación, responda a las siguientes preguntas. a. Comenzando por un servidor DNS raíz (uno de los servidores raíz [a-m].rootservers.net), inicie una secuencia de consultas para obtener la dirección IP del servidor web de su departamento, utilizando la herramienta dig . Visualice la lista de nombres de los servidores DNS incluidos en la cadena de delegación que ha obtenido como respuesta a su consulta. R/. La siguiente cadena de delegación isused para gaia.cs.umass.edu a.root-servers.net E.GTLD-SERVERS.NET ns1.umass.edu (autorizada) En primer comando: cavar + [email protected] cualquier gaia.cs.umass.edu ;; AUTORIDAD SECCIÓN: edu. 172800 IN NS E.GTLD-SERVERS.NET. edu. 172800 IN NS a.gtld-SERVERS.NET. edu. 172800 IN NS G3.NSTLD.COM. edu. 172800 IN NS D.GTLD-SERVERS.NET. edu. 172800 IN NS H3.NSTLD.COM. edu. 172800 IN NS L3.NSTLD.COM. edu. 172800 IN NS M3.NSTLD.COM. edu. 172800 IN NS C.GTLD-SERVERS.NET. Entre todos los servidores DNS edu vueltos, enviaremos una consulta a la primera. cavar + [email protected] cualquier gaia.cs.umass.edu umass.edu. 172800 IN NS ns1.umass.edu. umass.edu. 172800 IN NS ns2.umass.edu. umass.edu. 172800 IN NS ns3.umass.edu. Entre los tres servidores DNS autorizados vueltos, enviaremos una consulta a la primera. cavar + [email protected] cualquier gaia.cs.umass.edu gaia.cs.umass.edu. 21600 IN A 128.119.245.12 b. Repita el apartado (a) para varios sitios web populares, como por ejemplo google.com, yahoo.com o amazon.com. R/. La respuesta para google.com podría ser: a.root-servers.net E.GTLD-SERVERS.NET ns1.google.com (autorizada) 20. Suponga que puede acceder a las cachés de los servidores DNS locales de su departamento. ¿Puede proponer una forma de determinar de manera aproximada los servidores web (situados fuera de su departamento) que son más populares entre los usuarios del departamento? Explique su respuesta. R/. Podemos tomar periódicamente instantáneas de los cachés DNS en los servidores DNS locales. El Servidor Web que aparece con más frecuencia en el cachés DNS es el servidor más popular. Esto es porque si más usuarios están interesados en un servidor Web, entonces DNS solicita el servidor por el cual envían con mayor frecuencia los usuarios. De este modo, aparecerá ese servidor Web en el DNS almacenado en caché con mayor frecuencia. 21. Suponga que su departamento tiene un servidor DNS local para todas las computadoras del departamento. Usted es un usuario normal (es decir, no es un administrador de la red o del sistema). ¿Puede determinar de alguna manera si desde alguna computadora de su departamento se ha accedido hace unos pocos segundos a un determinado sitio web externo? Explique su respuesta. R/. Sí, podemos utilizar excavación para consultar ese sitio Web en el servidor DNS local. Por ejemplo, "cavar cnn.com" devolverá el tiempo de consulta para encontrar cnn.com. Si es visitada apenas hace un par de segundos, una entrada para cnn.com se almacena en caché en el DNS local caché, por lo que el tiempo de consulta es 0 ms. De lo contrario, el tiempo de consulta es mayor. 22. Desea distribuir un archivo de F= 15 Gbits a N pares. El servidor tiene una velocidad de carga de us = 30 Mbps, y cada par tiene una velocidad de descarga de di = 2 Mbps y una velocidad de carga igual a u. Para N= 10, 100 y 1.000, y u= 300 kbps, 700 kbps y 2 Mbps, prepare una gráfica que proporcione el tiempo mínimo de distribución para cada una de las combinaciones de N y u, tanto para una distribución cliente-servidor como para una distribución P2P. R/. Para calcular el tiempo de distribución mínima para la distribución de cliente-servidor, se utiliza la siguiente fórmula: Del mismo modo, para el cálculo del tiempo de distribución mínima para la distribución P2P, usamos la siguiente fórmula: Cuando: Nota: 300Kbps = 300/1024 Mbps. Cliente Servidor N 10 100 1000 300 Kbps 700 Kbps 2 Mbps 7680 7680 7680 51200 512000 51200 512000 51200 512000 Pir to Pir N 10 100 300 Kbps 700 Kbps 2 Mbps 7680 7680 7680 25904 47559 15616 21525 7680 7680 1000 23. Desea distribuir un archivo de F bits a N pares utilizando una arquitectura cliente servidor. Suponga un modelo flexible, en el que el servidor puede transmitir simultáneamente a varios pares, transmitiendo a cada par a distintas velocidades, siempre y cuando la velocidad combinada no sea mayor que us. a. Suponga que us/N d mín. Especifique un esquema de distribución que tenga un tiempo de distribución de NF/us. R/. Considere la posibilidad de un esquema de distribución en la que el servidor envía el archivo a cada cliente, en Paralelamente, a razón de una tasa de nosotros / N. Tenga en cuenta que esta tasa es menor que cada uno de los clientes de Descargar tasa, ya que por supuesto es / N ≤ dmin. Así, cada cliente también puede recibir a una velocidad es / N. Dado que cada cliente recibe a la tasa es / N, el tiempo para cada cliente reciba la totalidad archivo es F / (us / N) = NF / us. Dado que todos los clientes reciban el archivo en NF / nosotros, el general tiempo de distribución es también NF / us. b. Suponga que us/N d mín. Especifique un esquema de distribución que tenga un tiempo de distribución de F/d mín. R/. Considere la posibilidad de un esquema de distribución en la que el servidor envía el archivo a cada cliente, en en paralelo, a una tasa de Dmin. Tenga en cuenta que la tasa agregada, N dmin, está a menos de enlace del servidor tasa de nosotros, ya que por supuesto es / N ≥ dmin. Dado que cada cliente recibe en dmin tasa, el tiempo de para cada cliente para recibir el archivo completo es F / dmin. Dado que todos los clientes reciban el archivo en este tiempo, el tiempo total de distribución es también F / dmin. c. Demuestre que, en general, el tiempo mínimo de distribución está dado por máx. {NF/us, F/d mín}. R/. { Supongamos que partir de (a) tenemos } . Luego de la Ecuación 1 tenemos . Combinando estos dos da: . Pero a Podemos demostrar de manera similar que La combinación de la Ecuación 2 y la Ecuación 3 da el resultado deseado. 24. Desea distribuir un archivo de Fbits a N pares utilizando una arquitectura P2P. Suponga un modelo flexible. Con el fin de simplificar, suponga que d mín es muy grande, por lo que el ancho de banda de descarga de los pares no es nunca un cuello de botella. a. Suponga que us (us + u 1+... + u N)/N. Especifique un esquema de distribución que tenga un tiempo de distribución de F/us. R/. us<= (us+ u)/N Ecuación 1 Divida el archivo en N partes, con la i ª parte que tiene el tamaño (ui / u) F. Los transmite servidor el i ª parte para mirar i en ri tasa = (ui / u) nosotros. Tenga en cuenta que R1 + R2 + ..... + rN = nosotros, de modo que el tasa servidor agregada no exceda la tasa de enlace del servidor. También tenemos cada par i enviar los bits que recibe a cada uno de los N-1 pares en ri tasa . El agregado Velocidad de reenvío por i pares es (N-1) ri . tenemos donde la última desigualdad sigue de la ecuación 1. Así, la tasa de transmisión agregada de pares i es menor que su ui velocidad del enlace . En este esquema de distribución, asomo i recibe los bits a una tasa global de b. Suponga que us (us + u 1 +... + u N)/N. Especifique un esquema de distribución que tenga un tiempo de distribución de NF/ (us + u 1 +... +u N). us>= (us+ u)/N Ecuación 2 deja ri= ui/(N-1) y rN+1= (us– u/(N-1))/N En este esquema de distribución, el archivo se divide en N partes 1. El servidor envía los bits de la i ª parte a la i ª par (i = 1, ...., N) en ri tarifa. Cada par i reenvía los bits llegar a RI tasa a cada uno de los otros N-1 pares. Además, el servidor envía los bits de la (N +1) parte a la tasa rN 1 a cada uno de los pares N. Los compañeros no reenvían el bits de la (N +1) parte. La tasa global de envío del servidor es r1+ …. + rN+ N rN+1= u/(N-1) + us– u/(N-1) = us Por lo tanto, la tasa de envío del servidor no supera su tasa de enlace. La tasa de emisión total de asomo i es (N-1)ri= ui Por lo tanto, la tasa de envío de cada interlocutor, no supera su tasa de enlace. En este esquema de distribución, asomo i recibe los bits a una tasa global de Así, cada par recibe el archivo en NF / (us + U). (Por simplicidad, hemos descuidado para especificar el tamaño del archivo de partfor i = 1, ...., N 1. Ahora dispondrá que aquí. Deje que Δ = (us + u) / N el tiempo de distribución. Para i = 1, ..., N, el i ª parte del archivo es Fi = ri Δbits. La (N 1) er parte del archivo es FN +1 = RN 1 Δbits. Es sencillo mostrar que la F1 + ..... + FN 1 = F.) c.Demuestre que, en general, el tiempo mínimo de distribución está dado por máx. {F/us, NF/ (us + u 1 +... + u N)}. R/. La solución a esta parte es similar a la de 17 (c). Sabemos de la sección 2.6 que Combinando esto con (a) y (b) da el resultado deseado. 25. Considere una red solapada con N pares activos, disponiendo cada pareja de pares de una conexión TCP activa. Suponga también que las conexiones TCP atraviesan un total de M routers. ¿Cuántos nodos y fronteras existen en la correspondiente red solapada? R/. Hay nodos en la red superpuesta. Hay n (n-1) / 2edges. 26. Suponga que Benito se une a un torrente Bit Torrent, pero no desea suministrar datos a otros pares (lo que se denomina “ir por libre”). R/. Sí. Su primera afirmación es posible, siempre y cuando haya suficientes compañeros alojados en el enjambre para un tiempo suficientemente largo. Bob siempre puede recibir datos a través de otros compañeros sin congestionarse. Su segunda afirmación también es cierta. Se puede ejecutar un cliente en cada máquina, y permitir que cada cliente haga "Parasitismo", y combinar esos trozos recogidos de diferentes máquinas en una sola presentar. Él puede incluso escribir un programa de planificación pequeño para permitir que diferentes máquinas sólo pidiendo para diferentes fragmentos del archivo. Esto es en realidad una especie de ataque Sybil en las redes P2P. 27. En este problema, el objetivo es determinar la eficiencia de un sistema de compartición de archivos P2P como Bit Torrent. Considere los pares Benito y Alicia. Éstos se unen a un torrente en el que, en total, hay M pares (incluyendo a Benito y Alicia) que están compartiendo un archivo que consta de N fragmentos. Suponga que en un instante determinado t, los fragmentos que tiene un par están seleccionados de forma aleatoria y uniforme de entre los N fragmentos y que ningún par tiene todos los N fragmentos. Responda a las siguientes preguntas. a. ¿Cuál es la probabilidad de que Benito tenga todos los fragmentos que tiene Alicia, si expresamos el número de fragmentos que tiene cada uno como nb (Benito) y na (Alicia)? R/. Tenga en cuenta que se supone nb>=na. Donde C (n, n) es la notación para la combinación, lo que significa que el número de maneras de elegir nout de N. b. Elimine algunas de las suposiciones del apartado (a) para calcular la probabilidad de que Benito tenga todos los fragmentos que tiene Alicia, si ésta tiene n fragmentos? R/. b. Suponga que cada par de Bit Torrent tiene cinco vecinos. ¿Cuál es la probabilidad de que Benito tenga datos que sean del interés de al menos uno de sus cinco vecinos? R/. 28. En el ejemplo de la DHT circular de la Sección 2.6.2, suponga que el par 3 sabe que el par 5 ha abandonado la red. ¿Cómo actualiza el par 3 la información de estado de su sucesor? ¿Qué par será ahora su primer sucesor? ¿Y su segundo sucesor? R/. Par 3 se entera de que Par 5 acaba de salir del sistema, de modo que Par 3 pide un mayor sucesor (par 4) para el identificador de su sucesor inmediato (pares 8). Luego los homólogos 3 harán que el 8 compañero como su segundo sucesor. Tenga en cuenta que el 3 compañero sabe que el 5 compañero fue originalmente el primer sucesor de par de 4, por lo que par 3 tiene que esperar hasta que par 4 terminen la actualización de su primer sucesor. 29. En el ejemplo de la DHT circular de la Sección 2.6.2, suponga que un nuevo par 6 desea unirse a la DHT y que inicialmente el par 6 sólo conoce la dirección IP del par 15. ¿Qué pasos tendrá que dar? R/. Par 6 en primer lugar enviara un mensaje par 15, que dice "lo que va a ser pares predecesor de 6 y sucesor?” Este mensaje se reenvía a través de la DHT hasta que alcance entre pares 5, que se da cuenta de que será el predecesor de 6 y que su actual sucesor, por pares 8, se convertirá en El sucesor de 6. A continuación, los compañeros 5 envían esta información predecesor y sucesor de nuevo a 6. Par 6 ahora pueden unirse a la DHT haciendo pares 8 de su sucesor y notificando a los compañeros que 5 debe cambiar su inmediato sucesor a 6. 30. Sea una red DHT circular con nodos e identificadores de clave en el rango de [0, 63]. Suponga que hay ocho pares cuyos identificadores son 0, 8, 16, 24, 32, 40, 48 y 56. a. Suponga que cada par puede tener un par de atajo. Para cada uno de los ocho pares, determine su par de atajo, de manera que el número de mensajes enviados para cualquier consulta (iniciada en cualquier par) sea mínimo. R/. Nuestra hipótesis acerca de las claves y consultas: 1. Todas las teclas son uniformemente distribuidos al azar en el rango de teclas, y los 8 pares son responsable para el mismo número de consultas en promedio. 2. Las consultas generadas por un compañero son para llaves uniformemente al azar distribuidos en el rango de teclas. Es decir, la consulta para cualquier clave se genera con la misma probabilidad. Debido a la homogeneidad de los compañeros y las consultas, sabemos que todos los compañeros elegirán un compañero de acceso directo con el mismo número de saltos en distancia de superposición. También suponemos que, por defecto, un nodo del mismo nivel conocido sobre su inmediato sucesor de pares y su nodo predecesor inmediato. (A diferencia del caso en el que un compañero tiene que conocer su segundo sucesor inmediato con el fin de hacer frente a la rotación de pares). Más Suponemos que un compañero puede reenviar consultas a su predecesor. Y si existen varias rutas de enrutamiento para una consulta, un compañero siempre elige el camino más corto. Tenga en cuenta el número de mensajes enviados para una consulta para una clave es igual al número de enrutamiento de saltos necesarios desde el generador de consultas puerto el par es decir manteniendo pulsada la tecla. Tenga en cuenta que en nuestra descripción, un salto de enrutamiento es diferente de un salto de superposición. Una superposición hop simplemente significa un salto lógico entre dos pares adyacentes a lo largo del anillo de superposición DHT. Pero un salto de enrutamiento puede abarcar múltiples saltos de superposición (o múltiples pares adyacentes consecutivos) si se permite el acceso directo. Por lo tanto, minimizar el número de mensajes enviados para cualquier consulta (a partir de cualquier par) es equivalente a minimizar el número promedio o total de saltos de enrutamiento atravesadas de una de igual a todos los demás compañeros. Sin pérdida de generalidad, echemos un vistazo a los compañeros 0. Para resolver este problema, nos fijamos en todas las posibilidades: un nodo accesos directos a un compañero superpuestos en dos saltos de distancia, en el anillo de identificación DHT , o tres superposición saltos de distancia, o cuatro superposición saltos de distancia, etc. Podemos encontrar que la mejor configuración es para un par to elegir un compañero de acceso directo con 4 superposiciones de lúpulo de distancia. "Mejor ", en el sentido de que el número promedio de mensajes por consulta (o el número total de saltos de enrutamiento para todas las consultas de todas las claves del espacio de claves) es minimizada. El cálculo se muestra en la siguiente tabla. Cada columna (excepto la Última columna) muestra el número de mensajes que se necesita para encaminar una consulta dentro de un rango. Vemos que el número total de mensajes que se necesita es de 11 cuando cada atajos de pares para otro compañero con 4 saltos de superposición (es decir, abarcan 4 pares adyacentes consecutivos) de distancia. Tenga en cuenta, si existen varias rutas de enrutamiento para una consulta, elegimos la longitud del camino más corto que el número de mensajes que se necesita. Así, por ejemplo, para el caso en que un compañero atajos a otro compañero 4 superposición saltos de distancia, y si los compañeros de 0 consulta es para una clave en el rango (48,56], entonces el camino más corto es 0Æ56, sólo un enrutamiento hop (es decir, un mensaje). b. Repita el apartado (a) pero ahora permita que cada par tenga dos pares de atajo. R/. Podemos encontrar que la mejor configuración es para un compañero que elegir dos pares de método abreviado con 3 y 6 de superposición saltos de distancia, o dos pares de método abreviado con 5 y 6 de superposición saltos de distancia. 31. Puesto que un número entero perteneciente al intervalo [0, 2 n 1] se puede expresar como un número binario de n bits en una DHT, cada clave se puede expresar como k= (k 0, k1,. . ., kn–1) y cada identificador de un par como p= (p0, p1,. . ., pn–1), definimos la distancia XOR entre una clave k y un par p como Explique cómo se puede utilizar esta métrica para asignar parejas (clave, valor) a los pares. (Para obtener más información sobre cómo crear una DHT eficiente utilizando esta métrica natural, consulte [Maymounkov 2002] donde se describe la DHT Kademlia.) R/. Para cada clave, primero calculamos las distancias (según d (k, p)) entre sí mismo y de todos los compañeros, y luego almacenar esta clave en el par que está cerrado a esta llave (con el menor valor de la distancia). Entonces, como en DHT circular descrita en el libro de texto, arreglamos los pares en un anillo. En este anillo, hay muchos grupos de teclas, y cada grupo se centra en un par particular. Cada clave en el grupo de pares es una más a este peer que a todos los demás compañeros. Algunas de las teclas en este grupo puede ser más grande que la ID de este par. Tenga en cuenta que un nivel es responsable de la llaves en su racimo, en lugar de ser el responsable de llaves sólo que son anterior (es decir, teclas tienen un valor menor que el ID de este par) en el rango de teclas. Cada par mantiene una tabla de enrutamiento de n Listas de entradas. Cada entrada contiene la información de otro par. Estas listas son las k -th (1 < = k < = n) lista dispuestas secuencialmente, y contiene pares de identificadores que difieren del significado de este par en el bit -k pero partido con todos los k- 1bits más significativos que k , incluyendo el bit más significativo , la segunda el bit más significativo , así sucesivamente, hasta que el bit más significativo (k- 1 ) thmost . Nótese aquí que utilizamos mas larga en el prefijo. También tenga en cuenta que con esta disposición, es posible que la mitad de los ID de la gama ID pueden ser puestos en la primera lista. Si i> j, a continuación, un par en i- thlist está más cerca de este nodo de un par en j- thlist. La consulta de rutas se puede hacer de la siguiente manera. Un par primero intenta hacer coincidir los bits de la clave con sus propios bits de identificaciones, y encuentra el "derecho" Listín su tabla de enrutamiento, y luego reenvía el consultar a cualquier entrada en la lista. Una lista "correcta" es una lista que tiene el prefijo más largo a juego con la tecla de destino. Una vez que un compañero recibe la clave de destino, sino que también comprueba su tabla de enrutamiento, y reenvía los pares de consulta de búsqueda en la lista de " derecha " , etc , etc , hasta que un par que es responsable de la clave se encuentra , o devuelve "no tan importante ", si no el enrutamiento es posible . 32. Considere una versión generalizada del esquema descrito en el problema anterior. En lugar de utilizar números binarios, ahora vamos a tratar las claves y los identificadores de los pares como números en base b, donde b> 2, y luego utilizaremos la métrica del problema anterior para diseñar una DHT (sustituyendo 2 por b). Compare esta DHT basada en números en base b con la DHT basada en números binarios. En el caso peor, ¿qué DHT genera más mensajes por consulta? ¿Por qué? R/. Se trata de una generalizada Kademlia DHT, y algo similar al prefijo de coincidencia de DHT de pastry´s . La DHT basado en números binarios genera más mensajes, log2N en el peor de los casos. Esta nueva DHT genera logbN registros de mensajes en el peor de los casos. 33. Dado que las DHT son redes solapadas, no necesariamente se corresponden con las redes físicas subyacentes en el sentido de que dos pares vecinos pueden estar físicamente muy alejados; por ejemplo, un par podría encontrarse en Asia y su vecino estar en América del Norte. Si asignamos identificadores de forma aleatoria y uniforme a los pares que acaban de unirse a la red, ¿podría este esquema de asignaciones hacer que se produjera esa no correspondencia? Explique su respuesta. ¿Cómo podría esa no correspondencia afectar al rendimiento de la DHT? R/. Sí, ese esquema de asignación de claves de sus compañeros no tiene en cuenta la red subyacente en absoluto, por lo que muy probablemente provoca falta de coincidencia. El desajuste puede potencialmente degradar el rendimiento de la búsqueda. Por ejemplo, considere: P1 camino lógico (que consiste de solo dos enlaces lógicos): AÆBÆC, donde A y B son compañeros vecinos, y B y C son vecinos compañeros. Supongamos que hay otro p2 camino lógico de A a B (que consta de 3 enlaces lógicos): AÆDÆEÆC. Podría ser el caso de que A y B podrían estar muy lejos físicamente, y B y C podrían estar muy lejos físicamente. Pero A, D, E, y C están muy cerca físicamente. En otras palabras, un camino lógico más corta corresponde a una ruta física más largo que hace un tiempo lógico camino. 34. Instale y compile los programas Java TCP Cliente y UDP Cliente en un host y los programas TCP Servidor y UDP Servidor en otro host. a. Suponga que ejecuta TCP Cliente antes que el programa TCP Servidor. ¿Qué ocurrirá? ¿Por qué? R/. Si ejecuta TCP Cliente primero, entonces el cliente intentará establecer una conexión TCP con un proceso de servidor que no existe. No se hará una conexión TCP. b. Suponga que ejecuta el programa UDP Cliente antes que UDP Servidor. ¿Qué ocurrirá? ¿Por qué? R/. UDP Cliente no establece una conexión TCP con el servidor. Por lo tanto, todo lo debería funcionar bien si se ejecuta por primera vez UDP Cliente, a continuación, ejecute UDP servidor y, a continuación, escriba algún de entrada en el teclado. c. ¿Qué ocurrirá si utiliza diferentes números de puerto para los lados de cliente y de servidor? R/. Si utiliza números de puerto diferentes, entonces el cliente intentará establecer una conexión TCP conexión con el proceso incorrecto o un proceso inexistente. Se producirán errores. 35. Suponga que en el programa UDP Client .java sustituimos la línea DatagramSocket socketCliente= new DatagramSocket (); Por DatagramSocket socketCliente= new DatagramSocket (5432); ¿Será necesario modificar el programa UDPServidor.java? ¿Cuáles son los números de puerto para los sockets en UDP Client y UDP Servidor? ¿Cuáles eran antes de realizar este cambio? R/. Con la línea original, UDP Cliente hace específico un número de puerto cuando se crea el zócalo. En este caso, el código permite que el sistema operativo subyacente elija un número de puerto. Con la línea de remplazo, cuando se ejecuta UDP Cliente, un socket UDP se crea con número de puerto 5432. UDP Server necesita saber el número de puerto del cliente para que pueda enviar paquetes de vuelta a la socket del cliente correcto. Echando un vistazo a UDP Server, vemos que el número de puerto del cliente no es "Hard-wired" en el código del servidor, sino el UDP Server determina el número de puerto del cliente por desentrañar, el datagrama que recibe del cliente (utilizando el método. Consigue un puerto ()). Así el Servidor UDP funciona con cualquier número de puerto del cliente, incluyendo 5432. El UDP servidor por lo tanto, no necesita ser modificado. Antes: El socket de cliente = x (elegido por el sistema operativo) Socket Server = 9876 Después: El socket de cliente = 5432 Capítulo 3 Cuestiones de repaso SECCIONES 3.1–3.3 R1. Suponga que la capa de red proporciona el siguiente servicio: la capa de red del host de origen acepta un segmento con un tamaño máximo de 1.200 bytes y una dirección de host de destino de la capa de transporte. La capa de red garantiza la entrega del segmento a la capa de transporte en el host de destino. Suponga que en el host de destino pueden ejecutarse muchos procesos de aplicaciones de red. a. Diseñe el protocolo de la capa de transporte más simple posible que entregue los datos de la aplicación al proceso deseado en el host de destino. Suponga que el sistema operativo del host de destino ha asignado un número de puerto de 4 bytes a cada proceso de aplicación en ejecución. R/. Llame a este protocolo de transporte (STP). En el lado emisor, STP acepta desde el proceso de envío de un fragmento de datos que no exceda de 1.196 bytes, una dirección de host de destino y un número de puerto de destino. STP agrega cuatro bytes de cabecera de cada fragmento y pone el número de puerto del proceso de destino en este encabezado. STP entonces da la dirección del host de destino y el segmento resultante para la capa de red. La capa de red proporciona el segmento a STP en la host de destino. STP a continuación, examina el número de puerto en el segmento, extrae los datos del segmento, y pasa los datos al proceso identificado por el puerto número. b. Modifique este protocolo de manera que proporcione una “dirección de retorno” al proceso de destino. R/. El segmento tiene ahora dos campos de cabecera: un campo de puerto de origen y puerto de campo de destino. En el lado del remitente, STP acepta un bloque de datos que no exceda de 1.192 bytes, una dirección de destino de acogida, un número de puerto de origen, y un número de puerto de destino. STP crea un segmento que contiene el número de datos de la aplicación, el puerto de origen y el número de puerto de destino. Se da entonces el segmento y el host de destino frente a la capa de red. Después de recibir el segmento, STP en el receptor huésped le da al proceso de solicitud de los datos de las aplicaciones y el número de puerto de origen. c. En sus protocolos, ¿la capa de transporte “tiene que hacer algo” en el núcleo de la red de computadoras? R/. No, la capa de transporte no tiene que hacer nada en el núcleo, y el transporte capa "vive" en los sistemas finales. R2. Imagine una sociedad en la que todo el mundo perteneciera a una familia de seis miembros, todas las familias vivieran en su propia casa, cada casa tuviera una dirección única y cada persona de cada casa tuviera un nombre único. Imagine que esa sociedad dispone de un servicio de correos que transporta las cartas desde una vivienda de origen hasta una vivienda de destino. El servicio de correos requiere que (i) la carta se introduzca en un sobre y que (ii) la dirección de la casa de destino (y nada más) esté claramente escrita en el sobre. Suponga también que en cada familia hay un delegado que tiene asignada la tarea de recoger y distribuir las cartas a los restantes miembros de la familia. Las cartas no necesariamente proporcionan una indicación acerca de los destinatarios. a. Partiendo de la solución del Problema R1, describa un protocolo que el delegado de la familia pueda utilizar para entregar las cartas de un miembro de la familia emisora a un miembro de la familia receptora. R/. Para el envío de una carta, el miembro de la familia tiene la obligación de dar el nombre del delegado de la carta en sí, la dirección de la casa de destino, y el nombre del destinatario. El delegado escribe claramente el nombre del destinatario en la parte superior de la carta. El delegado luego pone la carta en un sobre y escribe la dirección de la casa de destino en el mismo. El delegado luego le da la carta a los servicio de correo. En el lado receptor, el delegado recibe la carta del servicio de correo, saca la carta del sobre y toma nota del nombre del destinatario escrito en la parte superior de la carta. El delegado entrega la carta al miembro de la familia con este nombre. b. En su protocolo, ¿el servicio de correos tienen que abrir el sobre y examinar la carta para proporcionar este servicio? R/. No, el servicio de correos no tiene que abrir el sobre, sino que sólo examina la dirección en el sobre. R3. Considere una conexión TCP entre el host A y el host B. Suponga que los segmentos TCP que viajan del host A al host B tienen un número de puerto de origen xy un número de puerto de destino y. ¿Cuáles son los números de puerto de origen y de destino para los segmentos que viajan del host B al host A? R/. Número de puerto de origen y puerto de destino y el número X. R4. Describa por qué un desarrollador de aplicaciones puede decidir ejecutar una aplicación sobre UDP en lugar de sobre TCP. R/. Un desarrollador de aplicaciones no usa TCP por el control de congestión del TCP. A menudo, los diseñadores de la telefonía IP y aplicaciones de videoconferencia IP eligen ejecutar sus aplicaciones a través de UDP porque quieren evitar la congestión de TCP de control. Además, algunas aplicaciones no necesitan la transferencia de datos fiable proporcionado por TCP. R5. ¿Por qué razón el tráfico de voz y de vídeo suele enviarse sobre TCP en lugar de sobre UDP en la Internet de hoy día? (Sugerencia: la respuesta que estamos buscando no tiene nada que ver con el mecanismo de control de congestión de TCP.) R/. Como la mayoría de los servidores de seguridad están configurados para bloquear el tráfico UDP, utilizando TCP para vídeo, voz y permite que el tráfico de estos se establezca a pesar de la acción de los firewalls. R6. ¿Es posible que una aplicación disfrute de una transferencia de datos fiable incluso si se ejecuta sobre UDP? En caso afirmativo, explique cómo. R/. Sí. El desarrollador de la aplicación puede poner la transferencia de datos fiable en la aplicación y el protocolo de capa, sin embargo esto requeriría una cantidad significativa de trabajo y la depuración. R7. Sea un proceso del host C que tiene un socket UDP con el número de puerto 6789. Suponga también que los hosts A y B envían cada uno de ellos un segmento UDP al host C con el número de puerto de destino 6789. ¿Serán dirigidos ambos segmentos al mismo socket del host C? En caso afirmativo, ¿cómo sabrá el proceso del host C que estos dos segmentos proceden de dos hosts distintos? R/. Sí, ambos segmentos serán dirigidos a la misma toma. Para que cada uno reciba un segmento en la interfaz de socket, el sistema operativo proporcionará el proceso con las direcciones IP para determinar el origen de los segmentos individuales. R8. Suponga que un servidor web se ejecuta en el puerto 80 del host C. Suponga también que este servidor web utiliza conexiones persistentes y que actualmente está recibiendo solicitudes de dos hosts diferentes, A y B. ¿Están siendo enviadas todas las solicitudes al mismo socket del host C? Si están siendo pasadas a través de sockets diferentes, ¿utilizan ambos sockets el puerto 80? Explique y justifique su respuesta. R/. Para cada conexión persistente, el servidor Web crea una conexión independiente " socket ". Cada caja de conexión se identifica así en sus cuatro campos: (fuente IP dirección, número de puerto de origen, la dirección IP de destino, número de puerto de destino). Cuando el anfitrión C recibe datagramas IP, examina estos cuatro campos en el datagrama / segmento para determinar a qué socket debe pasar la carga útil del segmento TCP. Por lo tanto, las peticiones de A y B pasan a través de diferente toma. El identificador para ambos de estos zócalos tiene 80 para el puerto de destino, sin embargo, los identificadores para estos conectores tienen valores diferentes para direcciones IP de origen. A diferencia de UDP, cuando la capa de transporte pasa la carga útil de un segmento TCP con el proceso de solicitud, que no especifica la dirección IP de origen, ya que implícitamente esta especificado por el identificador de socket. R9. En los protocolos estudiados, ¿por qué necesitábamos introducir números de secuencia? R/. Los números de secuencia son necesarios para un receptor, así podra averiguar si llega un paquete que contiene nuevos datos, eso seria una retransmisión. R10. En los protocolos rdt estudiados, ¿por qué necesitábamos introducir temporizadores? R/. Para manejar las perdidas en el canal, ya que los ACK al no ser recibidos o los NACK en la duración del temporizador estos serán retransmitidos. R11. Suponga que el retardo de ida y vuelta entre el emisor y el receptor es constante y conocido por el emisor. ¿Se necesitaría en este caso un temporizador en el protocolo rdt 3.0, suponiendo que los paquetes pueden perderse? Explique su respuesta. R/. Sin importar que sea constante y conocido por el emisor, será necesario un temporizador en el protocolo, ya que solo se garantizara la pérdida del paquete por el emisor. R12. Visite el applet de Java Go-Back-Nen el sitio web del libro. a. Haga que el emisor envíe cinco paquetes y luego detenga la animación antes de que cualquiera de los cinco paquetes alcance su destino. A continuación, elimine el primer paquete y reanude la animación. Describa lo que ocurre. b. Repita el experimento, pero ahora deje que el primer paquete alcance su destino y elimine el primer paquete de reconocimiento. Describa lo que ocurre. d. Para terminar, pruebe a enviar seis paquetes. ¿Qué ocurre? R13. Repita el problema R12, pero ahora utilizando el applet de Java con repetición selectiva (SR). ¿En qué se diferencian los protocolos SR y GBN? SECCIÓN 3.5 R14. ¿Verdadero o falso? a. El host A está enviando al host B un archivo de gran tamaño a través de una conexión TCP. Suponga que el host B no tiene datos que enviar al host A. El host B no enviará paquetes de reconocimiento al host A porque el host B no puede superponer esos reconocimientos sobre los datos. R/. Falsa b. El tamaño de la ventana de recepción de TCP nunca varía mientras dura la conexión. R/. Falsa c. Suponga que el host A está enviando al host B un archivo de gran tamaño a través de una conexión TCP. El número de bytes no reconocidos que A envía no puede exceder el tamaño del buffer del receptor. R/. Verdadera d. Suponga que el host A está enviando al host B un archivo de gran tamaño a través de una conexión TCP. Si el número de secuencia de un segmento en esta conexión es m, entonces el número de secuencia del siguiente segmento necesariamente tiene que ser m+ 1. R/. Falsa e. El segmento TCP contiene un campo en su cabecera para Ventana Recepción. R/. Verdadera f. Suponga que el último RTT Muestra en una conexión TCP es igual a 1 segundo. El valor actual del Intervalo Fin De Temporización para la conexión será necesariamente 1 segundo. R/. Falsa g. Suponga que el host A envía al host B un segmento con el número de secuencia 38 y 4 bytes de datos a través de una conexión TCP. En este mismo segmento el número de reconocimiento necesariamente tiene que ser 42. R/. Falsa R15. Suponga que el host A envía dos segmentos TCP seguidos al host B a través de una conexión TCP. El primer segmento tiene el número de secuencia 90 y el segundo tiene el número de secuencia 110. a. ¿Cuántos datos hay en el primer segmento? R/. 20 bytes b. Suponga que el primer segmento se pierde pero el segundo llega a B. En el paquete de reconocimiento que el host B envía al host A, ¿cuál será el número de reconocimiento? R/. Numero ACK = 90 R16.Considere el ejemplo de la conexión Telnet de la Sección 3.5. Unos pocos segundos después de que el usuario escriba la letra ‘C’, escribe la letra ‘R’. Después de escribir la letra ‘R’, ¿cuántos segmentos se envían y qué valores se almacenan en los campos número de secuencia y número de reconocimiento de los segmentos? R/. 3 segmentos. Primer segmento: ss = 43, ACK = 80; Segundo segmento: ss = 80, ACK = 44; en tercer segmento: ss = 44, ACK = 81 SECCIÓN 3.7 R17. Suponga que existen dos conexiones TCP en un cierto enlace de cuello de botella con una velocidad de Rbps. Ambas conexiones tienen que enviar un archivo de gran tamaño (en la misma dirección a través del enlace de cuello de botella). Las transmisiones de los archivos se inician en el mismo instante. ¿Qué velocidad de transmisión podría proporcionar TCP a cada una de las conexiones? R/. La mitad para ambos R18. ¿Verdadero o falso? En el control de congestión de TCP, si el temporizador del emisor caduca, el valor de umbral se hace igual a la mitad de su valor anterior. R/. Falso, se establece en la mitad del valor actual de la ventana de congestión. Capítulo 3 Problemas 1. Suponga que el cliente A inicia una sesión Telnet con el servidor S. Aproximadamente en el mismo instante, el cliente B también inicia una sesión Telnet con el servidor S. Proporcione los posibles números de puerto de origen y de destino para: a. Los segmentos enviados de A a S. Puerto Origen Puerto Destino 2555 50 b. Los segmentos enviados de B a S. Puerto Origen Puerto Destino 415 50 c. Los segmentos enviados de S a A. Puerto Origen Puerto Destino 50 2555 d. Los segmento enviados de S a B. Puerto Origen Puerto Destino 50 415 e. Si A y B son hosts diferentes, ¿es posible que el número de puerto de origen en los segmentos que van de A a S sea el mismo que en los segmentos que van de B a S? R/: Si f. ¿Qué ocurre si A y B son el mismo host? R/: No pueden ser el mismo host 2. Considere la Figura 3.5. ¿Cuáles son los valores de los puertos de origen y de destino en los segmentos que fluyen desde el servidor de vuelta a los procesos cliente? ¿Cuáles son las direcciones IP de los datagramas de la capa de red que transportan los segmentos de la capa de transporte? R/: Supongamos que las direcciones IP de los hosts A, B y C son a, b, c, (a, b, c son distintos.) A: Puerto de origen es 80, la dirección IP de origen es b, puerto destino es 26145, dirección IP destino es a C proceso izquierdo: Puerto de origen es 80, la dirección IP de origen es b, puerto destino es 7532, la dirección IP destino es c C, proceso derecho: Puerto de origen es 80, la dirección IP de origen es b, puerto destino es 26145, dirección IP destino es c 3. UDP y TCP utilizan el complemento a 1 para calcular sus sumas de comprobación. Suponga que tiene los tres bytes de 8 bits siguientes: 01010011, 01010100, 01110100. ¿Cuál es el complemento a 1 de la suma de estos bytes? (Observe que aunque UDP y TCP utilizan palabras de 16 bits para calcular la suma de comprobación, en este problema le pedimos que considere sumas de 8 bits). Explique cómo funciona. ¿Por qué UDP utiliza el complemento a 1 de la suma; es decir, por qué no simplemente emplea la suma? Con el esquema del complemento a 1, ¿cómo detecta el receptor los errores? ¿Es posible que un error de un solo bit no sea detectado? ¿Qué ocurre si hay 2 bits erróneos? R/: 1 0 1 0 0 1 1 + 1 0 1 0 1 0 0 1 0 1 0 0 1 1 1 1 0 1 0 0 1 1 1 + 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 0 El complemento a 1 de la suma 00101100 es 11010011 Se suman los dos primeros bytes de 8 bits y el resultado de esta se suma con el tercer byte, pero en esta se debe tener en cuenta el desbordamiento que va sobre el bit de menor peso, por lo tanto este complemento a 1 se obtiene convirtiendo todos los 0 a 1 y viceversa. La razón por la que UDP utiliza este complemento es porque no existe ninguna garantía de que todos los enlaces existentes entre el origen y el destino proporcionen un mecanismo de comprobación de errores; es decir, uno de los enlaces puede utilizar un protocolo de la capa de enlace que no proporcione comprobación de errores. En el receptor, los cuatro bytes de 8 bits se suman, incluyendo la suma de comprobación. Si no se han introducido errores en el paquete, entonces la suma en el receptor tiene que ser 11111111. Si uno de los bits es un 0, entonces sabemos que el paquete contiene errores. Todos los errores de un bit se detectarán, pero los errores de dos bits pueden ser detectados (por ejemplo, si el último dígito de la primera palabra se convierte en un 0 y el último dígito de la segunda palabra se convierte en un 1). 4. a. Suponga que tiene los 2 bytes siguientes: 01011100 y 01010110. ¿Cuál es el complemento a 1 de la suma de estos 2 bytes? R/: Sumando los dos bytes da 10110010 Tomando el complemento a 1 le da 01001101 b. Suponga que tiene los 2 bytes siguientes: 11011010 y 00110110. ¿Cuál es el complemento a 1 de la suma de estos 2 bytes? R/: Sumando los dos bytes 100010000 Tomando el complemento a 1 le da 011101111 a. Para los bytes del apartado (a), proporcione un ejemplo en el que un bit cambie de valor en cada uno de los 2 bytes y aun así el complemento a 1 no varíe. R/: El primer byte 01011110 y el segundo byte 01010100 obteniendo así la suma de los bytes 10110010 y observando que no varía junto con el complemento 01001101. 5. Suponga que el receptor UDP calcula la suma de comprobación de Internet para el segmento UDP recibido y comprueba que se corresponde con el valor almacenado en el campo de suma de comprobación. ¿Puede el receptor estar completamente seguro de que no hay ningún bit erróneo? Explique su respuesta. R/: No, el receptor no puede estar seguro de que no se han producido errores de bit. Debido a la forma en la que se calcula la suma de comprobación para el paquete. Ya que UDP tiene que proporcionar un mecanismo de detección de errores en la capa de transporte, terminal a terminal, debido a que los segmentos se transfieren correctamente a través del enlace pero es posible que se introduzcan errores de bit cuando un segmento se almacena en la memoria de un router. Dado que no están garantizadas ni la fiabilidad enlace a enlace, ni la detección de errores durante el almacenamiento en memoria. 6. Recuerde el motivo de corregir el protocolo rdt2.1. Demuestre que el receptor mostrado en la Figura 3.57 y el emisor mostrado en la Figura 3.11 pueden llegar a entrar en un estado de bloqueo tal que cada uno de ellos esté esperando a que se produzca un suceso que no ocurrirá nunca. R/: Supongamos que el remitente se encuentra en estado de "espera la llamada 1 desde arriba" y el receptor se encuentra en estado "Espere 1 de abajo" El emisor envía un paquete con número de secuencia 1, y las transiciones a "Esperar ACK o NAK 1," en espera de un ACK o NAK Supongamos ahora que el receptor recibe el paquete con número de secuencia 1 correctamente, envía un ACK, y las transiciones al estado "Espere a 0 desde abajo", a la espera de un paquete de datos con el número de secuencia 0 Sin embargo, el ACK está dañado. Cuando el remitente rdt2.1 recibe el ACK dañado, no vuelve a enviar el paquete con número de secuencia 1 Sin embargo, el receptor está esperando un paquete con número de secuencia 0 y (como se muestra en el problema del trabajo a domicilio) siempre envía una NAK cuando no recibe un paquete con número de secuencia 0 Por lo tanto el remitente siempre estará enviando un paquete con número de secuencia 1, y el receptor siempre NAK. 7. En el protocolo rdt3.0, los paquetes ACK que fluyen del receptor al emisor no tienen números de secuencia (aunque tienen un campo ACK que contiene el número de secuencia del paquete que están reconociendo). ¿Por qué estos paquetes ACK no requieren números de secuencia? R/: En primer lugar Vimos que el remitente debe números de secuencia para que el receptor puede determinar si un paquete de datos es un duplicado de un paquete de datos ya recibidos En el caso de los ACK, el emisor no necesita esta información (es decir, un número de secuencia de un ACK) para decirle detectar un ACK duplicado. Un ACK duplicado es obvio para el receptor rdt3.0, y desde entonces ha recibido el ACK original, que la transición al siguiente estado, el ACK duplicado no es el ACK de las necesidades del remitente y por lo tanto es ignorado por el remitente rdt3.0 8. Dibuje la máquina de estados finitos correspondiente al lado receptor del protocolo rdt3.0. R/: La parte remitente de protocolo rdt3.0 difiere de la parte remitente de protocolo 2.2 en que los tiempos de espera se han agregado. Hemos visto que la introducción de los tiempos de espera se suma la posibilidad de paquetes duplicados en el flujo de datos entre el remitente y el receptor. Sin embargo, el receptor en protocolo rdt.2.2 ya puede manejar paquetes duplicados (Duplicados Receptor-secundarios en rdt 2.2 surgirían si el receptor envía un ACK que se había perdido, y el remitente entonces retransmitido los datos antiguos) Por lo tanto el receptor en protocolo rdt2.2 también funcionará como el receptor en protocolo rdt 3.0. 9. Dibuje un esquema que muestre la operación del protocolo rdt3.0 cuando los paquetes de datos y los paquetes de reconocimiento están corrompidos. Utilice un esquema similar al mostrado en la Figura 3.16. 10. Sea un canal que puede perder paquetes pero del que se conoce su retardo máximo. Modifique el protocolo rdt2.1 para incluir los fines de temporización y las retransmisiones del emisor. Argumente de manera informal por qué su protocolo puede comunicarse correctamente a través de este canal. 11. El lado del emisor de rdt3.0 simplemente ignora (es decir, no realiza ninguna acción) todos los paquetes recibidos que contienen un error o que presentan un valor erróneo en el campo número de reconocimiento (acknum) de un paquete de reconocimiento. Suponga que, en tales circunstancias, rdt3.0 simplemente retransmite el paquete de datos actual. ¿Funcionaría en estas condiciones el protocolo? (Sugerencia: piense en lo que ocurriría si sólo hubiera errores de bit; no se producen pérdidas de paquetes pero sí pueden ocurrir sucesos de fin prematuro de la temporización. Considere cuántas veces se envía el paquete n, cuando n tiende a infinito.) R/: El protocolo aún funciona, ya que una retransmisión sería lo que ocurriría si el paquete recibido con errores de hecho se ha perdido (y desde el punto de vista del receptor, nunca sabe cuál de estos eventos, si bien, ocurrirá) Hay que tener en cuenta que se producen tiempos de espera prematuros. En este caso, si se ACK de cada copia adicional del paquete y cada uno recibió ACK adicional provoca otra copia extra del paquete actual para ser enviados, el número de veces que los n paquetes enviados aumentará sin límite cuando tiende a infinito 12. Considere el protocolo rdt 3.0. Dibuje un diagrama que muestre que si la conexión de red entre el emisor y el receptor puede reordenar los mensajes (es decir, que dos mensajes que se propagan por el medio físico existente entre el emisor y el receptor pueden ser reordenados), entonces el protocolo de bit alternante no funcionará correctamente (asegúrese de identificar claramente el sentido en el que no funcionará correctamente). En el diagrama debe colocar el emisor a la izquierda y el receptor a la derecha, con el eje de tiempos en la parte inferior de la página y deberá mostrar el intercambio de los mensajes de datos (D) y de reconocimiento (A). No olvide indicar el número de secuencia asociado con cualquier segmento de datos o de reconocimiento. 13. Considere un protocolo de transferencia de datos fiable que sólo utiliza paquetes de reconocimiento negativo. Imagine que el emisor envía datos con muy poca frecuencia. ¿Sería preferible un protocolo con solo emplea paquetes NAK a uno que utilice paquetes ACK? ¿Por qué? Suponga ahora que el emisor tiene muchos datos que transmitir y que la conexión terminal a terminal experimenta muy pocas pérdidas. En este segundo caso, ¿sería preferible un protocolo que sólo emplee paquetes NAK a otro que utilice paquetes ACK? ¿Por qué? R/: En un único protocolo de NAK, la pérdida de paquetes x sólo es detectada por el receptor cuando se recibe paquetes x 1 Es decir, los receptores recibe x-1 y entonces x 1, sólo cuando x 1 se recibe el receptor no darse cuenta de que x se perdió Si hay un gran retraso entre la transmisión de x y la transmisión de x 1, entonces será un largo tiempo hasta que x puede ser recuperado, en virtud de un único protocolo de NAK. Por otro lado, si se está enviando datos a menudo, entonces la recuperación bajo un NAK-único esquema podría suceder rápidamente. Por otra parte, si los errores son poco frecuentes, NAK se envían sólo ocasionalmente (cuando sea necesario), y nunca se envían ACK - una reducción significativa de retroalimentación en el NAK-único caso en el caso de sólo ACK 14. Considere el ejemplo mostrado en la Figura 3.17. ¿Cuál tiene que ser el tamaño de la ventana para que la tasa de utilización del canal sea mayor del 95 por ciento? Suponga que el tamaño de un paquete es de 1.500 bytes, incluyendo tanto los campos de cabecera como los datos. R/: Están a 12 microsegundos (o 0.012 milisegundos) para enviar un paquete, como 1500 * 8/10^9 = 12 microsegundos. Para que el remitente pueda estar ocupado el 95 por ciento del tiempo, debemos tener: Útil=0.95=(0.012n)/30.012 o n aproximadamente 2.376 paquetes 15. Suponga que una aplicación utiliza el protocolo rdt 3.0 como su protocolo de la capa de transporte. Como el protocolo de parada y espera tiene una tasa de utilización del canal muy baja (como se ha demostrado en el ejemplo de conexión que atraviesa el país de costa a costa), los diseñadores de esta aplicación permiten al receptor devolver una serie (más de dos) de ACK 0 y ACK 1 alternantes incluso si los correspondientes datos no han llegado al receptor. ¿Debería este diseño aumentar la tasa de utilización del canal? ¿Por qué? ¿Existe algún problema potencial con esta técnica? Explique su respuesta. R/: Sí, En realidad, esto hace que el remitente pueda enviar una serie de datos segmentados en el canal. Sí. Este es un problema potencial Si los segmentos de datos se pierden en el canal, entonces el remitente del rdt 3.0 no va volver a enviar esos segmentos, a menos que haya algún mecanismo adicional en la aplicación de recuperarse de la pérdida. 16. En el protocolo SR genérico que hemos estudiado en la Sección 3.4.4, el emisor transmite un mensaje tan pronto como está disponible (si se encuentra dentro de la ventana) sin esperar a recibir un paquete de reconocimiento. Suponga ahora que deseamos disponer de un protocolo SR que envíe mensajes de dos en dos. Es decir, el emisor enviará una pareja de mensajes y enviará la siguiente pareja de mensajes solo cuando sepa que los dos mensajes de la primera pareja se han recibido correctamente. Suponga que el canal puede perder mensajes pero no corromperlos ni tampoco reordenarlos. Diseñe un protocolo de control de errores para un servicio de transferencia de mensajes fiable y unidireccional. Proporcione una descripción de las máquinas de estados finitos del emisor y del receptor. Describa el formato de los paquetes intercambiados por el emisor y el receptor. Si utiliza alguna llamada a procedimiento distinta de las empleadas en la Sección 3.4 (por ejemplo, udt_enviar(), iniciar_ temporizador(), rdt_recibir(), etc.), defina claramente las acciones que realizan. Proporcione un ejemplo (una gráfica temporal del emisor y del receptor) que muestre cómo este protocolo se recupera de la pérdida de paquetes. 17. Considere un escenario en el que el host A desea enviar simultáneamente paquetes a los hosts B y C. El host A está conectado a B y C a través de un canal de multidifusión (broadcast) (un paquete enviado por A es transportado por el canal tanto a B como a C). Suponga que el canal de multidifusión que conecta A, B y C puede perder y corromper de manera independiente los paquetes (es decir, puede ocurrir, por ejemplo, que un paquete enviado desde A llegue correctamente a B, pero no a C). Diseñe un protocolo de control de errores similar a un protocolo de parada y espera que permita transferir paquetes de forma fiable de A a B y C, de manera que A no obtendrá nuevos datos de la capa superior hasta que separa que tanto B como C han recibido correctamente el paquete actual. Proporcione las descripciones de las máquinas de estados finitos de A y C. (Sugerencia: la FSM de B será prácticamente la misma que la de C.) Proporcione también una descripción del formato o formatos de paquete utilizados. 18. Considere un escenario en el que el host A y el host B desean enviar mensajes al host C. Los hosts A y C están conectados mediante un canal que puede perder y corromper (pero no reordenar) los mensajes. Los hosts B y C están conectados a través de otro canal (independiente del canal que conecta a A y C) que tiene las mismas propiedades. La capa de transporte del host C tiene que alternar la entrega de los mensajes que A y B tienen que pasar a la capa superior (es decir, primero entrega los datos de un paquete de A y luego los datos de un paquete de B, y así sucesivamente). Diseñe un protocolo de control de errores de tipo parada y espera para transferir de forma fiable los paquetes de A y B a C, con una entrega alternante en el host C, como hemos descrito anteriormente. Proporcione las descripciones de las FSM de A y C. (Sugerencia: la FSM de B será prácticamente la misma que la de A.) Proporcione también una descripción del formato o formatos de paquete utilizados. 19. Sea un protocolo GBN con una ventana de emisor de 3 y un rango de números de secuencia de 1.024. Suponga que en el instante t el siguiente paquete en orden que el receptor está esperando tiene el número de secuencia k. Suponga que el medio de transmisión no reordena los mensajes. Responda a las siguientes cuestiones: a. ¿Cuáles son los posibles conjuntos de números de secuencia que pueden estar dentro de la ventana del emisor en el instante t? Justifique su respuesta. R/: Aquí tenemos un tamaño de ventana de N = 3. Supongamos que el receptor ha recibido paquete k-1, ACK y todos los demás paquetes precedentes. Si todos estos ACK de haber sido recibidos por el remitente, entonces la ventana del remitente es [k, k + N-1]. Supongamos ahora que ninguno de los ACK puedo haber sido recibido por el remitente, entonces la ventana del emisor contiene K-1 y la N paquetes incluyendo K-1. La ventana del emisor es por lo tanto [k-n, k-1]. Por estos argumentos, la ventana de remitentes es de tamaño 3 y comienza en algún lugar en el rango [k N, k]. b. ¿Cuáles son todos los valores posibles del campo ACK en todos los posibles mensajes que están actualmente propagándose de vuelta al emisor en el instante t? Justifique su respuesta. R/: Si el receptor está a la espera de paquete k, entonces se ha recibido (Ack) de paquete k-1 y los paquetes de N-1 antes de eso. Si ninguno de aquellos N ACK se han recibido aún por el remitente, los mensajes ACK con valores de [k N, k-1] aún se pueden ir propagando hacia atrás. Debido a que el remitente ha enviado paquetes [k N, k-1], tiene que ser el caso de que el remitente ya ha recibido un ACK para kN-1. Una vez que el receptor ha enviado un ACK para k N1 que nunca le enviará un ACK que es menos que k N-1. Así, la gama de valores de ACK en vuelo puede variar desde k N-1 a k-1. 20. Suponga que tenemos dos entidades de red, A y B. B tiene que enviar a A un conjunto de mensajes de datos, cumpliendo los siguientes convenios. Cuando A recibe una solicitud de la capa superior para obtener el siguiente mensaje de datos (D) de B, A tiene que enviar un mensaje de solicitud (R) a B a través del canal que va de A a B. Sólo cuando B recibe un mensaje R puede devolver un mensaje de datos (D) a A a través del canal de B a A. A tiene que entregar exactamente una copia de cada mensaje D a la capa superior. Los mensajes R se pueden perder (pero no corromper) en el canal de A a B; los mensajes D, una vez enviados, siempre son correctamente entregados. El retardo a lo largo de ambos canales es desconocido y variable. Diseñe (proporcione una descripción de la FSM de) un protocolo que incorpore los mecanismos apropiados para compensar las pérdidas del canal de A a B e implemente el paso de los mensajes a la capa superior de la entidad A, como se ha explicado anteriormente. Utilice sólo aquellos mecanismos que sean absolutamente necesarios. R/: Debido a que el canal de A a B puede perder mensajes de petición, A necesitará tiempo de espera y retransmitir sus mensajes de solicitud (para ser capaz de recuperarse de la pérdida). Debido a que los retrasos de canal son variables y desconocidos, es posible que uno enviará peticiones duplicadas (es decir, volver a enviar un mensaje de petición que ya ha sido recibido por B). Para ser capaz de detectar mensajes de solicitud de duplicados, el protocolo utiliza números de secuencia. Un número de secuencia de 1 bit será suficiente para un tipo parada y espera del protocolo de solicitud / respuesta. A (el solicitante) tiene 4 estados: “Esperar la Solicitud de 0 desde arriba. " Aquí el solicitante está esperando una llamada de arriba para solicitar una unidad de datos. Cuando se recibe una solicitud desde arriba, envía un mensaje de solicitud, R0, a B, se inicia un temporizador y hace una transición al estado " Espere a D0”. Cuando en el " Esperar a Solicitud 0 desde arriba " del Estado, ignora cualquier cosa que recibe de B. “Espere a D0 “. Aquí el solicitante está esperando un mensaje de datos D0 de B. Un temporizador siempre se está ejecutando en este estado. Si el tiempo se agota, A envía otro mensaje R0, se reinicia el temporizador y permanece en este estado. Si se recibe un mensaje D0 de B, A se para el tiempo y el tránsito al estado " Espere Solicitud 1 desde arriba”. Si A recibe un mensaje de datos D1, mientras que en este estado, se ignora. “Esperar a Solicitud 1 desde arriba. " Aquí el solicitante está de nuevo a la espera de una llamada de arriba para solicitar una unidad de datos. Cuando se recibe una solicitud desde arriba, envía un mensaje de solicitud, R1, a B, se inicia un temporizador y hace una transición al estado " Espere D1”. Cuando en el Estado del " Esperar a Solicitud 1 desde arriba ", ignora cualquier cosa que recibe de B. “Espere a D1”. Aquí el solicitante está esperando un mensaje de datos D1 de B. Un temporizador siempre se está ejecutando en este estado. Si el tiempo se agota, A envía otro mensaje de R1, se reinicia el temporizador y permanece en este estado. Si se recibe un mensaje D1 de B, A se detiene el temporizador y tránsitos para el estado " Espere Solicitar 0 desde arriba”. Si A recibe un mensaje de datos D0 en este estado, se ignora. El proveedor de datos (B) tiene sólo dos estados: “Enviar D0. " En este estado, B sigue respondiendo a los mensajes recibidos por el envío de R0 D0, y luego permanece en este estado. Si B recibe un mensaje R1, luego se conoce su mensaje D0 ha sido recibido correctamente. Por lo tanto, descarta estos datos D0 (ya que se ha recibido en el otro lado) y, a continuación transita al estado " Enviar D1 “, donde se utilizará D1 a enviar la siguiente pieza de datos solicitada. “Enviar D1. " En este estado, B sigue respondiendo a los mensajes recibidos por el envío de R1 D1, y luego permanece en este estado. Si B recibe un mensaje R1, entonces se conoce su mensaje D1 se ha recibido correctamente y por lo tanto transita al estado " Enviar D1" 21. Considere los protocolos GBN y SR. Suponga que el tamaño del espacio de números de secuencia es k. ¿Cuál es la máxima ventana de emisor permitida que evitará la ocurrencia de problemas como los indicados en la Figura 3.27 para cada uno de estos protocolos? R/: Con el fin de evitar el escenario de la figura 3.27, queremos evitar que el borde delantero de la ventana del receptor (es decir, el que tiene el número de secuencia " más alto ") envolverlo alrededor, en el espacio de número de secuencia y se solapa con el borde de salida (el uno con el número de secuencia "mínimo" en la ventana del emisor). Es decir, el espacio de números de secuencia debe ser lo suficientemente grande como para ajustarse a la ventana del receptor entero y toda la ventana del remitente, sin esta condición se superponen. Por lo tanto necesitamos para determinar el tamaño del rango de números de secuencia y se puede cubrir en un momento dado por las ventanas receptores y emisores. Supongamos que el número más bajo de secuencia que el receptor está esperando es de paquetes m. En este caso, la ventana es [m, m + w - 1] y ha recibido ( Ack) de paquetes m - 1 y los paquetes W-1 antes, donde w es el tamaño de la ventana. Si ninguno de esos ACK w se han recibido aún por el remitente, los mensajes ACK con valores de [m-w, m- 1] aún pueden ir propagándose hacia atrás. Si no hay ACK con estos números que han sido recibidos por el emisor, a continuación, la ventana del emisor sería [m-w, m- 1]. Por lo tanto, el borde inferior de la ventana del emisor es MW, y el borde delantero de la ventana de receptores es m + W - 1. Para que el borde de ataque de la ventana del receptor no pueda solaparse con el borde de salida de la ventana del emisor, el espacio de números de secuencia por lo tanto debe ser lo suficientemente grande para dar cabida a 2w números de secuencia. Es decir, el espacio de números de secuencia debe ser al menos dos veces tan grande como el tamaño de la ventana, k ≥ 2w 22. Responda verdadero o falso a las siguientes preguntas y justifique brevemente sus respuestas: a. Con el protocolo SR, el emisor puede recibir un ACK para un paquete que se encuentra fuera de su ventana actual. R/: Verdadero. Supongamos que el remitente tiene un tamaño de ventana de 3 y envía los paquetes 1, 2, 3 en T0. En T1 (t1 > t0) el receptor ACK 1, 2, 3. En T2 (t2 > t1) los tiempos remitente fuera y vuelve a enviar 1, 2, 3. En T3 el receptor recibe los duplicados y vuelve a reconocer 1, 2, 3. En T4 el emisor recibe los ACK que el receptor envía al T1 y avanza en su ventana de 4, 5, 6. En T5 el remitente recibe el ACK 1, 2, 3 el receptor enviado a T2. Estos ACK son fuera de su ventana b. Con GBN, el emisor puede recibir un ACK para un paquete que se encuentra fuera de su ventana actual. R/: Verdadero. Esencialmente por el mismo escenario que en a. c. El protocolo de bit alternante es igual que el protocolo SR pero con un tamaño de ventana en el emisor y en el receptor igual a 1. R/: Verdadero d. El protocolo de bit alternante es igual que el protocolo GBN pero con un tamaño de ventana en el emisor y en el receptor igual a 1. R/: Verdadero. Tenga en cuenta que con un tamaño de ventana de 1, SR, GBN, y el protocolo bit alterno son funcionalmente equivalentes. El tamaño de la ventana de 1 excluye la posibilidad de paquetes fuera de orden (dentro de la ventana). Un ACK acumulativo es sólo un ACK ordinario en esta situación, ya que sólo puede referirse al solo paquete dentro de la ventana. 23. Hemos dicho que una aplicación puede elegir UDP como protocolo de transporte porque UDP ofrece a la aplicación un mayor grado de control (que TCP) en lo relativo a qué datos se envían en un segmento y cuándo. a. ¿Por qué una aplicación tiene más control sobre qué datos se envían en un segmento? R/: Considere la posibilidad de enviar un mensaje de aplicación durante un protocolo de transporte. Con TCP, la aplicación escribe datos en la conexión de envío de búfer y TCP se agarra bytes sin poner necesariamente un único mensaje en el segmento TCP; TCP puede poner más o menos un solo mensaje en un segmento. UDP, por otro lado, encapsula en un segmento cualquiera que sea la aplicación, de modo que, si la aplicación da UDP en un mensaje de aplicación, este mensaje será la carga útil del segmento UDP. Así, con UDP, una aplicación tiene más control de lo que los datos envían en un segmento. b. ¿Por qué una aplicación tiene más control sobre cuándo se envía el segmento? R/: Con TCP, debido al control de flujo y control de congestión, puede haber un retraso significativo desde el momento cuando una aplicación escribe datos en su búfer de envío hasta que cuando los datos se da a la capa de red. UDP no tiene retrasos debido al control de flujo y control de congestión. 24. Se desea transferir un archivo de gran tamaño de L bytes del host A al host B. Suponga un MSS de 536 bytes. Hay 2^32= 4294967296 posibles números de secuencia. a. ¿Cuál es el valor máximo de L tal que los números de secuencia de TCP no se agoten? Recuerde que el campo número de secuencia de TCP tiene 4 bytes. R/: El número de secuencia no se incrementa en 1 con cada segmento. Más bien, se incrementa por el número de bytes de datos enviados. Así que el tamaño de la MSS es irrelevante, el tamaño de archivo máximo que se puede enviar de A a B es simplemente el número de bytes que puede representarse por 2^32 = 4.19 Gbytes b. Para el valor de L que haya obtenido en el apartado (a), calcule el tiempo que tarda en transmitirse el archivo. Suponga que a cada segmento se añade un total de 66 bytes para la cabecera de la capa de transporte, de red y de enlace de datos antes de enviar el paquete resultante a través de un enlace a 155 Mbps. Ignore el control de flujo y el control de congestión de modo que A pueda bombear los segmentos seguidos y de forma continuada. R/: El número de segmentos es 2^32 / 536 = 8,012.998.687 * 66 bytes de cabecera, se añaden a cada segmento con un total de 528857934 bytes de cabecera. El número total de bytes transmitidos es 2^32 + 528857934 = 4823825230 bytes. Por lo tanto se necesitarían 249 segundos para transmitir el archivo a través de un enlace de 155 Mbps 25. Los hosts A y B están comunicándose a través de una conexión TCP y el host B ya ha recibido de A todos los bytes hasta el byte 126. Suponga que a continuación el host A envía dos segmentos seguidos al host B. El primer y el segundo segmentos contienen, respectivamente, 70 y 50 bytes de datos. En el primer segmento, el número de secuencia es 127, el número del puerto de origen es 302 y el número de puerto de destino es 80. El host B envía un paquete de reconocimiento cuando recibe un segmento del host A. a. En el segundo segmento enviado del host A al B, ¿Cuáles son el número de secuencia, el número del puerto de origen y el número del puerto de destino? R/: En el segundo segmento del host A al B, el número de secuencia es 197, el número de puerto de origen es 302 y el número de puerto de destino es 80. b. Si el primer segmento llega antes que el segundo segmento, ¿cuál es el número de reconocimiento, el número del puerto de origen y el número del puerto de destino en el ACK correspondiente al primer segmento? R/: Si el primer segmento llega antes de la segunda, en el acuse de recibo del primer segmento es 197, el número de puerto de origen es 80 y el número de puerto de destino es 302. c. Si el segundo segmento llega antes que el primero, ¿cuál es el número de reconocimiento en el ACK correspondiente al primer segmento? R/: Si el segundo segmento llega antes de que el primer segmento, en el acuse de recibo del primer segmento de llegar, “el número de acuse de recibo es 127”, lo que indica que todavía está esperando para los bytes 127 y en adelante. d. Suponga que los dos segmentos enviados por A llegan en orden a B. El primer paquete de reconocimiento se pierde y el segundo llega después de transcurrido el primer intervalo de fin de temporización. Dibuje un diagrama de temporización que muestre estos segmentos y todos los restantes segmentos y paquetes de reconocimiento enviados. (Suponga que no se producen pérdidas de paquetes adicionales.) para cada uno de los segmentos que incluya en su diagrama, especifique el número de secuencia y el número de bytes de datos; para cada uno de los paquetes de reconocimiento que añada, proporcione el número de reconocimiento. R/. 26. Los hosts A y B están directamente conectados mediante un enlace a 100 Mbps. Existe una conexión TCP entre los dos hosts y el host A está transfiriendo al host B una archivo de gran tamaño a través de esta conexión. El host A puede enviar sus datos de la capa de aplicación a su socket TCP a una velocidad tan alta como 120 Mbps pero el host B sólo puede leer los datos almacenados en su buffer de recepción TCP a una velocidad máxima de 60 Mbps. Describa el efecto del control de flujo de TCP. R/: Dado que la capacidad de enlace se encuentra a 100 Mbps, por lo que la tasa de envío de host A puede ser en la mayoría de 100Mbps. Aun así, el host A envía datos en el búfer de recepción más rápido que el host B, por lo tanto puede eliminar datos de la memoria intermedia. El búfer de recepción se llena a un ritmo de aproximadamente 40 Mbps. Cuando el buffer está lleno, las señales Host B al Host A detienen el envío de datos estableciendo Rcv Window = 0. Host A continuación, se detiene el envío hasta que reciba un segmento TCP con Rcv Window> 0. Anfitrión A será de este modo detener y comenzar a enviar en función del Rcv Window valores que recibe del anfitrión B. En promedio, la tasa de largo plazo en la que el host A envía datos al host B como parte de esta relación no es más que 60Mbps repetidamente. 27. En la Sección 3.5.6 se han estudiado las cookies SYN. a. ¿Por qué es necesario que el servidor utilice un número de secuencia inicial especial en SYN ACK? R/: El servidor utiliza el número de secuencia inicial especial (que se obtiene a partir del hash de IP y puertos de origen y de destino) con el fin de defenderse contra ataques SYN Flood. b. Suponga que un atacante sabe que un host objetivo utiliza cookies SYN. ¿Puede el atacante crear conexiones semi - abiertas o completamente abiertas enviando simplemente un paquete ACK al host objetivo? ¿Por qué? R/: No, el atacante no puede crear conexiones medio abiertas o completamente abiertas, simplemente enviando un ACK de paquetes a la meta. Las conexiones medio abiertas no son posibles desde un servidor utilizando los cookies, no mantiene las variables de conexión y tampoco para cualquier conexión antes de establecer conexiones completas. Para el establecimiento de conexiones totalmente abiertas, un atacante debe conocer el número de secuencia inicial especial correspondiente a la (falsa) de direcciones IP de origen del atacante. Este número de secuencia requiere el número "secreto" que utiliza cada servidor. Dado que el atacante no conoce este número secreto, ella no puede adivinar el número de secuencia inicial. c. Suponga que un atacante recopila una gran cantidad de números de secuencia iniciales enviados por el servidor. ¿Puede el atacante hacer que el servidor cree muchas conexiones completamente abiertas enviando paquetes ACK con esos números de secuencia iniciales? ¿Por qué? R/: No, el servidor simplemente puede añadir un sello de tiempo en el cálculo de los números de secuencia inicial y elegir un tiempo de vida de valor para los números de secuencia, y deseche los números de secuencia iniciales caducadas incluso si el atacante quiere reproducirlos. 28. Considere la red mostrada en el escenario 2 de la Sección 3.6.1. Suponga que ambos hosts emisores A y B tienen definidos valores de fin de temporización fijos. a. Demuestre que aumentar el tamaño del buffer finito del router puede llegar a hacer que se reduzca la tasa de transferencia (ƛ out). R/: Si observamos los valores de tiempo de espera, entonces los remitentes pueden tener tiempo de espera antes de tiempo. Por lo tanto, algunos paquetes se retransmiten incluso que no se pierdan. b. Suponga ahora que ambos hosts ajustan dinámicamente su valores de fin de temporización (como lo hace TCP) basándose en el retardo del buffer del router. ¿Incrementar el tamaño del buffer ayudaría a incrementar la tasa de transferencia? ¿Por qué? R/: Si los valores de tiempo de espera se estima (como lo hace TCP), a continuación, aumentar el tamaño del búfer sin duda ayuda a aumentar el rendimiento de ese router. Pero puede haber un problema potencial. Que un retraso podría ser muy grande, similar a lo que se muestra en el escenario 1. 29. Considere el procedimiento de TCP para estimar RTT. Suponga que = 0,1. Sea RTT Muestra 1 la muestra de RTT más reciente, RTT Muestra 2 la siguiente muestra de RTT más reciente, y así sucesivamente. a. Para una conexión TCP determinada, suponga que han sido devueltos cuatro paquetes de reconocimiento con las correspondientes muestras de RTT, RTT Muestra 4, RTT Muestra 3, RTT Muestra 2 y RTT Muestra 1. Exprese RTT Estimado en función de las cuatro muestras de RTT. b. Generalice la fórmula para n muestras de RTT. c. En la fórmula del apartado (b), considere que n tiende a infinito. Explique por qué este procedimiento de cálculo del promedio se conoce como media móvil exponencial. 30. En la Sección 3.5.3, se ha estudiado la estimación de RTT en TCP. ¿Por qué cree que TCP evita medir RTT Muestra para los segmentos retransmitidos? R/: Si TCP mide RTT Muestra para un segmento retransmitido. Supongamos que la fuente envía paquetes P1, el temporizador expira para P1, y la fuente envía entonces P2, una nueva copia del mismo paquete. Supongamos, además, las medidas de origen RTT Muestra para P2 (el paquete retransmitido). Finalmente suponer que poco después de la transmisión de un acuse de recibo para P2 P1 llega. La fuente erróneamente tendrá este reconocimiento como un reconocimiento para P2 y calcular un valor incorrecto de RTT Muestra. 31. ¿Cuál es la relación entre la variable Enviar Base de la Sección 3.5.4 y la variable Ultimo Byte Recibido de la Sección 3.5.5? R/: En cualquier momento dado t, Enviar Base - 1 es el número de secuencia del último byte que el remitente sabe que se ha recibido correctamente, en el receptor. El último byte recibido realmente (correctamente y en orden) en el receptor en el momento t puede ser mayor si existen reconocimientos en el camino. Así Enviar Base-1 ≤ Último Byte Recibido. 32. ¿Cuál es la relación entre la variable Ultimo Byte Recibido de la Sección 3.5.5 y la variable y de la Sección 3.5.4? R/: Cuando en el tiempo t, el remitente recibe un acuse de recibo con el valor de y, el remitente sabe a ciencia cierta que el receptor ha recibido todo a través de y-1. El último byte real recibido (correctamente y en orden) en el receptor en el momento t puede ser mayor si y ≤ Enviar Base o si hay otros reconocimientos en el camino. Así y-1 ≤ Último Byte Recibido. 33. En la Sección 3.5.4 hemos visto que TCP espera hasta que ha recibido tres ACK duplicados antes de realizar una retransmisión rápida. ¿Por qué cree que los diseñadores de TCP han decidido no realizar una retransmisión rápida después de recibir el primer ACK duplicado correspondiente a un segmento? R/: Supongamos que tenemos paquetes n, n +1 y n +2 se envían y se reciben ese paquete n y ACK. Si los paquetes n 1 y n 2 se reordenan a lo largo del trayecto de extremo a extremo (es decir, son recibidos en el orden n 2, n 1), entonces la recepción de paquetes n 2 generará un acuse de recibo por duplicado para n y daría lugar a una retransmisión en virtud de una política de espera sólo para segundo ACK duplicado para la retransmisión. Esperando un ACK duplicado de triple, tiene que ser el caso de que dos paquetes después de paquetes n están correctamente recibidos, mientras que n + 1 no fue recibido. Los diseñadores del esquema ACK duplicado triples probablemente sintieron que la espera de dos paquetes (en lugar de 1) era la disyuntiva entre la derecha que provocó una retransmisión rápida cuando sea necesario, pero no retransmitir prematuramente en la faz de la reordenación de paquetes. 34. Compare GBN, SR y TCP (sin paquetes ACK retardados). Suponga que los valores de fin de temporización de los tres protocolos son los suficientemente grandes como para que 5 segmentos de datos consecutivos y sus correspondientes ACK puedan ser recibidos (si no se producen pérdidas en el canal) por el host receptor (host B) y el host emisor host (host A), respectivamente. Suponga que el host A envía 5 segmentos de datos al host B y que el segundo segmento (enviado desde A) se pierde. Al final, los 5 segmentos de datos han sido recibidos correctamente por el host B. a. ¿Cuántos segmentos ha enviado en total el host A y cuantos ACK ha enviado en total el host B? ¿Cuáles son sus números de secuencia? Responda a esta pregunta para los tres protocolos. b. Si los valores de fin de temporización para los tres protocolos son mucho mayores que 5 RTT, ¿qué protocolo entregará correctamente los cinco segmentos de datos en el menor intervalo de tiempo? 35. En la descripción de TCP de la Figura 3.53, el valor del umbral se define como umbral=Ventana Congestión/2 en varios sitios y el valor de umbral se hace igual a la mitad del tamaño de la ventana cuando se produce un suceso de pérdida. ¿Tiene que ser la velocidad a la que el emisor está transmitiendo cuando se produce un suceso de pérdida aproximadamente igual a Ventana Congestión segmentos por RTT? Explique su respuesta. Si su respuesta es no, ¿puede sugerir una forma diferente en la que se podría fijar el valor de umbral? R/: Sí, la velocidad de envío es siempre más o menos cwnd / RTT 36. Considere la Figura 3.46 (b). Si ƛ in aumenta por encima de R/2, ¿puede ƛ out incrementarse por encima de R/3? Explique su respuesta. Considere ahora la Figura 3.46(c). Si ƛ in aumenta por encima de R/2, ¿puede ƛ out aumentar por encima de R/4 suponiendo que un paquete será reenviado dos veces como media desde el router al receptor? Explique su respuesta. R/: Si la tasa de llegada aumenta más allá de R / 2 en la Figura 3.46 (b), entonces la tasa total de llegada a la cola excede la capacidad de la cola, lo que resulta en el aumento de la pérdida como la tasa de llegada se incrementa. Cuando la tasa de llegada es igual a R / 2, 1 de cada tres paquetes que deja la cola es una retransmisión. Con el aumento de la pérdida, incluso una fracción más grande de los paquetes que salen de la cola será retransmisiones. Dado que la tasa de salida máxima de la cola de una de las sesiones es de R / 2, y dado que un tercio o más habrá transmisiones como la tasa de llegada aumenta, el rendimiento de entregar con éxito los datos no pueden aumentar más allá λout. Siguiendo un razonamiento similar, si la mitad de los paquetes que salen de la cola son retransmisiones, y el porcentaje máximo de paquetes de salida por sesión es de R / 2, entonces el valor máximo de λout es (R / 2) / 2 o R / 4. 37. Considere la Figura 3.58. Suponiendo que TCP Reno es el protocolo que presenta el comportamiento mostrado en la figura, responda a las siguientes preguntas. En todos los casos, deberá proporcionar una breve explicación que justifique su respuesta. a. Identifique los intervalos de tiempo cuando TCP está operando en el modo de arranque lento. R/: Arranque lento TCP está funcionando en los intervalos [1,6] y [23,26] b. Identifique los intervalos de tiempo cuando TCP está operando en el modo de evitación de la congestión. R/: Evitación de congestión TCP está funcionando en los intervalos [6,16] y [17,22] c. Después del ciclo de transmisión 16, ¿se detecta la pérdida de segmento mediante tres ACK duplicados o mediante un fin de temporización? R/: Después de la ronda de transmisión a 16, la pérdida de paquetes es reconocido por un ACK duplicado triples. Si había un tiempo de espera, el tamaño de la ventana de congestión se habría reducido a 1. d. Después del ciclo de transmisión 22, ¿se detecta la pérdida de segmento mediante tres ACK duplicados o mediante un fin de temporización? R/: Después de la ronda de transmisión a 22, pérdida del segmento se detecta debido a tiempo de espera, y por lo tanto el tamaño de la ventana de congestión se establece en 1 e. ¿Cuál es el valor inicial de umbral en el primer ciclo de transmisión? R/: El umbral es inicialmente 32, ya que es en este tamaño de la ventana que arranque lento para y comienza evitación de la congestión. f. ¿Cuál es el valor de umbral transcurridos 18 ciclos de transmisión? R/: El umbral se fija a la mitad del valor de la ventana de congestión cuando se detecta la pérdida de paquetes, la transmisión ronda 16, el tamaño de las ventanas de congestión es de 42. De ahí que el umbral es 21 en la ronda de transmisión 18. g. ¿Cuál es el valor de umbral transcurridos 24 ciclos de transmisión? R/: El umbral se fija a la mitad del valor de la ventana de congestión cuando se detecta la pérdida de paquetes. Cuando se detecta una pérdida durante la transmisión ronda 22, el tamaño de las ventanas de congestión es 26. De ahí que el umbral es 13 en la ronda de transmisión 24. h. ¿Durante cuál ciclo de transmisión se envía el segmento 70? R/: Durante la primera ronda de la transmisión, el paquete 1 es enviado ; paquetes 2-3 se envían en la segunda ronda de la transmisión ; 4-7 paquetes se envían en la tercera, la transmisión de todo el año; 8-15 paquetes se envían en el cuarta ronda de transmisión ; paquetes 16-31 son enviados en la quinta ronda de la transmisión ; 32-63 paquetes se envían en el sexta ronda de transmisión ; paquetes de 64 a 96 son enviados en la séptima ronda de transmisión . Así paquete 70 se envía en la séptima ronda de transmisión. i. Suponiendo que se detecta una pérdida de paquete después del ciclo de transmisión 26 causa de la recepción de un triple ACK duplicado, ¿cuáles serán los valores del tamaño de la ventana de congestión y de umbral? R/: La ventana de congestión y el umbral se establecerán en la mitad del valor actual de la ventana de congestión (8) cuando se produjo la pérdida. Así, los nuevos valores de los umbrales y ventanas serán 4. j. Suponga que se utiliza TCP Tahoe (en lugar de TCP Reno) y que se han recibido triples ACK duplicados en el ciclo de transmisión 16. ¿Cuáles serán los valores del tamaño de la ventana de congestión y de umbral en el ciclo de transmisión 19? R/: El umbral es 21, y el tamaño de la ventana de congestión es 1 k. Suponga otra vez que se utiliza TCP Tahoe y que se produce un suceso de fin de temporización en el ciclo de transmisión 22. ¿Cuántos paquetes han sido enviados entre los ciclos de transmisión 17 a 22, ambos inclusive? R/: Ronda 17, 1 paquete; ronda de 18, 2 paquetes; ronda 19, 4 paquetes; ronda 20, 8 paquetes; ronda 21, 16 paquetes; ronda de 22, 21 paquetes. Así, el número total es 52 38. Utilice la Figura 3.56, que ilustra la convergencia del algoritmo AIMD de TCP. Suponga que en lugar de un decrecimiento multiplicativo, TCP disminuye el tamaño de la ventana en una cantidad constante. ¿Convergería el algoritmo AIAD resultante hacia un algoritmo de cuota equitativa? Justifique su respuesta utilizando un diagrama similar al de la Figura 3.56. 39. En la Sección 3.5.4, hemos explicado que el intervalo de fin de temporización se duplica después de un suceso de fin de temporización. Este mecanismo es una forma de control de congestión. ¿Por qué TCP necesita un mecanismo de control de congestión basado en ventana (como hemos estudiado en la Sección 3.7) además de un mecanismo de duplicación del intervalo de fin de temporización? R/: Si TCP fuera un protocolo de parada y espera, a continuación, la duplicación del tiempo de intervalo sería suficiente como mecanismo de control de congestión. Sin embargo, TCP utiliza revestimiento (y por lo tanto no es un protocolo de parada y espera), lo que permite al remitente que tiene múltiples segmentos no reconocidos pendientes. La duplicación del tiempo de desbordamiento no impide que un TCP remitente del envío de un gran número de paquetes de primera, el tiempo de transmisión en la red, incluso cuando la ruta de extremo a extremo está muy congestionada. Por lo tanto se necesita un mecanismo de control de congestión para detener el flujo de "datos recibidos de la aplicación anterior" cuando hay signos de congestión de la red. 40. El host A está enviando un archivo de gran tamaño al host B a través de una conexión TCP. En esta conexión nunca se pierden paquetes y los temporizadores nunca caducan. La velocidad de transmisión del enlace que conecta el host A con Internet es R bps. Suponga que el proceso del host A es capaz de enviar datos a su socket TCP a una velocidad de S bps, donde S= 10 · R. Suponga también que el buffer de recepción de TCP es lo suficientemente grande como para almacenar el archivo completo y que el buffer emisor sólo puede almacenar un porcentaje del archivo. ¿Qué impide al proceso del host A pasar datos de forma continua a su socket TCP a una velocidad de S bps? ¿El mecanismo de control de flujo de TCP, el mecanismo de control de congestión de TCP o alguna otra cosa? Razone su respuesta. R/: En este problema, no hay peligro de desborde del receptor desde el búfer de recepción del receptor puede almacenar todo el archivo. También, porque no hay pérdida y acuses de recibo se devuelven antes de que expiren los temporizadores, el control de congestión del TCP no estrangula el remitente. Sin embargo, el proceso en el host A no va a pasar de forma continua los datos a la toma de corriente porque el búfer de emisión, se agotará pronto. Una vez que el buffer de envío se llena, el proceso va a pasar datos a una tasa promedio o R << S. 41. Se envía un archivo de gran tamaño de un host a otro a través de una conexión TCP sin pérdidas. a. Suponga que TCP utiliza el algoritmo AIMD para su control de congestión sin fase de arranque lento. Suponiendo que Ventana Congestión aumenta 1 MSS cada vez que se recibe un lote de paquetes ACK y suponiendo que los intervalos RTT son aproximadamente constantes, ¿Cuánto tiempo tarda Ventana Congestión en aumentar de 5 MSS a 11 MSS (si no se producen sucesos de pérdida de paquetes)? R/. Se tarda 1 RTT para aumentar CongWin a 6 MSS; 2 RTT para aumentar a 7 MSS; 3 RTT para aumentar a 8 MSS; 4 RTT para aumentar a 9 MSS; 5 RTT para aumentar a 10 MSS, y 6 RTT para aumentar a 11 MSS. b. ¿Cuál es la tasa de transferencia media (en función de MSS y RTT) para esta conexión hasta llegar al periodo RTT número 6? R/. En el primer RTT 5 MSS fue enviado, en el segundo RTT 6 MSS fue enviado, en el tercer RTT 7 MSS fue enviado, en el cuarto RTT 8 MSS fue enviado, en el quinto RTT, 9 MSS fue enviada, y en el sexto RTT, 10 SMS fue enviado. Por lo tanto, hasta el momento 6 RTT, 5 +6 +7 +8 +9 +10 = 45 MSS fueron enviados (y reconocido). Por lo tanto, podemos decir que el rendimiento medio hasta el momento 6 RTT fue (45 MSS) / (6 RTT) = 7,5 MSS / RTT. 42. Recuerde la descripción macroscópica de la tasa de transferencia de TCP. En el periodo de tiempo que va desde que la velocidad de la conexión varía entre W/(2 · RTT) y W/RTT, sólo se pierde un paquete (justo al final del periodo). a. Demuestre que la tasa de pérdidas (fracción de paquetes perdidos) es igual a: R/. La tasa de pérdida, L, es la relación entre el número de paquetes perdidos durante el número de paquetes enviados. En un ciclo, 1 paquete se pierde. El número de paquetes enviados en un ciclo es ∑ ( ) ( ) ∑ b. Utilice el resultado anterior para demostrar que si una conexión tiene una tasa de pérdidas igual a L, entonces su tasa promedio es aproximadamente igual a R/. Para W largo así o √ 43. Considere una única conexión TCP (Reno) que emplea un enlace a 10Mbps que no almacena en buffer ningún dato. Suponga que este enlace es el único enlace congestionado entre los hosts emisor y receptor. Suponga también que el emisor TCP tiene que enviar al receptor un archivo de gran tamaño y que el buffer de recepción del receptor es mucho más grande que la ventana de congestión. Haremos además las siguientes suposiciones: el tamaño de segmento TCP es de 1.500 bytes, el retardo de propagación de ida y vuelta de esta conexión es igual a 100 milisegundos y esta conexión TCP siempre se encuentra en la fase de evitación de la congestión, es decir, ignoramos la fase de arranque lento. a. ¿Cuál es el tamaño máximo de ventana (en segmentos) que esta conexión TCP puede alcanzar? R/. Sea W denota el tamaño de ventana máximo medido en segmentos. Entonces, W * MSS / RTT = 10 Mbps, como los paquetes serán descartados si el máximo enviando tasa supera la capacidad del enlace. Por lo tanto, tenemos W * 1500 * 8/0.1 = 10 * 10 ^ 6, entonces W es aproximadamente 84 (techo de 83.3) segmentos. b. ¿Cuáles son el tamaño medio de ventana (en segmentos) y la tasa de transferencia media (en bps) de esta conexión TCP? R/. Como tamaño de ventana de congestión varía de W / 2 a W, entonces el tamaño medio de la ventana es 0.75W = 63 segmentos. El rendimiento promedio es de 63 * 1500 * 8/0.1 = 7.56Mbps. c. ¿Cuánto tiempo tarda esta conexión TCP en alcanzar de nuevo su tamaño de ventana máximo después de recuperarse de una pérdida de paquete? R/. 84/2 * 0,1 = 4,2 segundos, como el número de RTT (que esta conexiones TCP necesita con el fin de aumentar su tamaño de la ventana de W / 2 a W) está dada por W / 2. Recordemos que el tamaño de la ventana se incrementa en uno por cada RTT. 44. Continuando con el escenario descrito en el problema anterior, suponga que el enlace a 10Mbps puede almacenar en buffer un número finito de segmentos. Razone por qué para que el enlace esté siempre ocupado enviando datos, deberíamos seleccionar un tamaño de buffer que sea al menos igual al producto de la velocidad del enlace C y el retardo de propagación de ida y vuelta entre el emisor y el receptor. R/. Sea W denotan máximo tamaño de la ventana. Sea S el tamaño del búfer. Para simplificar, supongamos que el remitente TCP envía paquetes de datos en una ronda round, con cada ronda que corresponde a un RTT. Si el tamaño de la ventana alcanza W, entonces se produce una pérdida. A continuación, el emisor recortará su tamaño de la ventana de congestión a la mitad, y espera a que los ACK para W / 2 paquetes pendientes antes de que comience el envío de los segmentos de datos de nuevo. Con el fin de asegurarse de que el vínculo siempre ocupándose de enviar datos, tenemos que dejar que el enlace ocupado enviando los datos en el período W / (2 * C) (este es el intervalo de tiempo en el que el emisor está esperando las confirmaciones para el W / 2 paquetes pendientes). Por lo tanto, S / C debe ser inferior a W / (2 * C), es decir, S> = W / 2. Vamos Tp denotan el retardo de propagación de un solo sentido entre el emisor y el receptor. Cuando el tamaño de la ventana alcanza el mínimo W / 2 y el buffer se vacía, hay que asegurarse de que el enlace está también ocupado enviando datos. Por lo tanto, debemos tener W / 2 / (2TP)> = C, por lo tanto, W / 2> = C * 2TP. Por lo tanto, s> = C * 2TP. 45. Repita el Problema 43, pero sustituyendo el enlace a 10 Mbps por un enlace a 10 Gbps. Observe que en la respuesta al apartado (c) habrá demostrado que se tarda mucho tiempo en que el tamaño de la ventana de congestión alcance su máximo después de recuperarse de una pérdida de paquete. Diseñe una solución que resuelva este problema. R/. A) Sea W denota el tamaño máximo de la ventana. Entonces, W * MSS / RTT = 10 Gbps, ya que los paquetes se eliminará si la tasa máxima enviando alcanza la capacidad del enlace. Por lo tanto, tenemos W * 1500 * 8/0.1 = 10 * 10 ^ 9, entonces W = 83,334 segmentos. B) Como tamaño de ventana de congestión varía de W / 2 a W, entonces el tamaño medio de la ventana es 0.75W = 62.501 segmentos. El rendimiento promedio es de 62501 * 1500 * 8/0.1 = 7.5Gbps. C) 83334/2 * 0,1 / 60 = 69 minutos. Con el fin de acelerar el proceso de aumento de la ventana, podemos aumentar el tamaño de la ventana por un valor mucho más grande, en lugar de aumentar el tamaño de ventana sólo por uno en cada RTT. Se proponen algunos protocolos para resolver este problema, tales como TCP escalable o de alta TCP. 46. Sea T (medido en RTT) el intervalo de tiempo que una conexión TCP tarda en aumentar el tamaño de su ventana de congestión de W/2 a W, donde W es el tamaño máximo de la ventana de congestión. Demuestre que T es una función de la tasa de transferencia media de TCP. R/. Como promedio el rendimiento de TCP B está dada por que, así que sabemos 2 Dado que entre dos pérdidas de paquetes consecutivos, hay paquetes de 1 / L enviado por el remitente TCP, por lo tanto *MSS/B Por lo tanto, nos encontramos con que que es, T es una función de B. 47. Considere un algoritmo AIMD de TCP simplificado en el que el tamaño de la ventana de congestión se mide en número de segmentos, no en bytes. En la fase de incremento aditivo, el tamaño de la ventana de congestión se incrementa en un segmento cada RTT. En la fase de decrecimiento multiplicativo, el tamaño de la ventana de congestión se reduce a la mitad (si el resultado no es un entero, redondee al entero más próximo). Suponga que dos conexiones TCP, C1 y C 2, comparten un enlace congestionado cuya velocidad es de 30 segmentos por segundo. Suponemos que tanto C1 como C2 están en l fase de evitación de la congestión. El intervalo RTT de la conexión C1 es igual a 100 milisegundos y el de la conexión C2 es igual a 200 milisegundos. Suponemos que cuando la velocidad de los datos en el enlace excede la velocidad del enlace, todas las conexiones TCP experimentan pérdidas de segmentos de datos. a. Si en el instante t0 el tamaño de la ventana de congestión de ambas conexiones, C1 y C2, es de 10 segmentos, ¿cuáles serán los tamaños de dichas ventanas de congestión después de transcurridos 2200 milisegundos? R/. La diferencia clave entre C1 y C2 es que RTT de C1 es sólo la mitad de la de C2. Así C1 ajusta su tamaño de la ventana después de 100 mlseg, pero C2 ajusta su tamaño de la ventana después de 200 mlseg. Supongamos que cada vez que un evento de pérdida ocurre, C1 recibe después de 100 ms y C2 recibe después de 200 milisegundos. Además tenemos el siguiente modelo simplificado de TCP. Después de cada RTT, una conexión determina si se debe aumentar el tamaño de la ventana o no. Para C1, calculamos la tasa media total de envío en el enlace en los 100 ms previos. Si esa tasa supera la capacidad del enlace, entonces suponemos que C1 detecta la pérdida y reduce su tamaño de la ventana. Pero para C2, calculamos la tasa media total de enviar el enlace de la 200mseg anterior. Si esa tasa superior a la capacidad de enlace, entonces suponemos que C2 detecta la pérdida y reduce su tamaño de la ventana. Tenga en cuenta que es posible que el promedio de tasa de envío de 100 mseg en la última es mayor que la capacidad del enlace, pero el promedio de tasa de envío en la última de 200 milisegundos es menor que o igual a la capacidad del enlace, a continuación, en este caso, se supone que va a experimentar la pérdida de C1 evento, pero C2 no. En la siguiente tabla se describe la evolución de los tamaños de las ventanas y las tasas de envío basados en los supuestos anteriores. C1 C2 promedio de tasa de Tamaño de ventana (num. De envio de datos Time (msec) segmentos enviados mayores a (segmentos por 100msec) segundo, promedio de tasa de Tamaño de ventana (num. De segmentos enviados mayores a 200msec) =ventana/0.2) 0 10 100 (en [0-100]msec] envio de datos (segmentos por segundo, =ventana/0.2) 10 50 (en [0-100]msec) 5 (disminuye el promedio del 100 tamaño de ventana. tasa de envío total para el enlace 50 (en [100- 50 (en [100- 200]msec] 200]msec) menor a 100 ms 150= 100+50) 2 5 (disminuye el promedio del (disminuye el promedio del tamaño de tamaño de ventana. Tasa de 200 envío total para el enlace 20 menor a 100msec is 100= 50+50) ventana. tasa de envío total para el enlace menor a 200msec is 125=(100+50)/2 + (50+50)/2) 25 1 (disminuye el promedio del 300 tamaño de ventana. Tasa de envío total para el enlace 10 25 menor at 100msec is 45= (20+25) 1 2 (disminuye el promedio del tamaño de 400 (no disminuye mas, el tamaño de la ventana ya es 1) 10 500 2 20 600 3 30 700 1 10 800 2 20 900 3 30 ventana. Tasa de envío total para el enlace menor a 200msec is 40= 10 (20+10)/2 + (25+25)/2) 1 10 3 15 15 1 5 5 2 (disminuye el promedio del tamaño de ventana. Tasa de 1000 envío total para el enlace menor a 100msec is 35= (incrementa el promedio del tamaño de 10 (30+5) ventana. Tasa de envío total para el enlace menor a 200msec is 30= 10 (20+30)/2 + (5+5)/2) 1100 2 20 1200 3 30 1300 1 10 1400 2 20 1500 3 30 1600 1 10 1700 2 20 1800 3 30 1900 1 10 2000 2 20 2100 3 30 2200 1 10 10 3 15 15 1 5 2 10 5 10 3 15 15 1 5 2 10 5 b. ¿Obtendrán estas dos conexiones, a largo plazo, la misma cuota de ancho de banda del enlace congestionado? Explique su respuesta. 48. Continúe con la red descrita en el problema anterior, pero ahora suponga que las dos conexiones TCP, C1 y C2, tienen el mismo intervalo RTT de 100 milisegundos. Suponga que en el instante t0, el tamaño de la ventana de congestión de C1 es de 15 segmentos pero el tamaño de la ventana de congestión de C2 es igual a 10 segmentos. a. ¿Cuáles serán los tamaños de las ventanas de congestión después de transcurridos 2200 milisegundos? R/. Del mismo modo que en el último problema, podemos calcular sus tamaños de ventana en el tiempo en el siguiente tabla. Tanto C1 y C2 tienen el mismo tamaño de la ventana 2 después de 2200msec. C1 C2 Tamaño de Velocidad de Tamaño de Velocidad de venta datos enviados ventana datos enviados (num. De (num. De Tiempo (msec) segmentos segmentos enviados (segmentos enviados (segmentos mayores a 100 por segundo = mayores a 100 por segundo = msec) ventana/0.1) msec) ventana/0.1) 150 (en [0100 (en [00 15 100lmsec] 10 1001 msec) 100 7 70 5 50 200 3 30 2 20 300 1 10 1 10 400 2 20 2 20 500 1 10 1 10 600 2 20 2 20 700 1 10 1 10 800 2 20 2 20 900 1 10 1 10 1000 2 20 2 20 1100 1 10 1 10 1200 2 20 2 20 1300 1 10 1 10 1400 2 20 2 20 1500 1 10 1 10 1600 2 20 2 20 1700 1 10 1 10 1800 2 20 2 20 1900 1 10 1 10 2000 2 20 2 20 2100 1 10 1 10 2200 2 20 2 20 b. . ¿Obtendrán estas dos conexiones, a largo plazo, la misma cuota de ancho de banda del enlace congestionado? R/. Sí, esto se debe a que el algoritmo AIMD de TCP. Y que ambas conexiones tienen el mismo RTT. c. Decimos que dos conexiones están sincronizadas si ambas conexiones alcanzan su tamaño de ventana máximo al mismo tiempo y alcanzan su tamaño mínimo de ventana también al mismo tiempo. ¿Terminarán con el tiempo sincronizándose estas dos conexiones? En caso afirmativo, ¿cuáles son sus tamaños máximos de ventana? R/. Sí, esto se puede ver claramente a partir de la tabla anterior. Su tamaño máximo de la ventana es 2. d. ¿Ayudará esta sincronización a mejorar la tasa de utilización del enlace compartido? ¿Por qué? Esboce alguna idea para evitar esta sincronización. R/. No, esta sincronización no va a ayudar a mejorar la utilización del enlace, ya que estas dos conexiones actúan como un único oscilante conexión entre min y max tamaño de ventana. Por lo tanto, el vínculo no se utiliza plenamente (recordemos que asumir este enlace no tiene ningún buffer). Una forma posible de romper la sincronización es añadir un tampón finito al enlace y colocar aleatoriamente paquetes en el búfer antes del desbordamiento de búfer. Esto causará diferentes conexiones para reducir sus tamaños de ventana en diferentes momentos. Hay muchas técnicas para hacer eso como: AQM (Active Queue Management), RED (Random Early Detect), PI (Proportional and Integral AQM), AVQ (Adaptive Virtual Queue) y REM (Random exponential Marking), etc 49. Veamos una modificación del algoritmo de control de congestión de TCP. En lugar de utilizar un incremento aditivo podemos emplear un incremento multiplicativo. Un emisor TCP incrementa su tamaño de ventana según una constante pequeña positiva a (0 < a < 1) cuando recibe un ACK válido. Halle la relación funcional existente entre la tasa de pérdidas L y el tamaño máximo de la ventana de congestión W. Demuestre que para esta conexión TCP modificada, independientemente de la tasa media de transferencia de TCP, una conexión TCP siempre invierte la misma cantidad de tiempo en incrementar el tamaño de su ventana de congestión de W/2a W. R/. Tenga en cuenta que W representa el tamaño máximo de la ventana. En primer lugar se encuentra el número total de segmentos enviados durante el intervalo en TCP cambia su tamaño de la ventana de W / 2 hasta e incluir W. Esto viene dado por: S = W / 2 + (W / 2) * (1 + α) + (W / 2) * (1 + α)2 + (W / 2) * (1 + α)3 +... + (W / 2) * (1 + α)k Nos encontramos con k = log (1 + α)2, entonces S = W * (2α +1) / (2α). Tasa de pérdida de L está dada por: L = 1 / S = (2α) / (W * (2α 1)). El tiempo que toma TCP para aumentar su tamaño de la ventana de W / 2 a W está dada por: k* RTT = (log (1 + α) 2) * RTT, que es claramente independiente del rendimiento medio de TCP. Tenga en cuenta, el rendimiento promedio de TCP está dado por: B = MSS * S / ((k +1) * RTT) = MSS / (L * (k +1) * RTT). Tenga en cuenta que esto es diferente de TCP que tiene rendimiento promedio: B , donde la raíz cuadrada de L aparece en el denominador. 50. En nuestra exposición sobre el futuro de TCP de la Sección 3.7 hemos destacado que para alcanzar una tasa de transferencia de 10 Gbps, TCP sólo podría tolerar una probabilidad de pérdida de segmentos de 2 · 10^-10 (o lo que es equivalente, un suceso de pérdida por cada 5.000.000.000 segmentos). Indique de dónde se obtienen los valores 2 · 10^-10 y 1 por cada 5.000.000 para los valores de RTT y MSS dados en la Sección 3.7. Si TCP tuviera que dar soporte a una conexión a 100 Gbps, ¿qué tasa de pérdidas sería tolerable? R/. Supongamos que los paquetes de 1500 bytes y un tiempo de ida y vuelta de 100 ms. Desde el rendimiento de TCP la ecuación es: y tenemos 51. En nuestra exposición sobre el control de congestión de TCP de la Sección 3.7, implícitamente hemos supuesto que el emisor TCP siempre tiene datos que enviar. Consideremos ahora el caso en que el emisor TCP envía una gran cantidad de datos y luego en el instante t 1 se queda inactiva (puesto que no tiene más datos que enviar). TCP permanece inactivo durante un periodo de tiempo relativamente largo y en el instante t2 quiere enviar más datos. ¿Cuáles son las ventajas y las desventajas de que TCP tengan que utilizar los valores de Ventana Congestión y umbral de t 1 cuando comienza a enviar datos en el instante t2? ¿Qué alternativa recomendaría? ¿Por qué? R/. Una ventaja de utilizar los valores anteriores de cwnd y ssthresh en el instante t2 es que TCP haría un comienzo lento para no tener que ir a través de la congestión de la rampa hasta el rendimiento del valor obtenido en el instante t1. Una desventaja del uso de estos valores es que pueden ser poco exactos. En particular, si la ruta de acceso se ha vuelto congestionada entre t1 y t2, el remitente envía el valor del segmento en una gran ventana de un camino ya (más) congestionado. 52. En este problema vamos a investigar si UDP o TCP proporcionan un cierto grado de autenticación del punto terminal. a. Considere un servidor que recibe una solicitud dentro de un paquete UDP y responde a la misma dentro de un paquete UDP (por ejemplo, como en el caso de un servidor DNS). Si un cliente con la dirección IP X suplanta su dirección con la dirección Y, ¿A dónde enviará el servidor su respuesta? R/. El servidor enviará su respuesta a Y. b. Suponga que un servidor recibe un SYN con la dirección IP de origen Y, y después de responder con un SYNACK, recibe un ACK con la dirección IP de origen Y y con el número de reconocimiento correcto. Suponiendo que el servidor elige un número de secuencia inicial aleatorio y que no existe ningún atacante interpuesto (man-in-the-middle), ¿puede el servidor estar seguro de que el cliente está en la dirección Y (y no en alguna otra dirección X que esté intentando suplantar a Y)? R/. El servidor puede estar seguro de que el cliente es de hecho Y. Si fuera algún otro domicilio erróneo Y, el SYNACK habría sido enviado a la dirección Y, y el TCP en ese anfitrión no enviaría el segmento TCP ACK de vuelta. Incluso si el atacante enviara debidamente un segmento TCP ACK, no sabría la secuencia correcta del número de servidor (ya que el servidor utiliza números de secuencia iniciales aleatorias.) 53. En este problema, vamos a considerar el retardo introducido por la fase de arranque lento de TCP. Se tiene un cliente y un servidor web directamente conectados mediante un enlace a velocidad R. Suponga que el cliente desea extraer un objeto cuyo tamaño es exactamente igual a 15 S, donde S es el tamaño máximo de segmento (MSS). Sea RTT el tiempo de transmisión de ida y vuelta entre el cliente y el servidor (suponemos que es constante). Ignorando las cabeceras del protocolo, determine el tiempo necesario para recuperar el objeto (incluyendo el tiempo de establecimiento de la conexión TCP) si: a. 4 S/R > S/R + RTT > 2S/R R/. RTT RTT + + S / R + RTT + S / R + RTT + 12S / R = 4RTT + 14 b. S/R + RTT > 4 S/R R/. RTT + RTT RTT + S / R + S / R + RTT + S / R + + + RTT 8S / R = 5RTT +11 S/R c. S/R > RTT. R/. RTT RTT + + S / R + RTT + 14 S / R = 3 RTT + 15 S / R