Redes (IS20) Ingeniería Técnica en Informática de Sistemas http://www.icc.uji.es ÍNDICE CAPÍTULO 8: El nivel de transporte en Internet 1. Introducción 2. Protocolo UDP 3. Protocolo TCP Curso 2002-2003 - Redes (IS20) -Capítulo 8 1 1.Introducción • Capa de transporte: proporciona transporte de datos confiable y económico entre máquina independiente de la red física. 1. Introducción – Servicio eficiente, confiable y económico a usuarios (p.ejemplo procesos de capa de aplicación • A nivel IP se identifica: – El host que recibirá el datagrama (nº IP) – Pero no se identifica la aplicación concreta que lo recibe • Ahora necesitamos: – Identificar los destinos a nivel de las funciones que implementan, sin conocer el proceso concreto, que ejecuta la aplicación • Se definen direcciones de transporte en las que los procesos pueden estar a la escucha de solicitudes de conexión – Se proporciona una serie de destinos abstractos (identificados por un número) llamados “puertos de protocolos” – Estos puertos están asociados a servicios o aplicaciones concretas Curso 2002-2003 - Redes (IS20) -Capítulo 8 2 1 1.Introducción • Para obtener un servicio de una máquina necesitamos un par (puntos de acceso al servicio de transporte TSAP) 1. Introducción – dirección IP de la máquina – número de puerto de protocolo asociado al servicio • En la capa de transporte cada mensaje lleva: – Número de puerto de destino y número de puerto fuente de la máquina fuente (para permitir replica) • En internet hay servicios de transporte: – Orientados a conexión (protocolo TCP): con tres fases, establecimiento, transferencia y liberación de conexión – Sin conexión (protocolo UDP) • Ejemplo de primitivas de transporte: socket – Socket (crea punto terminal de comunicación), bind (conecta dirección local a un socket), listen (cola de aceptación de conexiones), accept (bloquea hasta intento de conexión), connect (intento de establecer conexión), send y receiver (envía y recibir datos), close (liberar conexión) Curso 2002-2003 - Redes (IS20) -Capítulo 8 3 2. Protocolo UDP 2. Protocolo UDP 2.1. Introducción 2.2. Formato del mensaje UDP 2.3. Particularidades Curso 2002-2003 - Redes (IS20) -Capítulo 8 4 2 2.1. Introducción • UDP (User Datagram Protocol, RFC 768): Utiliza el mecanismo de puertos para distinguir entre servicios: – El puerto destino: 2. Protocolo UDP • El área de datos se envía a un servicio concreto en la capa de aplicación – El puerto fuente: • El servicio del destino puede responder a la aplicación que genero el mensaje • Proporciona el mismo tipo de envío que IP: – Inseguro y No orientado a conexión • • • • No usa sistemas de acuse de recibo No ordena los mensajes que llegan No controla el flujo de información entre fuente y destino Los mensajes pueden perderse, duplicarse, llegar desordenados • Como consecuencia de la inseguridad: – Los programas de aplicación son responsables de manejar estos problemas Curso 2002-2003 - Redes (IS20) -Capítulo 8 5 2.2. Formato del mensaje UDP 2. Protocolo UDP • Cada mensaje UDP consta de encabezado y área de datos • Formato del encabezado (8 bytes) – Puerto fuente UDP • Número de puerto asociado a la aplicación que envía el mensaje – Puerto destino UDP • Número de puerto para identificar el servicio (la aplicación) destino – Longitud del mensaje UDP • Número de bytes incluyendo el encabezado • Mínimo 8 bytes – UDP cheksum (opcional) • Suma de comprobación del contenido del mensaje UDP. Cero sino se usa. Curso 2002-2003 - Redes (IS20) -Capítulo 8 6 3 2.3. Particularidades • Encapsulación: 2. Protocolo UDP – Dentro del área de datos del datagrama IP: • UDP proporciona multiplexación y demultiplexación a través de mecanismo de puertos: – Varias conexiones de transporte usan la misma conexión de red • Transmisión de datos desde aplicaciones: desde puerto los pasan a IP • Recibe datagramas IP y los destina a la aplicación en función del puerto. – Chequea si el número de puerto coincide con uno en uso – Si no existe: » ICMP envía el mensaje puerto inalcanzable ydescarta el datagrama Curso 2002-2003 - Redes (IS20) -Capítulo 8 7 2. Protocolo UDP ¿Cómo se asignan los números de puertos? • Una autoridad central asigna Puertos a Aplicaciones o Servicios (Puertos “Bien conocidos”) • O Mediante asignación dinámica: – Puertos no conocidos globalmente: • Un programa necesita un puerto y el software de red se lo asigna • Queremos conocer el número de puerto que está utilizando una aplicación y hacemos una petición ¿Qué puerto está usando el servicio? • En redes TCP/IP se utiliza un mecanismo híbrido entre las dos soluciones Curso 2002-2003 - Redes (IS20) -Capítulo 8 8 4 2. Protocolo UDP • Ejemplo de puertos UDP actualmente asignados Curso 2002-2003 - Redes (IS20) -Capítulo 8 9 3. Protocolo TCP 3. TCP 3.1. Modelo de servicio TCP 3.2. Protocolo TCP 3.3. Formato de segmento 3.4. Gestión de conexión Curso 2002-2003 - Redes (IS20) -Capítulo 8 10 5 3.1. Modelo de servicio TCP 3. Protocolo TCP • TCP (Transmision control protocol, RFC 793, 1122, 1323): – Proporciona transferencia segura y orientada a conexión – La entidad de transporte TCP del emisor entrega datos a la entidad TCP en receptor • Entidad de transporte (parte del software), protocolo (conjunto de reglas) – IP no ofrece seguridad de entrega de datagrama, TCP debe garantizar mecanismos para una transmisión segura • El emisor conserva una copia de cada paquete que envía • Espera un mensaje de confirmación de recepción (acknowledgement) • Inicia un timer – Si sobrepasa un tiempo antes de confirmación: retransmite • Detecta duplicados con un número de secuencia para cada paquete Curso 2002-2003 - Redes (IS20) -Capítulo 8 11 3.1. Modelo de servicio TCP 3. Protocolo TCP • Transmisor y receptor crean puntos terminales (TSAP de 48 bits) sockets • TCP utiliza números de puertos de protocolo: – Para identificar la aplicación destino (igual que UDP) – Usa el concepto de “punto final” (endpoint) de una conexión: • Punto final: – Es la combinación del número IP de la máquina y del puerto: (128.9.0.32 , 1184) y (128.10.2.3 , 25) • Una máquina puede tener varias conexiones que usen el mismo puerto (Un socket destino puede aceptar varias conexiones): (128.9.0.32 , 25) y (128.10.2.3 , 25) Curso 2002-2003 - Redes (IS20) -Capítulo 8 12 6 • Números de puertos TCP: – Se usa un esquema de puertos asignados (“bien conocidos”) y números de puertos libres – Los números de puerto inferiores a 256 se llaman puertos bien conocidos (well-known ports) y se reservan para servicios estándar (RFC 1700) 3. Protocolo TCP • Ejemplo: conexión puerto 21 para transferir archivos (FTP), puerto 23 para establecer conexión remota (TELNET) Curso 2002-2003 - Redes (IS20) -Capítulo 8 13 3.2. El protocolo TCP • Las entidades emisora y receptora intercambian datos en forma de segmentos: 3. Protocolo TCP – Cabecera de 20 bytes+bytes opcionales+bytes de datos • Tamaño del segmento limitado por: – (Cabecera TCP+ datos) inferior a 65535 bytes que caben en datos IP – El segmento debe caber en la MTU (unidad de transferencia máxima de la red) sino se debe fragmentar. • El protocolo básico usado por entidades TCP es el protocolo de la ventana corrediza o deslizante. – – – – Permite la transmisión de varios paquetes antes de recibir confirmación Paquetes numerados (número de secuencia) El transmisor inicia temporizador por cada paquete que envía (timer) El receptor devuelve paquetes en las que puede haber datos y/o acuse de recibo (siguiente número de secuencia que espera recibir) – Si expira temporizador sin recibir ACK se retransmite Curso 2002-2003 - Redes (IS20) -Capítulo 8 14 7 3. Protocolo TCP • Tenemos una ventana de tamaño determinado y podemos transmitir todos los paquetes dentro de ella • Cuando se recibe la confirmación del paquete 1 y se desplaza la ventana • De esta forma los paquetes se dividen en: – Dentro de la ventana: enviados y no confirmados (un timer por paquete) – A la derecha de la ventana: enviados y confirmados – A la izquierda de la ventana: no enviados Curso 2002-2003 - Redes (IS20) -Capítulo 8 15 • Matizaciones sobre las ventanas deslizantes en TCP 3. Protocolo TCP – TCP ve la secuencia de datos a transmitir como un conjunto ordenado de bytes (numerados secuencialmente) – La divide en segmentos para transmitirla y viajan en un datagrama IP – Usa el mecanismo de ventana deslizante para: • Proporcionar una transmisión segura • Control de flujo – Ventana deslizante TCP • Bytes a la derecha (1,2): enviados y confirmados • Bytes 3-7: enviados y no confirmados • Bytes 8-11: no han sido enviados, pueden enviarse – El receptor tiene un buffer para recomponer la secuencia de datos – Una conexión TCP es “full-duplex” las dos partes tienen ventanas • Control de flujo: – Se permite que el tamaño de la ventana varíe dinámicamente – Con cada confirmación se envía el tamaño de la ventana • Indica los bytes adicionales que el receptor está preparado para recibir • El emisor varía su ventana en función de esas peticiones Curso 2002-2003 - Redes (IS20) -Capítulo 8 16 8 3.3. Formato del segmento TCP 3. Protocolo TCP 20 bytes • Existen segmentos sin datos: acuses y mensajes de control • Puerto Fuente y Destino: Contiene los puertos fuente y destino de TCP (puertos locales de conexión) • Número de Secuencia: Posición en la secuencia de bytes del emisor que corresponde al primer dato del área de datos del segmento • Número de confirmación: Número de bytes que el receptor espera recibir a continuación. Se realiza así porque: • Los segmentos que se envían tienen longitud variable • Los segmentos retransmitidos pueden tener mayor número de datos que original,etc Curso 2002-2003 - Redes (IS20) -Capítulo 8 17 3. Protocolo TCP • Longitud del encabezado: Longitud encabezado en palabras de 32 bits • Bit de código (6 bits): Especifica propósito y contenido del segmento – URG a 1 si está en uso el puntero urgente (sirve para indicar desplazamiento en bytes a partir del número actual de secuencia en que se encuentra datos urgentes, p.ej. Mensaje de interrupción) – ACK a 1 para indicar número de acuse de recibo válido, a 0 el segmento no contiene acuse (se ignora el campo) – PSH a 1 se indica a receptor entregar los datos a la aplicación a su llegada (no ponerlos en buffer) – RST sirve para reestablecer una conexión o para rechazar un segmento, etc – SYN a 1 se usa para establecer conexiones – FIN a 1 se usa para liberar conexiones Curso 2002-2003 - Redes (IS20) -Capítulo 8 18 9 3. Protocolo TCP • Ventana: Número de datos que el receptor está dispuesto a admitir • Suma de comprobación: para control de errores • Opciones: – Ejemplo: host especifica carga útil TCP máxima que está dispuesto a aceptar. Curso 2002-2003 - Redes (IS20) -Capítulo 8 19 3.4. Gestión de conexión • Establecimiento de una conexión TCP: Se utiliza un protocolo de 3. Protocolo TCP tipo Handsake (acuerdo de 3 vías) – El servidor espera conexión entrante: • Listen, accept SYN=1, ACK=1 o RST para rechazar conexión – Cliente ejecuta connect con IP y puerto de conexión • SYN=1, ACK=0 – Una vez establecida la conexión los datos pueden circular en ambas direcciones (no hay maestro y esclavo) – En el protocolo se acuerdan los números de secuencia iniciales de ambas partes Curso 2002-2003 - Redes (IS20) -Capítulo 8 20 10 3.4. Gestión de conexión • Cierre de una conexión TCP: Se utiliza también un protocolo de tipo 3. Protocolo TCP Handsake – Las conexiones TCP son “full-duplex” por lo que hay que cerrar la conexión en ambos sentidos • Al enviar FIN en un sentido se desconecta • En el otro sentido puede seguir habiendo flujo de datos entrante pero nadie escucha • Cuando ambos sentidos desconectados FIN de conexión Curso 2002-2003 - Redes (IS20) -Capítulo 8 21 3. Protocolo TCP • Resumen de una conexión TCP: Curso 2002-2003 - Redes (IS20) -Capítulo 8 22 11