FUNDAMENTOS DE REDES CONCEPTOS DE LA CAPA DE TRANSPORTE Dolly Gómez Santacruz dollygos@univalle.edu.co
CONCEPTOS DE LA CAPA DE TRANSPORTE MOTIVACIÓN Capas 1 Bits sobre cables Capa 2 Tramas en una red local Capa 3 Datagramas o paquetes Capas inferiores Detalles del mover datos de un lugar a otro Infraestructura de la red
CONCEPTOS DE LA CAPA DE TRANSPORTE MOTIVACIÓN El destino final de los mensajes no es sólo un equipo, sino un programa de aplicación que se ejecuta en el sistema operativo de este. La capa de transporte es la encargada de brindarle a la capa de aplicación la calidad de servicio (QoS) requerida No sólo basta con tener la dirección del host, sino que se necesita identificar de alguna manera el proceso al cual se quiere enviar un mensaje.
CONCEPTOS DE LA CAPA DE TRANSPORTE MOTIVACIÓN 7. Aplicación 6.Presentación 5. Sesión 4.Transporte Usuarios del servicio de transporte SERVICIO DE TRANSPORTE 3. Red 2. Enlace de Datos Proveedora de servicio de transporte 1. Física
CONCEPTOS DE LA CAPA DE TRANSPORTE Punto medio entre las capas inferiores (más enfocadas al hardware de la red) y las capas superiores (capas light o capas de software) Ofrece servicios eficientes y confiables al nivel superior (aplicación misma) La capa de transporte es la primera extremo a extremo
CONCEPTOS DE LA CAPA DE TRANSPORTE SERVICIOS Permitir que un par de procesos en los host fuente y destino puedan tener una conversación Segmentación de los datos de aplicaciones de la capa superior Establecimiento de operaciones de extremo a extremo, establecer los mecanismos que permitan transportar los mensajes entre equipos, para lo que usa dos protocolos fundamentalmente: TCP y UDP Envío de segmentos de un host final a otro final Asegurar la fiabilidad de los datos Proporcionar control de flujo
CONCEPTOS DE LA CAPA DE TRANSPORTE ELEMENTOS Control de flujo Direccionamiento: A nivel de puertos Multiplexación: consiste en que más de una aplicación pueda utilizar los servicios del protocolo TCP. Secuenciamiento Conexiones: establecimiento de una conexión y liberación de una conexión Control de errores: recuperación de fallas, fiabilidad
CONTROL DE FLUJO Durante el envío de los segmentos, es posible asegurar la integridad de los mismos. El Control de flujo evita el problema causado por un host que está inundando a otro destino con más paquetes de los que el destino puede procesar. (Y así evitar que se produzca una pérdida de datos) Ventana Deslizante Inicio Lento Los servicios de la capa de transporte permiten solicitar un transporte fiable entre destinos. Asegurar que los segmentos serán confirmados. Proporcionar retransmisión, si es necesario. Devolver los segmentos a su secuencia correcta en el destino. Proporcionar control e impedir la congestión.
CONTROL DE FLUJO VENTANA DESLIZANTE La ventana deslizante es un método para controlar la cantidad de información transferida de extremo a extremo. El tamaño de la ventana indica la cantidad de segmentos que pueden ser enviados sin confirmación. Suponiendo una ventana de tamaño m, el origen puede enviar los segmento [n...(n+m-1)] antes de recibir una confirmación. Si se recibe una confirmación para el segmento n (ACK n+1), el origen desliza los límites de la ventana a [n+1...(n+m)] y puede enviar el segmento (n+m).
CONTROL DE FLUJO INICIO LENTO El algoritmo de Inicio Lento Slow-start intenta aprovechar al máximo el canal de comunicación y supone que la pérdida de segmentos sea debido a una posible congestión de la red. Se incrementa el tamaño de la ventana hasta que no se reciban confirmaciones para algunos segmentos. Se asume que la congestión en la red es la causa de esto y se reduce el tamaño de la ventana para evitar la congestión. El algoritmo inicia con una crecimiento exponencial de la ventana de congestión (n = n * 2) hasta alcanzar un límite predefinido y continua aumentando el tamaño de la ventana de manera lineal (n = n + 1). Cuando las confirmaciones no se reciben, el tamaño de la ventana es reducido a la mitad y el algoritmo vuelve a empezar.
DIRECCIONAMIENTO Cada proceso que se desea comunicar con otro se identifica en la pila de protocolos TCP/IP con uno o más puertos. Un puerto es un número de 16 bits, empleado por un protocolo host a host para identificar a que protocolo del nivel superior o programa de aplicación se deben entregar los mensajes recibidos. Puertos bien conocidos. Ocupan número de puerto comprendidos en el rango de 0 a 1023. Los puertos con números en el rango de 1024 a 65535 no los controla IANA y en la mayor parte de los sistemas los pueden usar los programas de usuario.
MULTIPLEXACIÓN Varios procesos accediendo la red Varias conexiones al mismo destino o destinos diferentes Varias conexiones del mismo origen, a diferentes servicios, hosts WEB WEB SMTP FTP DNS HOST1 HOST2 HOST3
MULTIPLEXACIÓN Tanto TCP como UDP usan números de puerto (o socket) para enviar información a las capas superiores. Los números de puerto se usan para mantener un seguimiento de las distintas conversaciones que atraviesan la red al mismo tiempo, (RFC1700). A las conversaciones que no involucran aplicaciones con números de puerto conocidos se les asignan números de puerto que se seleccionan al azar a partir de un intervalo específico. Estos números de puerto se usan como direcciones origen y destino en el segmento TCP.
MULTIPLEXACIÓN Direccionamiento capa 4 Puertos: Noción para identificar el servicio o aplicación al origen y destino de cada conexión. Bien conocidos 0-1023. Asignados por la IANA, usados generalmente para servicios básicos (procesos del sistema) Registrados 1024-49151. Usados por aplicaciones como puertos origen y registrados para aplicaciones populares Dinámicos/Privados 49152-65535. También pueden ser usados por aplicaciones como puertos orígen. Socket Dir IP + Protocolo + Número de Puerto http://www.iana.org/assignments/port-numbers
MULTIPLEXACIÓN Tanto TCP como UDP usan números de puerto para enviar información a las capas superiores. A las conversaciones que no involucran aplicaciones con números de puerto conocidos se les asignan números de puerto que se seleccionan al azar a partir de un intervalo específico Estos números de puerto se usan como parte de las direcciones origen y destino en el segmento TCP.
MULTIPLEXACIÓN
MULTIPLEXACIÓN
SECUENCIAMIENTO Se utilizan números de secuencia distintos para cada sentido de la comunicación. El número inicial (aleatorio) para cada sentido se acuerda al establecer la comunicación. Se debe confirmar la recepción exitosa de cada segmento (o grupo de ellos).
CONCEPTOS DE LA CAPA DE TRANSPORTE MANEJO DE CONEXIÓNES 1.Establecimiento de la conexión (Negociación en 3 pasos) 2.Transferencia de datos 3.Finalización de la conexión (Negociación en 4 pasos)
CONCEPTOS DE LA CAPA DE TRANSPORTE ESTABLECIMIENTO DE UNA CONEXIÓN La aplicación servidor debe abrir un socket para aceptar conexiones. Se dice que estas conexiones están escuchando y que esta es una inicialización pasiva de la conexión. 3-way Handshake (protocolo de acuerdo a 3 vías) 1. Inicialización activa de la conexión, envío de segmento SYN 2. Repuesta del segmento SYN original con un segmento SYN/ACK 3. Confirmación de inicialización, envio de segmento ACK
CONCEPTOS DE LA CAPA DE TRANSPORTE ESTABLECIMIENTO DE UNA CONEXIÓN 1 El servidor escucha por la conexión 2 3 4 Paquete de solicitud de conexión Paquete de confirmación de conexión Paquete de reconocimiento
CONCEPTOS DE LA CAPA DE TRANSPORTE FINALIZACIÓN DE LA CONEXIÓN Se usa una negociación en cuatro pasos (four-way handshake), terminando la conexión desde cada lado independientemente. Cuando uno de los dos extremos de la conexión desea parar su "mitad" de conexión transmite un paquete FIN, que el otro extremo asentirá con un ACK. Por tanto, una desconexión típica requiere un par de segmentos FIN y ACK desde cada lado de la conexión. Una conexión puede estar "medio abierta" en el caso de que uno de los lados la finalice pero el otro no.
CONCEPTOS DE LA CAPA DE TRANSPORTE FINALIZACIÓN DE LA CONEXIÓN
CONTROL DE ERRORES TCP debe poder recuperar los datos que se corrompan, pierdan, dupliquen o se entreguen desordenados por el sistema de comunicación del entorno de internet. Uso de número de secuencia para cada octeto transmitido, y exigiendo un acuse de recibo (ACK) del módulo de TCP receptor. Tiempo de expiración fijado, al cabo del que los datos se retransmiten. En el receptor, se utilizan los números de secuencia para ordenar y eliminar los segmentos duplicados. La corrupción de datos se trata añadiendo: n Suma de comprobación n Códigos de redundancia cíclica (CRC)
PROTOCOLOS DE TRANSPORTE Los protocolos de transporte se parecen a los protocolos de enlace. Ambos manejan el control de errores, el control de flujo, la secuencia de paquetes, etc. En el nivel de transporte, se necesita una manera para especificar la dirección del destino.
Protocolos de Transporte Variedad de protocolos de transporte TCP/IP : TCP y UDP TCP: Proporciona servicios orientados a la conexión UDP: Proporciona servicios orientados a la no conexión. La unidad de envío o recepción de datos del protocolo TCP se conoce con el nombre de segmento TCP y la unidad de envío o recepción de datos del protocolo UDP es conocido como datagrama UDP.
PROTOCOLOS DE TRANSPORTE: TCP Protocolo de transporte que provee servicios orientados a la conexión Garantiza que los datos son entregados al destino sin errores y en el mismo orden en que se transmitieron Divide los mensajes salientes en segmentos Reensambla los mensajes en la estación destino Vuelve a enviar lo que no se ha recibido Reensambla los mensajes a partir de segmentos entrantes
Protocolos de transporte: TCP Entrega libre de errores Aseguramiento de la entrega: Compromiso de TCP de entregar el mensaje al destino final, o avisar al emisor que hubo un problema en la entrega del mismo. Entrega ordenada de los datos: Evita duplicidad en los datos Conexión full duplex: Punto de vista de procesos de una aplicación Operación extremo a extremo
Protocolos de transporte: TCP Formato segmento TCP
Protocolos de transporte: TCP Formato segmento TCP Puerto Origen (16): Número de puerto origen. Puerto Destino (16): Número de puerto destino (servicio usado). Número de secuencia (32): Número de secuencia del primer byte de datos del segmento. Si el bit de control SYN es 1, el número de secuencia es el inicial(n) y el primer byte de datos será el n+1. Número de reconocimiento (32): Valor del siguiente número de secuencia que se espera recibir, si el bit de control ACK es 1.
Protocolos de transporte: TCP Desplazamiento de datos (4): Número de palabras de 32 bits de la cabecera TCP. Indica dónde empiezan los datos. (Mínimo valor = 5) Reservado (6): Bits reservados para su uso futuro (cero). FLAGS Campo de control URG: Hace significativo el campo "Puntero urgente" ACK: Hace significativo el campo "Número de acuse de recibo" PSH (1): Función "Push": fuerza a TCP a enviar un segmento y que éste sea entregado de inmediato a la aplicación en el otro extremo RST (1): Resetea la conexión. SYN (1): Sincroniza los números de secuencia. FIN (1): No hay más datos del emisor.
Protocolos de transporte: TCP Ventana (16): Número de bytes de datos que el receptor esta dispuesto a recibir. Usado en segmentos ACK. Suma de comprobación o Checksum (24): Suma de comprobación de errores del segmento. Se utiliza una cabecera que también incluye las direcciones IP origen y destino. Puntero de Urgencia (8): Apunta al primer octeto de datos que sigue a los datos importantes. Sólo es significativo cuando el bit de control URG es 1. Opciones: Formadas por un único byte o por multiples bytes, Ej. Máximo tamaño del segmento, Marca de tiempo. Padding: Bytes todos a cero para rellenar la cabecera TCP a una longitud total que sea un múltiplo de 32 bits.
PROTOCOLOS DE TRANSPORTE: UDP Protocolo de transporte que provee servicios orientados a la no conexión Basado en el intercambio simple de datagramas (sin establecer previamente una conexión) No hay acuse de recibo (ACK) ni control de flujo Usado en protocolos donde el establecimiento de la conexión es in-necesario (DHCP, DNS, TFTP, SNMP) y en transmisión de audio y video en tiempo real.
Protocolos de transporte: UDP Formato segmento UDP
Protocolos de transporte: UDP Puerto origen: Puerto del proceso que envía el datagrama. Es el puerto al que se deben dirigir las respuestas. Puerto destino: Puerto destino en el host de destino. Longitud: Longitud (en bytes) del datagrama UDP, incluyendo la cabecera. Checksum: Campo opcional consistente en el complemento a uno de 16 bits obtenidos con información del encabezado UDP y del encabezado IP.