SISTEMAS DE COMUNICACIONES DE DATOS

Documentos relacionados
Estructuras y funciones de programación de sockets.

Migrando aplicaciones a IPv6

Introducción de Sockets en C.

Introducción a la programación con sockets en C

Unidad 3 Direccionamiento IP (Subnetting)

Protocolos de red. IP: Internet Protocol

Es un conjunto de dispositivos interconectados entre si que comparten recursos y/o servicios como video, voz y datos a través de medios guiados, no

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

Arquitectura de Redes y Comunicaciones

Univ. de Concepción del Uruguay Facultad de Ciencias Agrarias Ingeniería Agrónoma

Redes (IS20) Ingeniería Técnica en Informática de Sistemas. CAPÍTULO 8: El nivel de transporte en Internet

Redes de Datos 1er parcial año 2010

Introducción a las Redes de Computadoras

1 adpto. de Teoría de la Señal, Comunicaciones e Ingeniería Telemática E.T.S.I. Telecomunicación Universidad de Valladolid

Comunicación entre Procesos y Sockets

Profesor Santiago Roberto Zunino. Página 1

COMUNICACIÓN ENTRE PROCESOS SOCKETS

DIRECCIONAMIENTO DE RED. Direcciones IPv4

Sockets (UDP) Tema 2.- Nivel de aplicación en Internet

Capitulo 2: Enrutamiento Estático

Dispositivos de Red Hub Switch

Capa de TRANSPORTE. Ing. José Martín Calixto Cely Original: Galo Valencia P.

Clase 26 Soluciones al problema de direccionamiento Tema 7.- Ampliación de temas

La vida en un mundo centrado en la red

Conceptos de redes. LAN (Local Area Network) WAN (Wide Area Network)

Sockets (TCP) Tema 2.- Nivel de aplicación en Internet

8 Conjunto de protocolos TCP/IP y direccionamiento IP

DIRECCIONAMIENTO IPv4

REDES INFORMATICAS: Protocolo IP

CAPITULO 2 COMUNICACION ATRAVES DE LA RED

Examen de Introducción a las Redes de Computadoras y Comunicación de Datos (ref: sirc0707.doc) 31 de julio de 2007

Protocolo IP. Campos del paquete IP:

Práctica 3 de Redes de Área Local Cliente y Servidor de ficheros concurrente

Mecanismo(s) de intercambio de información entre 2 ó más computadores conectados entre sí o a través de otros.

Tema 4.1: - TRANSPORTE-

EXAMEN SEGUNDA EVALUACION

Diseño de aplicaciones distribuidas ÍNDICE


Dirección General de Educación Superior Tecnológica INSTITUTO TECNOLÓGICO DE SALINA CRUZ

TELECOMUNICACIONES Y REDES

TELEPROCESO Y SISTEMAS DISTRIBUIDOS

Direcciones IP y máscaras de red

Efectos de los dispositivos de Capa 2 sobre el flujo de datos Segmentación de la LAN Ethernet

TEMA 25: El Protocolo TCP/IP.

UNIVERSIDAD DE ORIENTE GUÍA TEÓRICA NO #1

Mecanismos IPC: sockets

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

Direccionamiento IPv4

Fundamentos de Ethernet. Ing. Camilo Zapata Universidad de Antioquia

Adaptación de aplicaciones a IPv6

3.1 Introducción a Wireshark

Índice general. Tipos de servicio de transporte. Por qué un nivel de transporte? TEMA 6 Funciones de los niveles superiores. Miguel A.

TEMA 14. REDES DE ÁREA LOCAL

Router Teldat. Proxy ARP

Qué es un socket? Dominios de comunicación. Tipos de sockets en el dominio AF_INET. Sockets Stream. Sockets Datagram. Sockets Raw

Dirección IP - Características

Nivel de Transporte en Internet

7. VLSM. IST La Recoleta

Direcciones IP IMPLANTACIÓN DE SISTEMAS OPERATIVOS 1º ASIR. En redes IPv4.

Redes conmutadas y de área local

MASSACHUSETTS INSTITUTE OF TECHNOLOGY SLOAN SCHOOL OF MANAGEMENT. Factores tecnológicos, organizativos y estratégicos

Introducción al enrutamiento y envío de paquetes

INSTITUTO TECNOLÓGICO DE SALINA CRUZ. Fundamentos De Redes. Semestre Agosto-Diciembre Reporte De Lectura

Repercusión de IPv6 en la Administración General del Estado

Semestre I Aspectos básicos de Networking

Protocolo PPP PPP Protocolo de Internet de línea serie (SLIP)

Introducción a las Redes: Qué necesito saber sobre la red de datos de mi cliente?

CONVERSIÓN DE UN NÚMERO EN BINARIO A DECIMAL Y VICEVERSA

Objetivos. Comprender el funcionamiento de Internet y los protocolos que la hacen funcionar

- ENetwork Chapter 9 - CCNA Exploration: Network Fundamentals (Versión 4.0)

CAPAS DEL MODELO OSI (dispositivos de interconexión)

Unidad Didáctica Redes 4º ESO

Examen 1 de febrero de 2014 (ref: sirc1402.odt)

Toplogías: Tipo Bus (barra), tipo Star (estrella), tipo Ring (anillo), tipo Starshaped Ring (Anillo estrellado): Forma general.

(decimal) (hexadecimal) 80.0A.02.1E (binario)

ARQUITECTURAS CLIENTE/SERVIDOR

Práctica de laboratorio: Uso de Wireshark para examinar una captura de UDP y DNS

Introducción a redes Ing. Aníbal Coto Cortés

Estructuras y funciones de programación de sockets.

Cuaderno de notas del OBSERVATORIO ENVENENAMIENTO ARP

INTRODUCCION. Ing. Camilo Zapata Universidad de Antioquia

Ing. Ma. Eugenia Macías Ríos. Administración de Redes

AUTORES: OBREGON CARLA ROMERO MARIA MARACAIBO FEBRERO 2012

5 Cuales de las siguientes opciones son formas de medición del ancho de banda comúnmente utilizadas? (Elija tres opciones).

Práctica de laboratorio 5.5.1: Examen del gateway de un dispositivo

POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA. Práctica 3. Conexión de PC utilizando Cable Cruzado y Cable Recto

Definiciones preliminares

CSIR2121. Administración de Redes I

1.- Convierte las direcciones: y a formato binario e identifica su clase.

Capítulo 6 Introducción a TCP/IP

Router Teldat. Proxy ARP

Ayudantía Nro.3 Redes De Datos CIT Profesor: Cristian Tala

Qué es Internet? Cómo funciona Internet?

6.4 CONMUTADOR o SWITCH

Arquitecturas cliente/servidor

Bloque IV: El nivel de red. Tema 10: Enrutamiento IP básico

Aspectos Básicos de Networking

01/10/ Conjunto de protocolos TCP/IP. Contenido. a. TCP/IP Internet OSI. a. TCP/IP Internet OSI. b. Nivel de red Protocolo IP

UD2.notebook. May 07, Tema 2. Redes. Sonia Lafuente Martínez

Universidad Central de Bayamón Colegio de Desarrollo Empresarial & Tecnología

Transcripción:

SISTEMAS DE COMUNICACIONES DE DATOS Técnicas Digitales III Ing. Gustavo Nudelman 2012

Fundamentos de Networking Subtitulo o nombre del capitulo Capitulo 1 Universidad Tecnológica Nacional

Definiciones preliminares Entorno distribuido: Conjunto de recursos distribuidos en diversas ubicaciones físicas que pueden intercambiar información y conforman un sistema con un propósito Nodo: Punto identificable donde se encuentra un recurso del entorno distribuido. Link: conexión directa entre dos nodos Red : Conjunto de nodos interconectados a través de un medio sin capacidad de enrutar la información Intertnet/Intranet: Conjunto de redes interconectadas por dispositivos inteligentes capaces de enrrutar la información a la red correcta para que alcance al nodo destino

Red LAN y WAN LAN 3 (203.157.16.0) LAN 1 (211.40.8.0) LAN 2 (200.69.8.0) router Los routers enrutan la información entre redes para alcanzar al host destino. Nodos de diferentes redes LAN no tienen link entre ellos Cada nodo tiene una dirección que lo identifica en la WAN (dirección IP) La dirección IP posee una estructura jerárquica

Red LAN Ethernet MAC: 00:1C:9A:67:41:01 IP: 192.168.1.40 MAC: 00:1C:9A:67:9A:03 IP: 192.168.1.42 MAC: 00:1C:9A:67:9C:01 IP: 192.168.1.44 MAC: 00:1C:9A:67:9A:01 IP: 192.168.1.41 Cada nodo posee una interface de comunicaciones que le permite conectarse a la LAN llamado NIC (Network interface controller) Cada NIC posee un ID de fabrica llamado MAC compuesto de 6 bytes (Ex. 00:1C:9A:67:41:01) Las interfaces de red escuchan toda la información que circula por el BUS pero filtran por la dirección MAC a menos que se trate de un broadcast (FF:FF:FF:FF:FF:FF) Usuarios y aplicaciones no se manejan con la dirección MAC. Ellos suelen utilizar la dirección IP o el nombre del host para acceder a un nodo. Esto implica que dentro de una LAN se debe tener una tabla de correspondencia entre la IP y la MAC. Esta tabla se llama ARP (Address Resolution Protocol). Si la IP indicada no se encuentra en la tabla, la trama es dirigida al default gateway MAC: 00:1C:9A:67:9A:1B IP: 192.168.1.43 MAC: 00:0C:1C:02:17:1A IP: 192.168.1.1 (default gateway)

Modelo OSI - Introducción Modelo referencial desarrollado por Open system Interconnetcion para los modelos de comunicaciones. Se trata de un modelo de capas que permite establecer un modelo ordenado de las funcionalidades intervinientes. No se trata de un modelo del sistema de comunicación sino del nivel de intervención de los protocolos, dispositivos y funcionalidades. Nos permite comprender el sistema en su totalidad así como encaminar soluciones ante problemas o incidentes

Modelo OSI Datos Aplicación Header layer Presentación Payload Presentación Header layer Sesión Payload Sesión Header layer Transporte Payload Transporte Header layer Red Payload Red Header layer Enlace Payload Enlace Físico

Modelo OSI Transmisión de la información APLICACIÓN PRESENTACIÓN SESIÓN TRANSPORTE Protocolo de aplicación Protocolo de presentación Protocolo de sesión Protocolo de transporte APLICACIÓN PRESENTACIÓN SESIÓN TRANSPORTE RED RED RED RED ENLACE ENLACE ENLACE ENLACE FÍSICO FÍSICO FÍSICO FÍSICO Máquina A Máquina B Red

Derivación de la información en redes de datos Conmutación de circuitos: Se establece un circuito permanente entre los nodos origen y destino El circuito permanece garantizado hasta que se finaliza la sesión de comunicación entre el origen y destino Conmutación de paquetes: Se divide el trafico a enviar en segmentos de tamaño acotado denominados paquetes Los paquetes se multplexan en el sistema de comunicación pudiendo establecerse diferentes circuitos para cada uno.

Medios físicos Coaxial Par trenzado Fibra Wireless Cada uno de estos medios tiene asociados sistemas de codificación y control de errores confirmando la capa 1 del modelo OSI.

Modelo OSI Capa 2 Se trata de una tecnología de conmutación de tramas desarrollada por Xerox en la década del 70 La documentación puede encontrarse en el Standard 802.3 de IEEE Se define la trama Ethernet como la unidad de transmisión en nivel 2 Preámbulo (8) Dirección dest (6) Dirección Orig (6) Tipo (2) Datos (64-1500) CRC (4) 64 bits alternados MAC address del nodo destino MAC address del nodo origen Protocolo de capa 3 Carga útil (proveniente de de capa 3) Calculo para detección de errores

Capa 2 Acceso al medio Se utiliza el método de acceso CSMA/CD (carrier sense multiple access / colission detection) (Escuchar antes de hablar) Se controla cada 9.6 us si existe portadora antes de intentar una transmisión Sin embargo 2 nodos pueden comenzar a transmitir en forma cuasi simultanea por haber detectado ausencia de portadora (tengamos en cuenta que la velocidad de un medio UTP es 0.65c). Esto produciría una colisión Si esto sucede se dice que se ha producido una colisión. Luego se dispara una demora aleatoria y se reintenta la transmisión. A medida que aumenta la cantidad de nodos, aumenta la probabilidad de que existan colisiones. Y con ello aumentan las retransmisiones provocando una baja de performance en la red.

Capa 2 Acceso al medio Inicia la transmisión Sensa portadora Progreso de la transmisión t 0 t 1 > t 0 t 2 > t 1 Inicia la transmisión Las trama Ethernet puede medirse en unidades de longitud Las especificaciones de longitud de los cables están supeditadas a la longitud de la trama.

Red LAN (Ethernet) Server switch 100 Mbit/s 1000 Mbit/s 100 Mbit/s 100 Mbit/s client client client Default gateway Para organizar el tráfico y disminuir colisiones, las redes LAN suelen segmentarse mediante dispositivos llamados switches. Un switch es un dispositivo inteligente que permite redireccionar la información al nodo correcto analizando la dirección MAC Poseen memoria con tablas de resolución que asocian una dirección MAC con un puerto del switch Esta tabla es dinámica y se va formando a medida que circula tráfico por la red. Es decir: El switch aprende.

Modelo OSI Capa 3 Así como la Mac address identifica un nodo en nivel 2, existe una dirección para identificar un nodo en una red WAN en la capa 3 del modelo OSI. Dirección IP Cada red LAN posee un rango de direcciones para sus nodos ya que en nivel 3 las direcciones poseen una estructura jerárquica. La dirección IPV4 esta compuesta por 4 bytes y se utiliza una notación separando dichos bytes por un punto. Ej.: 202.131.40.211 Siendo una dirección jerárquica podemos decir que dicha dirección se compone de la siguiente manera Dirección de red Dirección de host

Capa 3 Clases de direcciones IP El organismo internacional encargado de administrar la asignación de direcciones IP públicas para Internet (Internic), dividió el espacio de direcciones en clases. Los operadores compran estas direcciones (redes completas) para su propio uso o para asignarlas a sus clientes Clase A (/8): Pocas redes (126 ) de muchos hosts (16.777.214). Rango: 1.xxx.xxx.xxx a 126.xxx.xxx.xxx Problema: 126 redes consumen la mitad del espacio de direcciones Clase B (/16): 16.384 redes de 65.534 hosts. Rango 128.0.xxx.xxx a 191.255.xxx.xxx Clase C (/24): Muchas redes (2.097.152 ) de pocos hosts (254) Rango: 192.0.0.xxx a 223.255.255.xxx

20 bytes Capa 3 Protocolo IP Versión IP (4bits) longitud del encabezado (4bits) Tiempo de vida (time to live) (8 bits) Tipo de servicio (8 bits) Identificación (16 bits) protocolo (8 bits) 32 bits Longitud total del datagrama (en bytes) Flags Desplazam. del fragmento (13 bits) (3 bits) Secuencia de verificación: Checksum del encabezado IP (16 bits) dirección IP de origen dirección IP de destino opciones (si las hay) datos Header layer Red Payload Red Header layer Enlace Payload Enlace Físico

Capa 3 Comunicación entre nodos en WAN 128.12.17.3 197.16.30.2 128.12.17.1 197.16.30.1 08:00:20:00:00:02 08:00:20:00:00:03 08:00:20:00:00:04 08:00:20:00:00:01 Direc. Ethernet. Destino Router Direc. Ethernet. Origen Tipo Direc. IP Destino Direc. IP Origen 08:00:20:00:00:03 08:00:20:00:00:02 IP 197.16.30.2128.12.17.3 Datos Direc. Ethernet. Direc. Ethernet. Destino Origen Tipo Direc. IP Direc. IP Destino Origen 08:00:20:00:00:01 08:00:20:00:00:04 IP 197.16.30.2128.12.17.3 Datos Red Un router separa entornos de broadcast así como un switch separa entornos de colisión Enlace Los routers poseen tablas que relacionan redes con puertos del propio switch. La manera en que los routers aprenden dinámicamente para conformar estas tablas está en los protocolos de enrutamiento

Capa 3 - Subredes Hemos visto que una dirección IP se compone por la dirección de red y la dirección de host. Muchas veces la parte que identifica a la dirección de host posee un tamaño que posibilita trabajar con una cantidad muy grande de hosts pero no es posible aprovecharlo. Debido a esto se tiene la posibilidad de subdividir nuevamente la parte que identifica a la dirección de host, quitando bits de la misma y utilizándolos para separar el entorno de broadcast en subredes. La cantidad de bits que serán tomados de para dimensionar subredes esta establecido por un parámetro llamado Mascara de subred Ej: sea la IP 192.168.1.67 y sea la mascara 255.255.255.192 192.168.1.67 (01000011)67 255.255.255.192 (11000000)192 La IP especificada se interpreta como el host 3 en la subred 1

Modelo OSI Capa 4 La capa 3 nos permite llegar a un nodo destino, pero nosotros lo que queremos comunicar realmente son procesos. La capa 4 permite multiplexar diferentes servicios dentro de un mismo host gracias al concepto de PORT. Es por eso que podemos abrir 2 o mas instancias de un navegador. Es en esta capa donde se establece o no el control de flujo. En el caso de TCP (Transmission control protocol), de manera confiable y por cada paquete transmitido, se recibe un acuse de recibo ACK. Se trata de un protocolo orientado a la conexión. Cuando 2 procesos desean comunicarse, TCP establece una conexión. Cuando la comunicación se completa, la conexión se termina para liberar los recursos. Una conexión queda definida por un par [dirección IP]:[port]

Capa 4 Servicios vs Ports Por lo general, cada servicio esta relacionado con un número de port. Un port es tomado por el proceso involucrado en la comunicación y es este quien brindará el servicio relacionado con dicho port. La combinación dada por la dirección IP y el numero de puerto son suficientes para establecer un recurso del comunicación virtual entre 2 procesos llamado socket Los primeros 1024 ports se utilizan para servicios conocidos y registrados en ICANN (Internet corporation for assigned names and numbers). Se los conoce como well known ports Ejemplos Port 80 web donde escuchan los servidores web Port 21 ftp (Transmision de archivos) Port 110 pop3 post office protocol 3 Port 53 DNS nos permite trabajar por nombres en lugar de direcciones IP. Todos los host deben conocer la direccion del servidor DNS

Capa 4 Protocolo TCP

Protocolo TCP Control de flujo En esta capa del modelo OSI es donde se establece el control y validación de la llegada de los paquetes. Cada paquete es acusado con un ACK (Figura izquierda) Si no se recibe el acuse de recibo, esta capa es la encargada de retransmitir el paquete correspondiente luego de la expiración de un timer (Figura derecha)

Protocolo TCP Ventana de transmisión A fin de optimizar la línea de tiempo para la llegada de los ACK, suele utilizarse una ventana que especifica una cantidad de paquetes que se puede transmitir antes de esperar el primer ACK. Esta ventana se regula dinámicamente en función de la tasa de paquetes que se este recibiendo

Protocolo TCP Diagrama de Conexión El protocolo TCP es un protocolo orientado a la conexión. Es decir: se necesita iniciar una conexión antes de comenzar a transmitir. Durante una conexión TCP se inicia una secuencia cuyo orden estará dado por el campo propio de secuencia Al diagrama de conexión se lo conoce como Three way handshake (izquerda)

Capa 4 Protocolo UDP La capa 4 también posee un protocolo que no es orientado a la conexión ni tampoco posee control de flujo. Es un protocolo que solo lleva los valores de los ports fuente y destino para alcanzar aplicaciones y servicios entre los hosts. Como no existe acuse de recibo, es un protocolo cuya entrega no está garantizada. No es confiable para transacciones. Sin embargo, aplicaciones de streaming (audio, video, etc), cuyas perdidas no tiene sentido recuperarlas, o hearthbeats de un cluster usan UDP

Capa 4 Protocolo UDP El port Origen es un campo opcional, ya que no se espera ningun acuse de recibo Como vemos se trata de un header mucho mas liviano

Programación con Sockets Subtitulo o nombre del capitulo Capitulo 2 Universidad Tecnológica Nacional

Sockets Como habíamos mencionado, una conexión bidireccional entre procesos / servicios en internet, se establece mediante a la combinación [Direccion IP]:[port] para cada uno de los hosts. Mediante la información de los parámetros de ambos extremos, el sistema operativo puede crear un descriptor que identificará esta comunicación bidireccional. A este descriptor lo llamamos socket Sistemas como Unix, poseen bibliotecas para manejar diferentes protocolos, y una variedad de system calls para crear estas entidades de comunicación. Si bien hemos visto que existen diferentes protocolos necesarios para conformar una comunicación entre procesos dentro de una red, podremos obtener un file descriptor, que nos permita utilizar las funciones standard unix Read() y Write().

Sockets - Introducción En 1981 en la Universidad de California en Berkeley diseñaron para su sistema operativo, el BSD Unix, un interfaz para permitir a los programas acceder y comunicarse a través de una red de comunicaciones.conocido como el interfaz de sockets Luego fue adoptado por varios fabricantes de estaciones de trabajo llegando a estar disponible en gran cantidad de arquitecturas. y convirtiéndose en un estándar. Sin embargo en UNIX se trato de implementar la menor cantidad de funciones posibles. Es decir: solo las necesarias para obtener un descriptor de Archivo La interfaz de los sockets añade una nueva abstracción para la comunicación a través de la red: el socket. Cada socket activo se identifica por un entero cuyo valor representa un descriptor de socket.

Sockets - Creación Int socket (int domain, int type, int protocol) Se obtiene un file descriptor o -1 si falla AF_INET AF UNIX SOCK_STREAM SOCK_DGRAM 0

Sockets Definición de sus parámetros Hemos creado el socket desde el punto de vista funcional ya que obtuvimos el numero de file descriptor Es decir: Tenemos un file descriptor que representa a un punto terminal o enchufe al que pueden conectarse 2 procesos en nodos remotos para comunicarse entre si. Este file descriptor es Bidireccional Sin embargo el socket no está totalmente definido. (recordemos que Desde el punto de vista de networking el socket estaría definido como: [IP]+ [port] El socket se completa utilizando la función: bind Int bind (fd_socket, struct sockaddr_in, size (struct sockaddr_in) Devuelve -1 en caso de que no exitosa Descriptor del socket struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; };

Conectando sockets TCP - Servidor Una vez que el socket está completo, si deseamos que el mismo resuelva pedidos de conexión TCP, debemos ponerlo en modo escucha Int listen (int fd_socket, int backlog) Devuelve -1 en caso de que no exitosa Descriptor del socket Cantidad de conexiones encoladas permitidas El tamaño máximo que puede tener la cola de peticiones estará determinado para cada sistema por el valor de la constante SOMAXCONN. NO ES LO QUE SE UTILIZA PARA LIMITAR A LA CANTIDAD DE CLIENTES!

Conectando sockets TCP - Servidor Una vez que el socket se pone en modo listen, el servidor debe bloquearse esperando hasta que un aparezca una conexión resuelta en el backlog int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) Socket de transacción Se puede usar como fd en Read y write Socket de de escucha (generado con la función socket(); Puntero a Estructura sockaddr_in vacía que será completada con los datos del cliente Tamaño de la estructura pasada en el argumento anterior TENGAMOS EN CUENTA QUE SE TRATA DE UNA FUNCION BLOQUEANTE!!!!

Conectando sockets TCP - Cliente El cliente debe conocer la dirección IP o el nombre del servidor y el puerto en el cual este está escuchando. Luego creara el socket (función socket) y hará bind con un port cliente con el que desee salir. Establecido el socket cliente, intentará conectarse mediante: int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen); Devuelve -1 en caso de que no sea exitosa Socket (generado con la función socket(); Puntero a estructura sockaddr_in con los datos del servidor a conectarse

Comunicación TCP - Resumen

Comunicación de sockets tipo DGRAM (UDP) Como no existe concepto de conexión, En cada envío o recepción debe indicarse la dirección del otro interlocutor Esto se hace mediante las funciones sendto() y recvfrom()

Envío y recepción UDP ssize_t sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); Socket (generado con la función socket(); Puntero al buffer con los datos Tamaño del buffer con los datos 0 Puntero a estructura sockaddr_in con los datos del host destino La función SendTo() nos devuelve la cantidad de bytes enviados ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen); En este caso, los parámetros son similares a la función SendTo pero en la estructura SocAddr_In especificamos los datos de quien queremos recibir

Funciones útiles struct hostent *gethostbyname(const char *name) struct hostent { char *h_name; /* official name of host */ char **h_aliases; /* alias list */ int h_addrtype; /* host address type */ int h_length; /* length of address */ char **h_addr_list; /* list of addresses */ } struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type)

Desarrollo de Servidores Capitulo 3 Universidad Tecnológica Nacional

Servidores Iterativos socket(...) bind(...) listen(...) Accept(...) Transacción()

Servidores Concurrentes socket(...) bind(...) listen(...) Transaccion() Accept(...) >0 fork() =0

Costo de la concurrencia Sea S tiempo de duración de la transacción n.s tiempo para resolver n servicios que se puedan encolar en el backlog Sea C tiempo para crear un proceso hijo o un thread Debe ser S >> C

Entrada/Salida asíncrona A veces es necesario que nuestro programa reciba peticiones de conexión desde más de una fuente simultáneamente. No podemos bloquear un proceso a la espera de una conexión (accept) por un puerto determinado si también debemos esperar conexiones por otro puerto También podríamos tener que esperar simultáneamente una conexión y un dato de un driver. Podemos utilizar un Accept no bloqueante mediante la system call ioctl() Podemos utilizar una función para bloquear al proceso por un set definido de file descriptors y que se desbloquee ante actividad I/O de alguno de ellos indicándonos por cual existió actividad

Función select() #include <sys/types.h> #include <sys/time.h> int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); Descriptor de mayor valor +1 Set de lectura Set de escritura Set de excepción Tiempo de bloqueo -1: error N de descriptores listos 0 Tme out Tipo fd_set struct timeval { long tv_sec; /* segundos */ long tv_usec; /* microsegundos */ };

Tratamiento de fdset Son arrays de enteros en los que cada bit representa un file descriptor Cuando se desbloquea por uno de ellos el bit correspondiente cambia a 1 Por suerte existen macros para operar sobre estos bits. FD_ZERO( &fdset ); /* Inicializa todos los bits a cero */ FD_SET ( fd, &fdset ); /* Pone a 1 el bit indicado por fd */ FD_CLR ( fd, &fdset ); /* Pone a 0 el bit indicado por fd */ FD_ISSET( fd, &fdset ); /* Comprueba si el bit indicado por fd está a 1 */