El nivel de transporte Jesús Moreno León Alberto Molina Coballes Redes de Área Local Septiembre 2009 Nivel de transporte Gobierna el acceso múltiple a la red de los diversos procesos de la máquina que quieran usarla Puede proporcionar distintos tipos de servicio: Fiable, no fiable Realiza comunicación extremo a extremo, sin intermediarios Gestiona puertos en máquinas multiproceso Realiza control de flujo extremo a extremo Cualquier proceso puede enviar datos a cualquier proceso en cualquier máquina Puertos En una máquina multiproceso el nivel de transporte debe preocuparse de saber a qué proceso va destinada la información que acaba de llegar por la red Por ello, los procesos que usan la red lo hacen a través de puertos Cada puerto del Nivel de Transporte proporciona a una aplicación un punto de acceso a la red de comunicaciones, con lo que ésta puede dialogar con otra aplicación situada en un puerto de una máquina remota Puertos Los puertos se identifican por un número de 16 bits Los puertos TCP y UDP se manejan por separado. El puerto 7 TCP y el puerto 7 UDP son distintos Los puertos menores de 1024 (puertos privilegiados) están asignados y reservados universalmente a aplicaciones de red conocidas Puertos Un servidor www es un proceso esperando peticiones en el puerto 80 de una máquina. Un navegador desde otra máquina hará peticiones al puerto 80 del servidor, y escuchará las respuestas en un puerto suyo no privilegiado Puertos Netstat (network statistics) es una herramienta de línea de comandos que muestra un listado de las conexiones activas de un ordenador, tanto entrantes como salientes. UDP: User Datagram Protocol UDP es un protocolo sencillo que implementa un nivel de transporte orientado a datagramas NO Fiable NO Orientado a conexión Los datagramas UDP se encapsulan dentro de la parte de datos de un datagrama IP Una aplicación que use UDP para transmitir datos producirá exactamente un datagrama UDP cada vez que quiera enviar datos. Datagramas UDP El checksum es opcional, aunque se recomienda que siempre se uilice Servicio ofrecido por UDP El servicio ofrecido por UDP sólo aumenta el ofrecido por IP en: Número de puerto Checksum opcional Por ello el servicio ofrecido es NO fiable: Pueden perderse datagramas Pueden duplicarse datagramas Pueden desordenarse datagramas Servicio ofrecido por UDP Es un protocolo mucho más ligero que TCP, y para aplicaciones de red que se ejecuten dentro de una subred (no hay encaminadores) puede compensar. TCP Transmission Control Protocol Es un protocolo de nivel de Transporte Ofrece un servicio Orientado a Conexión y Fiable Unidad de datos: segmento Se encapsula dentro de IP Ofrece servicio de puertos (como UDP) Servicio orientado a la conexión La transmisión de datos TCP presenta las siguientes fases: Establecimiento de la conexión Transmisión de datos Liberación de la transmisión Ambos extremos pueden transmitir y recibir datos simultáneamente Servicio fiable En TCP/IP éste es el primer nivel en el que se proporciona fiabilidad Objeto: recuperarse de pérdidas y desorden producido por IP Idea básica: Los segmentos con datos llevan un número de secuencia El receptor de los datos debe mandar asentimientos (ACK) Time Out y ventana El receptor reordena segmentos y descarta duplicados Segmentos TCP Números de secuencia Cada segmento con datos lleva un número de secuencia El número de secuencia numera bytes y NO segmentos Al establecerse la comunicación se elige un número de secuencia inicial Números de asentimiento (ACK) El receptor tiene que asentir los datos que le llegan correctamente No es necesario enviar un asentimiento para cada segmento con datos que se recibe El número de asentimiento indica el número de secuencia que se espera recibir, asintiendo de esta forma hasta el byte anterior incluido No hay rechazo selectivo Asentimientos a recucas (piggybacking) Ventana deslizante Se usa un protocolo de ventana para coordinar el envío de segmentos y asentimientos El tamaño de la ventana permite hacer control de flujo extremo a extremo Establecimiento de la conexion Es necesario ponerse de acuerdo en el número de secuencia inicial de los dos sentidos de la transmisión (triple apretón de manos, three-way handshake) Liberación de la conexión Es necesario cerrar cada sentido de la conexión Plazos para asentimiento Cuando se envía un segmento se arranca un temporizador para esperar su asentimiento. ¿Qué plazo le ponemos? Algoritmo adaptativo Para cada segmento se calcula el Tiempo de Ronda (Round Trip Time RTT) Normalmente se usa un plazo de 2 veces el RTT Entrega de datos a la aplicación Cuando llega un segmento con la bandera PSH se está indicando al receptor que pase esos datos a la aplicación Se pasan también todos los datos asentidos que el receptor tuviera pendientes de pasar a la aplicación Ejemplo de conexión