Protocolos de Transporte TCP, UDP Comunicación de datos Realizado por: Antonio Russoniello 11-01-16. V1.0 1 Comunicación de Datos UDP (User Datagram Protocol) • Protocolo de transporte (capa 4) • No orientado a conexión • No hay acuse de recibo • Se puede tener pérdidas, duplicados y los datagramas pueden llegar desordenados • Implementación sencilla • Ligero, lo que hace posible su implementación en dispositivos de poco recursos • UDP multiplexa datos de las aplicaciones • Puede efectuar (esto es opcional) una comprobación de errores, pero no realiza: • – Control de flujo – Control de congestión – Retransmisión de datos perdidos – Conexión/desconexión RFC 768 Los paquetes de datos que envía UDP se denominan mensajes o datagramas UDP. 11-01-16. V1.0 2 Comunicación de Datos UDP (User Datagram Protocol) Multiplexación: La multiplexación se realiza mediante el puerto, una especie de dirección local que indica el proceso del nivel de aplicación, origen o destino del paquete. Los puertos son enteros de 16 bits, su valor por lo tanto está comprendido entre 0 y 65535 La combinación de una dirección IP y un puerto identifica un “socket” (origen o destino de los datagramas UDP) Ejemplo: socket Dirección IP 147.156.135.22:1038 puerto 11-01-16. V1.0 3 Comunicación de Datos UDP (User Datagram Protocol) Rango de Puertos: • del 0 al 1023: puertos bien conocidos, reservados para servidores de protocolos estándar (ejemplo HTTP -> 80). Reservados para el sistema operativo. • del 1024 al 49151: puertos registrados. Pueden ser utilizados por cualquier aplicación. • del 49152 al 65535: puertos dinámicos o privados. Normalmente se asignan en forma dinámica a las aplicaciones de clientes al iniciarse la conexión. Son usados en conexiones peer to peer (P2P) En el nivel de transporte se utiliza un modelo conocido como cliente - servidor. 11-01-16. V1.0 4 Comunicación de Datos UDP (User Datagram Protocol) • Length: logitud cabecera + carga útil • Checksum: es opcional, si está en cero no se calcula 11-01-16. V1.0 5 Comunicación de Datos UDP (User Datagram Protocol) Envío de datagramas UDP: Cada vez que la aplicación envía información el host lo manda en un datagrama IP al socket de destino especificado. Si el datagrama supera el MTU de la trama la capa de red (IP) realiza la fragmentación. Recepción de datagrama UDP: • Si el datagrama llega fragmentado la capa IP del receptor lo re-ensambla • La capa de IP lo pasa a la capa superior de transporte UDP y de allí la aplicación (el programa) lo recoge. 11-01-16. V1.0 6 Comunicación de Datos TCP (Transmission Control Protocol) Características: • Protocolo de capa 4 (transporte) • Orientado a conexión • Los bytes son recibidos en orden, en caso de pérdida hay retransmisión, no hay duplicados. • Realiza control de flujo mediante ventanas deslizantes • Diseñado para ofrecer un transporte fiable • Los paquetes de TCP se llaman “segmentos” • RFC 793 Funciones de TCP: • Multiplexar a nivel de aplicación (puertos) • Controlar errores, retransmisión de segmentos perdidos ó erróneos. Elimina duplicados. • Establecer y terminar conexiones • Gestionar los buffers y ejercer control de flujo de forma eficiente • Gestionar el intercambio de datos de forma eficiente en la red • Efectuar control de congestión 11-01-16. V1.0 7 Comunicación de Datos TCP (Transmission Control Protocol) 11-01-16. V1.0 8 Comunicación de Datos TCP (Transmission Control Protocol) • Sequence number: si la bandera S está en1, el campo sequence number (SN) contiene el número de secuencia inicial (ISN), de lo contrario representa el número de secuencia del primer byte de la carga útil. • Acknowledgment Number: cuando la bandera A está en 1 el campo acknowledgment es significativo. Un valor de este campo en “n” significa que se ha recibido bien todos los bytes hasta “n-1” y que se está esperando los bytes del “n” en adelante. • Data offset: se multiplica su valor por 4 para obtener la longitud de la cabecera en bytes (mínimo valor 5) • URG (Urgent): cuando la bandera U está en 1 significa que el campo Urgent es significativo. • ACK: cuando la bandera ACK está en 1, significa que el campo acknowledgment number es significativo. • PUSH: cuando la bandera PUSH está en 1 indica petición `para procesar los datos acumulados o recibidos hasta ahora. • REST (Rest): cuando la bandera REST está en 1, se indica que se debe terminar de forma brusca la comunicación • SYN (Synchronization): cuando la bandera SYN está en 1 significa que el campo sequence number contiene el número de secuencia inicial. • FIN (Finish): utilizado para indicar que no hay más datos que enviar. EL que envía F no puede enviar más pero si puede seguir recibiendo hasta que el remoto envíe su respectivo F. • Window: tamaño de la ventana en bytes • Checksum: toma en cuenta pseudo cabecera, cabecera y carga útil. 11-01-16. V1.0 9 Comunicación de Datos TCP (Transmission Control Protocol) 3-Way Handshake: mecanismo de conexión utilizado por TCP, basado en el intercambio de 3 mensajes: • Primer segmento: la bandera SYN está en 1. El cliente envía su ISN (Initial Sequence Number) al servidor • Segundo segmento: las banderas SYN + ACK están en e-1. El servidor envía su ISN al cliente. Además, el servidor confirma al cliente que ya conoce su ISN • Tercer Segmento: la bandera ACK está en 1. El cliente confirma al servidor que ya conoce su ISN. En este segmento, el cliente está autorizado a enviar carga útil. Server Client SYN = sent ISN = 100 * SYN = received ISN = 300 * Established *banderas encendidas * Established 11-01-16. V1.0 10