Curso de Redes Computadores 1 Tema 3 Introducción a la capa de transporte. Interfaz de programación en redes. Sockets. Prof. Ricardo Gonzalez Redes de Computadores Tema 3 1
1 Modelo Cliente-Servidor Dos procesos en dos sistemas finales (distintos) se comunican intercambiando mensajes a través de una red de computadores. Modelo cliente-servidor: Cliente envía mensajes al servidor Servidor recibe los mensajes, procesa la respuesta y la envía Se definen dos tipos de servidores: Concurrente: normalmente utilizado con TCP. 1. Esperar una demanda de un cliente 2. Iniciar un nuevo servidor para atender la demanda recibida. En función de las características del sistema operativo: crear un nuevo proceso, thread o tarea. 3. Ir a 1 Iterativo: normalmente utilizado con UDP. 1. Esperar una demanda de un cliente 2. Procesar la demanda del cliente 3. Enviar una respuesta de vuelta al cliente que ha hecho la demanda 4. Ir a 1 Modelo peer to peer (P2P): ambos extremos tienen funcionalidades de cliente y servidor. Prof. Ricardo Gonzalez Redes de Computadores Tema 3 2
Entrega de datos extremo a extremo Prof. Ricardo Gonzalez Redes de Computadores Tema 3 3
Puertos TCP y UDP identifican aplicaciones usando números de puertos de 16 bits. Los servidores se conocen normalmente por un número de puerto fijo y conocido (puertos 1-1023) Por ejemplo: ftp puerto 21, telnet puerto 23, SMTP puerto 25. Los clientes no se preocupan del puerto que se les asigna. Son siempre asignaciones efímeras: sólo se mantienen mientras el cliente demanda el servicio. Números utilizados: 1024-5000 En sistemas UNIX existe el concepto de puertos reservados. No deben entrar en conflicto con los fijos. Se reservan entre 1-1023. Prof. Ricardo Gonzalez Redes de Computadores Tema 3 4
Puerto ( dirección, puerto ) Compùtador X Compùtador Z Proceso C Proceso E Proceso G Proceso F Proceso H Proceso D Proceso I Prof. Ricardo Gonzalez Redes de Computadores Tema 3 5
Sockets Los pasos, en general para comunicarse vía sockets son: 1. El servidor crea un socket cuyo nombre conocen otros procesos. Abre una conexión a un puerto bien conocido. Un puerto es un concepto lógico para saber a qué proceso dirigir la petición del cliente. 2. El cliente crea un socket sin nombre y pide una conexión al socket del servidor (con el puerto bien conocido). 3. El servidor acepta la conexión. 4. El cliente y el servidor intercambian información. 1) Cliente Servidor X 2) Cliente Conectar a X X Cliente Servidor X Cliente Servidor 3) 4) Prof. Ricardo Gonzalez Redes de Computadores Tema 3 6
Puertos La dirección de capa 4 identifica el servicio (tipo de aplicación) que se asigna al proceso de aplicación en el host. Un direccionamiento utilizando el número de proceso (process ID) no es posible: Los procesos generados por el sistema operativo no son identificados facilmente por el usuario normal Cada proceso puede ofrecer varios servicios Varios procesos pueden ofrecer el mismo servicio No hay ninguna garantia que cada vez que un programa se invoque, el sistema le asigne el mismo pid. Etc. Se introduce el concepto de un punto terminal de comunicación abstracto: el puerto Prof. Ricardo Gonzalez Redes de Computadores Tema 3 7
Características de un puerto Un servicio se asigna a exactamente un puerto Se puede tener la ilusión de que varias conexiones pueden utilizar el mismo puerto simultáneamente Acceso al puerto de forma asíncrona y síncrona Cada puerto tiene asociado un buffer Se ofrece un interface de programación (application programming interface - API) para el uso de los sockets. Prof. Ricardo Gonzalez Redes de Computadores Tema 3 8
Varias conexiones pueden utilizar el mismo puerto simultáneamente 1) Cliente Servidor X 2) Cliente X Servidor 3) Cliente Servidor X 4) Cliente Servidor X Prof. Ricardo Gonzalez Redes de Computadores Tema 3 9
Números de puertos Usados para direccionamiento a nivel transporte 16 bits para números puertos, entonces se pueden establecer hasta 65,535 puertos diferentes El Rango de validez del puerto depende del host Juntos: el id de la red, el id del host y el número de puerto constituyen un punto terminal de comunicación (socket) Protocolo comunicación al estilo sistema telefónico (orientado conexión) Prof. Ricardo Gonzalez Redes de Computadores Tema 3 10
Puertos Ejemplos de números de puerto pre-asignados: 20 y 21 FTP (TCP) 23 TELNET (TCP) 25 SMTP (TCP) 53 DNS (UDP)* *TCP para intercambio entre servidores DNS 69 TFTP (UDP) 80 HTTP (TCP) 110 POP3 (TCP) 161 SNMP (UDP) 179 BGP (TCP) 443 HTTPS (TCP) 520 RIP (UDP) Prof. Ricardo Gonzalez Redes de Computadores Tema 3 11
Los procesos se comunican a través de la red Los procesos envían/reciben mensajes hacia/desde su socket Un socket es análogo a una puerta El proceso que envía empuja el mensaje hacia afuera El proceso que envía asume que existe una infraestructura de transporte al otro lado de la puerta que llevará el mensaje hasta el socket del proceso que lo recibirá host o servidor proceso socket TCP con buffers, variables Controlado por el desarrollador controlado por OS Internet host o servidor proceso socket TCP con buffers, variables Prof. Ricardo Gonzalez Redes de Computadores Tema 4 12
UDP Protocolo de transporte de Internet tipo datagrama Características: Transporte tipo datagrama Sin garantías de entrega Sin retransmisión automática en caso de errores de bit Sin control de flujo Sin control de congestión Sin garantía de orden Permite mensajes de Multicast Prof. Ricardo Gonzalez Redes de Computadores Tema 3 13
TCP (RFC 793) Representa un Canal de comunicación similar a circuito virtual entre hosts Características: Flujo de bytes ordenado secuencial Orientado a conexión: Establecimiento de conexión Control de error y flujo para cada conexión Comunicación full-duplex Direccionamiento TCP: Conexión está definida por Direcciones IP de origen y destino Números de puertos de origen y destino Identificador de protocolo TCP Prof. Ricardo Gonzalez Redes de Computadores Tema 3 14
API Prof. Ricardo Gonzalez Redes de Computadores Tema 3 15
Lecturas Adicionales Tanenbaum. Redes de Computadores. Capítulo 6 Seciones 6.1, 6.1.1, 6.1.2, 6.1.3 y 6.1.4 Prof. Ricardo Gonzalez Redes de Computadores Tema 3 16