sistemas de comunicaciones de datos

Anuncio
SISTEMAS DE COMUNICACIONES
DE DATOS
Técnicas Digitales III
Ing. Gustavo Nudelman
2012
Universidad Tecnológica Nacional - Facultad Regional Buenos Aires
Fundamentos de
Networking
Subtitulo o nombre del
Capitulo 1
capitulo
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Red LAN y WAN
LAN 3 (203.157.16.0)
LAN 1 (211.40.8.0)
− Los routers enrutan la información
entre redes para alcanzar al host
destino.
LAN 2 (200.69.8.0)
router
− 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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
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)
− 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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Modelo OSI
Header layer
Presentación
Header layer
Sesión
Header
layer
Transporte
Header
layer Red
Header
layer
Enlace
Datos
Aplicación
Payload
Presentación
Payload
Payload
Payload
Payload
Sesión
Transporte
Red
Enlace
Físico
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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 B
Máquina A
Red
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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.
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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.
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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)
64 bits
alternados
Dirección dest (6)
MAC address
del nodo
destino
Dirección Orig (6)
MAC address
del nodo
origen
Tipo (2)
Protocolo
de capa 3
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Datos (64-1500)
Carga útil
(proveniente
de de capa 3)
CRC (4)
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.
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Capa 2 – Acceso al medio
Inicia la
transmisión
t0
Sensa
portadora
t1 >t0
t 2 >t 1
Progreso de la
transmisión
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.
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Red LAN (Ethernet)
switch
Server
1000 Mbit/s
client
100 Mbit/s
Default gateway
100 Mbit/s
100 Mbit/s
client
client
− 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.
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
223.255.255.xxx

Regional Buenos Aires
Capa 3 – Protocolo IP
32 bits
Tipo de servicio
(8 bits)
Flags
(3 bits)
Identificación (16 bits)
Tiempo de vida
(time to live) (8 bits)
Longitud total del datagrama (en bytes)
protocolo (8 bits)
Desplazam. del fragmento (13 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
Header
layer
Enlace
Payload
Payload
Red
Enlace
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Físico
20 bytes
Versión IP longitud del
encabezado
(4bits)
(4bits)
Capa 3 – Comunicación entre nodos en WAN
197.16.30.2
128.12.17.3
197.16.30.1
08:00:20:00:00:04
128.12.17.1
08:00:20:00:00:02 08:00:20:00:00:03
08:00:20:00:00:01
Router
Direc. Ethernet. Direc. Ethernet. Tipo Direc. IP Direc. IP
Destino
Origen
Destino Origen
08:00:20:00:00:03 08:00:20:00:00:02
IP
197.16.30.2 128.12.17.3
Datos
Direc. Ethernet. Direc. Ethernet. Tipo Direc. IP Direc. IP
Destino
Origen
Destino Origen
08:00:20:00:00:01 08:00:20:00:00:04
IP
197.16.30.2 128.12.17.3
Datos
•
Un router separa entornos de broadcast así como un switch separa
entornos de colisión
•
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
Red
Enlace
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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]
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Capa 4 – Protocolo TCP
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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)
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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)
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Programación con
Sockets
Subtitulo o nombre del
Capitulo 2
capitulo
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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().
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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.
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Sockets - Creación
Int socket (int domain , int type , int protocol)
Se obtiene un
file descriptor
o -1 si falla
AF_INET
SOCK_STREAM
AF UNIX
SOCK_DGRAM
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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)
struct sockaddr_in {
Devuelve -1
en caso de
que no
exitosa
short sin_family;
u_short sin_port;
Descriptor
del socket
struct in_addr sin_addr;
char sin_zero[8];
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
};
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!
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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!!!!
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Comunicación TCP - Resumen
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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()
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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)
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Desarrollo de
Servidores
Capitulo 3
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Universidad
Tecnológica
Nacional
Servidores Iterativos
socket(. . .)
bind(...)
listen(...)
Accept(...)
Transacción()
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Servidores Concurrentes
socket(. . .)
bind(...)
listen(...)
Transaccion()
Accept(...)
>0
fork()
=0
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
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
•-1: error
Set de
lectura
Set de
escritura
Tiempo de
bloqueo
Set de
excepción
Tipo fd_set
•N de
descriptores
listos
struct timeval {
•0 Tme out
long tv_sec; /* segundos */
long tv_usec; /* microsegundos */
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
};
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 */
Universidad Tecnológica Nacional - Facultad
Regional Buenos Aires
Descargar