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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
– 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
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
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
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
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
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
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
• 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
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
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
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
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
(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
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
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