Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Ayudantía 5 Redes de Computadores (Stgo, 2011-1)

Gonzalo Correa
November 13, 2011

Ayudantía 5 Redes de Computadores (Stgo, 2011-1)

Ayudantía 5 del ramo Redes de Computadores dictado el primer semestre del 2011 en el campus Santiago San Joaquín de la USM

Gonzalo Correa

November 13, 2011
Tweet

More Decks by Gonzalo Correa

Other Decks in Education

Transcript

  1. Temas • Capa de transporte • Multiplexing y Demultiplexing •

    UDP • Principios para transferencia de datos confiable ILI-256, Redes de Computadores 2
  2. Capa de Transporte • La capa de transporte provee el

    servicio de comunicación entre dos aplicaciones en dos end-systems • Como hemos visto antes, se apoya en la capa inferior (de red) para proveer sus servicios. – Capa de red provee entrega de mensajes (delivery) entre dos end-systems 4 ILI-256, Redes de Computadores
  3. Capa de Transporte • Más específicamente, capa de transporte provee

    comunicación lógica entre dos aplicaciones corriendo en diferentes hosts, es decir, las aplicaciones “creen” estar conectadas directamente. – Capa de red provee comunicación lógica entre hosts • Recordar que los protocolos de transporte son implementados en los end-systems. ILI-256, Redes de Computadores 5
  4. Capa de Transporte • El proceso de envío de mensajes

    es así – Capa de aplicación pasa mensaje a capa de transporte – Capa de transporte transforma mensaje en paquetes de esta capa: segmentos • En este proceso, se pueden “romper” los mensajes en chunks, agregando a cada uno los headers de la capa de transporte que sean necesarios – Segmento es pasado a capa de red, encapsulando el paquete en un paquete de red: datagrama – Y continúa… (veremos lo que sigue para el C2) ILI-256, Redes de Computadores 6
  5. Capa de Transporte • Dos casas, una en el norte

    y otra en el sur • En cada una, viven 5 personas que se escriben todas las semanas. Cada persona escriba una carta a las otras 5 personas de la otra casa (25 cartas semanales en cada casa!) – Matías B. vive en el norte, y es el encargado de recoger todas las cartas y pasárselas al cartero una vez a la semana, además de recibir y distribuir las cartas que llegan desde el sur entre las personas de la casa. – Hugo C. vive en el sur, y cumple el mismo rol que Matías B. ILI-256, Redes de Computadores 7
  6. Capa de Transporte • Mensajes de aplicación: Cartas • Procesos

    de aplicaciones: Personas en las casas • Hosts: Casas • Protocolo de transporte: Hugo C. y Matías B. • Protocolo de red: Correos de Chile (incluyendo a los carteros!) • Que pasa si cambiamos a Hugo y Matías? ILI-256, Redes de Computadores 8
  7. Capa de Transporte • Aquí veremos TCP y UDP •

    TCP – Orientado a la conexión – Asegura transmisión confiable de datos • UDP – No necesita conexión previa – No asegura transmisión confiable de datos • Algunas literaturas (como los RFC) tratan a los paquetes TCP como segmentos, y a los UDP como datagramas – Para evitar confusión, todos los paquetes de la capa de transporte serán segmentos ILI-256, Redes de Computadores 9
  8. Relación entre capa de transporte y capa de red •

    En Internet, en la capa de red tenemos el protocolo IP (Internet Protocol) • Como vimos, provee conexión lógica entre hosts • Tiene un modelo de servicio “best-effort delivery service” – Hará lo mejor posible por entregar los datagramas, pero si no puede, no seguirá intentando • IP ofrece un servicio no confiable (como UDP) • Recordar que cada host tiene una dirección IP ILI-256, Redes de Computadores 10
  9. Relación entre capa de transporte y capa de red •

    La principal “pega” de TCP y UDP es extender la conexión lógica entre hosts, a conexiones lógicas entre aplicaciones en los end-systems – Esto se llama transport-layer multiplexing y demultiplexing (más detalles, adelante ) • Además, ambos proveen mecanismos de detección de errores • Estos dos son los únicos servicios que entrega UDP! ILI-256, Redes de Computadores 11
  10. Relación entre capa de transporte y capa de red •

    TCP por su lado, agrega entrega de datos confiable (reliable data transfer) utilizando – Control de flujo – Números de secuencia – ACKs (Acknowledgments) – Temporizadores • Esto asegura que los datos llegan correctamente y en orden • Además, ofrece control de congestión (para el bien de todos) – Esto se hace regulando el rate al que se envían mensajes los hosts ILI-256, Redes de Computadores 12
  11. Multiplexing y Demultiplexing • Veremos esto en el ámbito de

    la capa de transporte – Es decir, el proceso de extender la comunicación host a host entregado por la capa de transporte, a comunicación proceso a proceso entre aplicaciones corriendo en los hosts ILI-256, Redes de Computadores 14
  12. Multiplexing y Demultiplexing • En el host de destino, la

    capa de transporte recibe segmentos desde la capa de red • La capa de transporte se debe encargar de entregar los mensajes en los segmentos, a los procesos de aplicación correspondientes, que se encuentran corriendo en el host ILI-256, Redes de Computadores 15
  13. Multiplexing y Demultiplexing • En verdad, la capa de transporte

    entrega los mensajes a el/los sockets asociados a los procesos • Esto se llama Demultiplexing – Entregar los datos de un segmento al socket correcto • Dato Importante: Un proceso puede tener uno o más sockets asociados ILI-256, Redes de Computadores 16
  14. Multiplexing y Demultiplexing • La tarea de tomar datos desde

    varios sockets, encapsularlos (agregando headers que serán usados al realizar demultiplexing) para crear segmentos y pasarlos a la capa de red se llama Multiplexing • Ejemplo de las casas ILI-256, Redes de Computadores 17
  15. Multiplexing y Demultiplexing • Para realizar estas tareas, se necesita

    que – Cada socket tenga un identificador único – Cada segmento tenga una manera de indicar a que socket debe ser entregado • Esto se logra con los números de puerto – Números de 16 bits – De 0 a 65535 – Del 0 al 1023, son los “números de puertos bien conocidos” (well-know port numbers), reservados a protocolos de aplicación “bien conocidos” (well-know application protocols) como HTTP, FTP, etc. ILI-256, Redes de Computadores 18
  16. Multiplexing y Demultiplexing • En los casos en que no

    se necesita conexión previa (UDP), los sockets están identificados por un par (IP Destino, Puerto Destino) • En los casos de protocolos orientados a conexión (TCP), los sockets están identificados por tuplas (IP Fuente, Puerto Fuente, IP Destino, Puerto Destino) ILI-256, Redes de Computadores 20
  17. • UDP tiene las características que hemos repetido variadas veces

    – No orientado a conexión – No asegura entrega confiable de datos • UDP agrega solo dos funciones a IP – Multiplexing/Demultiplexing – Chequeos de error (simples) ILI-256, Redes de Computadores 22
  18. Porque usar UDP? • Control sobre que datos se envían,

    y cuando – Apenas uno elige enviar datos, esto son realmente enviados. • No necesita establecimiento de conexión – A diferencia de TCP, UDP no necesita handshake previo al envío de datos, lo que reduce el delay • No tiene estados de conexión – TCP necesita mantener datos sobre la conexión para implementar el sistema de entrega confiable • Paquetes con overhead más pequeño – TCP tiene headers de 20 bytes, UDP tiene 8 bytes ILI-256, Redes de Computadores 23
  19. UDP • Lo que UDP no implementa, puede ser implementado

    en la capa de aplicación • Con esto, las aplicaciones pueden “obtener la torta, y comérsela”, es decir, pueden tener transmisión confiable de datos sin depender de las restricciones de TCP ILI-256, Redes de Computadores 24
  20. Checksum en UDP • El checksum (suma de comprobación) se

    realiza para ver si los datos en un segmento vienen corruptos • Para realizar el checksum, se toma la representación binaria de todo el segmento UDP, incluyendo los datos, en palabras de 16 bits. • Se toman las palabras de 16 bits, y se suman todas, haciendo carry en caso de que haya overflow del bit más significativo. Finalmente, se realiza complemento-1 del resultado, lo que nos da el checksum ILI-256, Redes de Computadores 26
  21. Checksum en UDP • Si el checksum va lleno de

    ceros, se asume que no se realizo checksum (en UDP es opcional) • Aún así, realizar checksum es necesario para asegurar que los datos del segmento no han sufrido cambios • Notar que los protocolos de las capas inferiores (Ethernet) ofrecen chequeo de errores ILI-256, Redes de Computadores 28
  22. PRINCIPIOS DE TRANSFERENCIA CONFIABLE DE DATOS Como crear un protocolo

    confiable como TCP ILI-256, Redes de Computadores 29
  23. Principios de transferencia confiable de datos • Veremos modelos de

    cómo enviar datos de manera confiable, tal que lleguen sin corrupción y en orden. • Este modelo es el que ofrece TCP, implementándolo como un servicio abstracto. – Mas generalmente, un protocolo de transferencia confiable de datos debe implementar este servicio abstracto • Implementar este servicio es complejo, debido a que las capas por debajo del protocolo con transferencia confiable de datos, pueden no ser confiables (TCP sobre IP) ILI-256, Redes de Computadores 30
  24. Principios de transferencia confiable de datos • Este tipo de

    problemas se aplica no solo a la capa de transporte, si no que a las redes de computadores en general • Para mantener esta generalización, hablaremos de paquetes en vez de segmentos de la capa de transporte • Usaremos las sgtes. siglas – RDT: Reliable Data Transfer – UDT: Unreliable Data Transfer ILI-256, Redes de Computadores 31
  25. RDT 2.0 • RDT sobre canal con errores en bits

    • Consideremos un caso real – Al hablar por teléfono, confirmamos que escuchamos o pedimos que nos repitan las cosas • Positive y Negative Acknowledgments • En redes de computadores, los protocolos RDT basados en este comportamiento (retransmitir en caso de error) se denominan protocolos ARQ (Automatic Repeat reQuest) ILI-256, Redes de Computadores 34
  26. RDT 2.0 • En sí, se necesitan tres características adicionales

    en un protocolo ARQ para manejar errores de bits – Detección de errores • Considera tanto detección como corrección de errores, lo que agrega bits. Estos bits son añadidos al campo de checksum de un paquete RDT 2.0 – Feedback del receptor • Necesitamos saber si los datos llegaron correctamente. Para ello, el feedback será entregado por paquetes de respuesta, con un flag para indicar ACK o NAK – Retransmisión • Un paquete será retransmitido en caso de que haya llegado con error ILI-256, Redes de Computadores 35
  27. RDT 2.0 • Como el que envía no puede enviar

    nuevos datos hasta que recibe ACK, los protocolos que son de este estilo se llaman protocolos stop-and-wait • Problema: ACKs o NAKs corruptos. Podríamos manejarlo – Respondiendo a cada ACK/NAK con otro ACK/NAK – Agregando más bits al checksum para comprobar y corregir errores – Reenviar el paquete ILI-256, Redes de Computadores 37
  28. RDT 2.1 • La mejor solución es numerar en secuencia

    los paquetes – Con esto, podemos retransmitir y receptor sabrá si paquete es nuevo o retransmitido – En este caso no necesitamos numerar los ACKs/NAKs, porque no hay perdida de paquetes, por lo que el mensaje recibido, corresponde al último paquete enviado – En casos en que canal tiene perdida de paquetes, ACKs/NAKs deben agregar el número del paquete al que corresponden (como en TCP) ILI-256, Redes de Computadores 38
  29. RDT 3.0 • RDT sobre canal con pérdidas y errores

    de bits • Ahora, como se pierden paquetes, hay que preocuparse de – Como detectar la pérdida – Que hacer cuando hay pérdida • Para solucionarlo, debemos usar las herramientas del RDT 2.2 – Checksum – Números de secuencia – ACKs – Retransmisiones ILI-256, Redes de Computadores 42
  30. RDT 3.0 • Agregamos como herramienta, un contador de tiempo

    (countdown timer) • El emisor debe ser capaz de – Iniciar el timer al enviar un paquete (cualquiera) – Responder a una interrupción del timer – Detener el timer • A los protocolos que ocupan secuencias de 0 y 1 para enumerar los paquetes, además de todas las demás cosas de RDT 3.0, se les llaman “alternating-bit protocols” ILI-256, Redes de Computadores 43
  31. Capitulo 3 V/F • Considere un servidor HTTP usando conexiones

    persistentes. Suponga que el servidor crea un proceso separado para cada cliente que se conecta al servidor. Entonces, cada uno de estos nuevos procesos tendrá un número de puerto distinto en el servidor. – F • El host A está enviando al host B un archivo muy grande sobre una conexión TCP. Asuma que el host B no tiene datos para enviarle al host A. El host B no enviará ACKs al host A, ya que el host B no tiene datos en donde “acoplar” los ACKs. – F ILI-256, Redes de Computadores 48
  32. Capitulo 3 V/F • Cuando un segmento TCP llega a

    un host, el socket al cuál será dirigido depende solo de la IP y el puerto de destino – F • Cuando un segmento UDP llega a un host, el socket al cuál será dirigido depende solo del puerto de destino – V • UDP tiene las siguientes características: estado de la conexión en el servidor, y hand-shake de tres pasos. – F ILI-256, Redes de Computadores 49
  33. Capitulo 3 V/F • Los protocolos de tipo stop-and-wait son

    más efectivos cuando hay una gran distancia entre fuente y destino, y la velocidad de transmisión es alta. – F ILI-256, Redes de Computadores 50