0% encontró este documento útil (0 votos)
68 vistas

Sockets PDF

Este documento describe los sockets, que son mecanismos de comunicación entre procesos que permiten que un proceso hable con otro proceso incluso estando en distintas máquinas. Los sockets proporcionan fiabilidad, conservación del orden de los datos y no duplicación. Existen sockets orientados a conexión, que usan TCP para establecer una conexión fiable, y sockets no orientados a conexión, que usan UDP sin conexión.

Cargado por

Richard Taylor
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
68 vistas

Sockets PDF

Este documento describe los sockets, que son mecanismos de comunicación entre procesos que permiten que un proceso hable con otro proceso incluso estando en distintas máquinas. Los sockets proporcionan fiabilidad, conservación del orden de los datos y no duplicación. Existen sockets orientados a conexión, que usan TCP para establecer una conexión fiable, y sockets no orientados a conexión, que usan UDP sin conexión.

Cargado por

Richard Taylor
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 30

COMUNICACIN ENTRE PROCESOS

SOCKETS
Diseo de Sistemas Operativos
Curso 2007/08
Grupo: Mi30
Martn Santana, A. David
Martnez Santana, Luis Ignacio

Qu
Qu

son?(Definici
son?(Definici

n)
n)
Los Los sockets sockets son mecanismos de comunicaci son mecanismos de comunicaci n n
entre procesos que permiten que un proceso hable entre procesos que permiten que un proceso hable
( emita o reciba informaci ( emita o reciba informaci n ) con otro proceso n ) con otro proceso
incluso estando en distintas m incluso estando en distintas m quinas. quinas.
Una forma de conseguir que dos programas se Una forma de conseguir que dos programas se
transmitan datos. transmitan datos.
Un Un socket socket no es m no es m s que un "canal de s que un "canal de
comunicaci comunicaci n" entre dos programas que corren n" entre dos programas que corren
sobre ordenadores distintos o incluso en el mismo sobre ordenadores distintos o incluso en el mismo
ordenador. ordenador.
Desde el punto de vista de programaci Desde el punto de vista de programaci n, un n, un
socket socket no es m no es m s que un "fichero" que se abre de s que un "fichero" que se abre de
una manera especial. una manera especial.

Qu
Qu

son? (Caracter
son? (Caracter

sticas)
sticas)
Una vez abierto se pueden escribir y leer datos Una vez abierto se pueden escribir y leer datos
de de l con las funciones de l con las funciones de read read() () y y write write() (). .
La forma de referenciar un La forma de referenciar un socket socket por los por los
procesos implicados, es mediante un procesos implicados, es mediante un descriptor descriptor
del mismo tipo que el utilizado para referenciar del mismo tipo que el utilizado para referenciar
ficheros. ficheros.
Se podr Se podr realizar redirecciones de los archivos de realizar redirecciones de los archivos de
E/S est E/S est ndar (descriptores 0,1 y 2) a los ndar (descriptores 0,1 y 2) a los sockets sockets
y as y as combinar entre ellos aplicaciones de la red. combinar entre ellos aplicaciones de la red.
Propiedades
Propiedades
Fiabilidad de la Transmisi Fiabilidad de la Transmisi n. No se pierden los datos transmitidos. n. No se pierden los datos transmitidos.
Conservaci Conservaci n del Orden de los Datos. Los datos llegan en el orden n del Orden de los Datos. Los datos llegan en el orden
en que se emitieron. en que se emitieron.
No Duplicaci No Duplicaci n de los Datos. El Dato s n de los Datos. El Dato s lo llega una vez. lo llega una vez.
Comunicaci Comunicaci n en modo conectado. La conexi n en modo conectado. La conexi n est n est establecida establecida
antes de iniciar la comunicaci antes de iniciar la comunicaci n. De este modo, la emisi n. De este modo, la emisi n desde n desde
un extremo va destinada al otro (impl un extremo va destinada al otro (impl citamente). citamente).
Conservaci Conservaci n de los l n de los l mites de los mensajes. Los l mites de los mensajes. Los l mites de mites de
mensajes emitidos pueden encontrarse o conocerse en el destino. mensajes emitidos pueden encontrarse o conocerse en el destino.
Env Env o de Mensajes o de Mensajes urgentes urgentes . Permite el env . Permite el env o de datos fuera de o de datos fuera de
flujo o fuera de banda. Al enviar datos fuera del flujo normal, flujo o fuera de banda. Al enviar datos fuera del flujo normal, son son
accesibles de inmediato. accesibles de inmediato.
Atributos
Atributos
Un Un socket socket se caracteriza por tres atributos: se caracteriza por tres atributos:
Dominio Dominio: Especifica el medio de comunicaci : Especifica el medio de comunicaci n de n de
la red que el la red que el socket socket utilizar utilizar . .
Protocolo Protocolo: Especifica que protocolo se va a usar. : Especifica que protocolo se va a usar.
Tipo Tipo: Los protocolos de : Los protocolos de internet internet proveen dos proveen dos
niveles distintos de servicio : flujo y niveles distintos de servicio : flujo y datagramas datagramas. .
Atributos (Dominio)
Atributos (Dominio)
AF_UNIX AF_UNIX: : Sockets Sockets internos de UNIX internos de UNIX
( (Sockets Sockets del sistema de archivos). del sistema de archivos).
AF_INET AF_INET: Protocolos de : Protocolos de internet internet ARPA ARPA
( (Sockets Sockets de redes de UNIX). de redes de UNIX).
AF_ISO AF_ISO: Protocolos est : Protocolos est ndar ISO. ndar ISO.
AF_NS AF_NS: Protocolos de redes : Protocolos de redes Xerox Xerox
Atributos (Protocolo)
Atributos (Protocolo)
Se usa donde el mecanismo de transporte Se usa donde el mecanismo de transporte
permite m permite m s de un protocolo a ser usado. s de un protocolo a ser usado.
En las redes de UNIX y en los En las redes de UNIX y en los sockets sockets de sistema de sistema
de archivos no necesitamos seleccionar otro de archivos no necesitamos seleccionar otro
protocolo diferente al protocolo diferente al default default. .
Atributos(Tipo
Atributos(Tipo
)
)
SOCK_STREAM
SOCK_STREAM
: Para flujo
: Para flujo

Son implementados en el dominio
Son implementados en el dominio
AF_INET
AF_INET
por conexiones TCP/IP.
por conexiones TCP/IP.

Son el tipo usual en el dominio
Son el tipo usual en el dominio
AF_UNIX
AF_UNIX
.
.
SOCK_DGRAM
SOCK_DGRAM
: Para
: Para
datagramas
datagramas

No establecen ni mantienen una conexi
No establecen ni mantienen una conexi

n.
n.

Tambi
Tambi

n existe un l
n existe un l

mite en el tama
mite en el tama

o del
o del
datagrama
datagrama
que se puede enviar.
que se puede enviar.

Se transmite como un solo mensaje en la
Se transmite como un solo mensaje en la
red que se puede perder, duplicar o llegar
red que se puede perder, duplicar o llegar
fuera de secuencia.
fuera de secuencia.
Tipos de
Tipos de
Sockets
Sockets
Existen b
Existen b

sicamente dos tipos


sicamente dos tipos
:
:

Los
Los
no
no
orientados a conexi
orientados a conexi

n
n

El programa de aplicaci
El programa de aplicaci

n da la
n da la
fiabilidad
fiabilidad

Los
Los
orientados a conexi
orientados a conexi

n
n
.
.

Comunicaciones fiables
Comunicaciones fiables

Circuito Virtual
Circuito Virtual
Tipos de
Tipos de
Sockets
Sockets

Un
Un
socket
socket
queda definido por una
queda definido por una
direcci
direcci

n IP, un
n IP, un
protocolo y un n
protocolo y un n

mero de puerto.
mero de puerto.

En el caso concreto de TCP
En el caso concreto de TCP
-
-
IP, un
IP, un
socket
socket
se define por
se define por
una dupla Origen
una dupla Origen

Destino.
Destino.

Tanto el origen como el destino vienen
Tanto el origen como el destino vienen
indicados por un
indicados por un
par (
par (
ip
ip
, puerto).
, puerto).
Tipos de
Tipos de
Sockets
Sockets
(Diagrama)
(Diagrama)
Tipos de
Tipos de
Sockets(Puertos
Sockets(Puertos
)
)
Servidor
Direccin Internet:
XXX.XXX.XXX.XXX
Sockets
Cliente
Sockets
Cualquier puerto Puerto acordado
Mensaje
Direccin Internet:
YYY.YYY.YYY.YYY
Sockets
Sockets
no orientado a conexi
no orientado a conexi

n
n
Es el llamado protocolo Es el llamado protocolo UDP. UDP.
No es necesario que los programas se conecten. No es necesario que los programas se conecten.
Cualquiera de ellos puede transmitir datos en Cualquiera de ellos puede transmitir datos en
cualquier momento, independientemente de que cualquier momento, independientemente de que
el otro programa est el otro programa est "escuchando" o no. "escuchando" o no.
Garantiza que los datos que lleguen son Garantiza que los datos que lleguen son
correctos, pero no garantiza que lleguen todos. correctos, pero no garantiza que lleguen todos.
Se utiliza cuando es muy importante que el Se utiliza cuando es muy importante que el
programa no se quede bloqueado. programa no se quede bloqueado.
No importa que se pierdan datos. No importa que se pierdan datos.
Sockes
Sockes
orientado a conexi
orientado a conexi

n.
n.
Primero hay que establecer correctamente la Primero hay que establecer correctamente la
conexi conexi n. n.
Ninguno de los dos puede transmitir datos. Ninguno de los dos puede transmitir datos.
Se usa el protocolo Se usa el protocolo TCP TCP del protocolo del protocolo TCP/IP TCP/IP, ,
para gestionar la conexi para gestionar la conexi n. n.
Se garantiza que todos los datos van a llegar de Se garantiza que todos los datos van a llegar de
un programa al otro correctamente. un programa al otro correctamente.
Se utiliza cuando la informaci Se utiliza cuando la informaci n a transmitir es n a transmitir es
importante, no se puede perder ning importante, no se puede perder ning n dato. n dato.
No importa que los programas se queden No importa que los programas se queden
"bloqueados" esperando o transmitiendo datos. "bloqueados" esperando o transmitiendo datos.
Arquitectura de Conexi
Arquitectura de Conexi

n
n
Cliente
Servidor Cliente
Sockets
Sockets
Red
Cliente Servidor
Servidor: es el programa que permanece pasivo a la espera de que
alguien solicite conexin con l.
Cliente: es el programa que solicita la conexin para pedir datos al
servidor
Arquitectura de la conexi
Arquitectura de la conexi

n.
n.

Servidor:
Servidor:
Est Est ejecut ejecut ndose y esperando a que otro ndose y esperando a que otro
quiera conectarse a quiera conectarse a l. l.
Nunca da "el primer paso" en la conexi Nunca da "el primer paso" en la conexi n. n.
Es el que "sirve" informaci Es el que "sirve" informaci n al que se la pida. n al que se la pida.

Cliente:
Cliente:
Es el programa que da el Es el programa que da el primer paso primer paso en la en la
conexi conexi n. n.
En el momento de ejecutarlo o cuando lo En el momento de ejecutarlo o cuando lo
necesite, intenta conectarse al servidor. necesite, intenta conectarse al servidor.
Es el que solicita informaci Es el que solicita informaci n al n al servidor servidor. .
Conexi
Conexi

n
n
Para poder realizar la conexi Para poder realizar la conexi n entre ambos n entre ambos
programas (cliente y servidor) es necesario programas (cliente y servidor) es necesario
conocer: conocer:
Direcci Direcci n IP n IP del servidor. del servidor.
Servicio Servicio que queremos crear / utilizar. que queremos crear / utilizar.
Servidor (Funciones)
Servidor (Funciones)

Funciones del servidor en
Funciones del servidor en
modo conectado:
modo conectado:

Las funciones utilizadas son las siguientes:
Las funciones utilizadas son las siguientes:

int
int
socket
socket ( (int int dominio dominio, , int int tipo tipo, , int int protocolo protocolo ) )

int
int
bind
bind ( (int int dfServer dfServer, , struct struct sockaddr sockaddr* *
direccServer direccServer, , int int longDirecc longDirecc ) )

int
int
listen
listen ( (int int dfServer dfServer, , int int longCola longCola ) )

int
int
accept
accept ( (int int dfServer dfServer, , struct struct sockaddr sockaddr* * direccCliente direccCliente, ,
int int* * longDireccCli longDireccCli) )
Servidor (Funciones)
Servidor (Funciones)
int int socket socket ( ( int int dominio dominio, , int int tipo tipo, , int int protocolo protocolo ) )
crea un crea un socket socket sin nombre de un dominio, tipo y protocolo sin nombre de un dominio, tipo y protocolo
espec espec fico fico
dominio dominio : : AF_INET AF_INET, , AF_UNIX AF_UNIX
tipo tipo : SOCK__DGRAM, SOCK__STREAM : SOCK__DGRAM, SOCK__STREAM
protocolo protocolo : 0 ( protocolo por defecto ) : 0 ( protocolo por defecto )
int int bind bind ( ( int int dfServer dfServer, , struct struct sockaddr sockaddr* * direccServer direccServer, , int int
longDirecc longDirecc ) )
nombra un nombra un socket socket: asocia el : asocia el socket socket no nombrado de no nombrado de
descriptor descriptor dfServer dfServer con la direcci con la direcci n del n del socket socket
almacenado en almacenado en direccServer direccServer. .
La direcci La direcci n depende de si estamos en un dominio n depende de si estamos en un dominio AF_UNIX AF_UNIX
o o AF_INET AF_INET. .
Servidor (Funciones)
Servidor (Funciones)
int int listen listen ( ( int int dfServer dfServer, , int int longCola longCola ) )
especifica el m especifica el m ximo n ximo n mero de peticiones de conexi mero de peticiones de conexi n n
pendientes. pendientes.
int int accept accept ( ( int int dfServer dfServer, , struct struct sockaddr sockaddr* * direccCliente direccCliente, , int int* *
longDireccCli longDireccCli) )
escucha al escucha al socket socket nombrado nombrado servidor servidor dfServer dfServer y espera y espera
hasta que se reciba la petici hasta que se reciba la petici n de la conexi n de la conexi n de un cliente. n de un cliente.
Al ocurrir esta incidencia, crea un Al ocurrir esta incidencia, crea un socket socket sin nombre con las sin nombre con las
mismas caracter mismas caracter sticas que el sticas que el socket socket servidor original, lo servidor original, lo
conecta al conecta al socket socket cliente y devuelve un descriptor de fichero cliente y devuelve un descriptor de fichero
que puede ser utilizado para la comunicaci que puede ser utilizado para la comunicaci n con el cliente. n con el cliente.
Servidor (Funcionalidad)
Servidor (Funcionalidad)
El programa servidor realiza los siguientes pasos: El programa servidor realiza los siguientes pasos:
Apertura de un Apertura de un socket socket, mediante la funci , mediante la funci n n socket socket() (). .
Esta funci Esta funci n devuelve un descriptor de fichero normal, como n devuelve un descriptor de fichero normal, como
puede devolverlo puede devolverlo open open(). ().
La funci La funci n n socket socket() no hace absolutamente nada, salvo () no hace absolutamente nada, salvo
devolvernos y preparar un descriptor de fichero que el sistema devolvernos y preparar un descriptor de fichero que el sistema
posteriormente asociar posteriormente asociar a una conexi a una conexi n en red. n en red.
Avisar al sistema operativo Avisar al sistema operativo de que hemos abierto un de que hemos abierto un
socket socket y queremos que asocie nuestro programa a dicho y queremos que asocie nuestro programa a dicho
socket socket. .
Se consigue mediante la funci Se consigue mediante la funci n n bind bind() (). .
El sistema todav El sistema todav a no atender a no atender a las conexiones de clientes, a las conexiones de clientes,
simplemente anota que cuando empiece a hacerlo, tendr simplemente anota que cuando empiece a hacerlo, tendr que que
avisarnos a nosotros. Es en esta llamada cuando se debe avisarnos a nosotros. Es en esta llamada cuando se debe
indicar el n indicar el n mero de servicio al que se quiere atender. mero de servicio al que se quiere atender.
Servidor (Funcionalidad)
Servidor (Funcionalidad)
Avisar al sistema de que Avisar al sistema de que comience a atender comience a atender
dicha conexi dicha conexi n n de red. de red.
Se consigue mediante la funci Se consigue mediante la funci n n listen() listen(). .
A partir de este momento el sistema operativo anotar A partir de este momento el sistema operativo anotar
la conexi la conexi n de cualquier cliente para pas n de cualquier cliente para pas rnosla cuando rnosla cuando
se lo pidamos. se lo pidamos.
Si llegan clientes m Si llegan clientes m s r s r pido de lo que somos capaces pido de lo que somos capaces
de atenderlos, el sistema operativo hace una "cola" con de atenderlos, el sistema operativo hace una "cola" con
ellos y nos los ir ellos y nos los ir pasando seg pasando seg n vayamos pidi n vayamos pidi ndolo. ndolo.
Pedir y Pedir y aceptar las conexiones aceptar las conexiones de clientes al de clientes al
sistema operativo. sistema operativo.
Para ello hacemos una llamada a la funci Para ello hacemos una llamada a la funci n n accept accept() (). .
Esta funci Esta funci n le indica al sistema operativo que nos d n le indica al sistema operativo que nos d al al
siguiente cliente de la cola. siguiente cliente de la cola.
Si no hay clientes se quedar Si no hay clientes se quedar bloqueada hasta que alg bloqueada hasta que alg n n
cliente se conecte. cliente se conecte.
Servidor (Funcionalidad)
Servidor (Funcionalidad)
Escribir y recibir datos Escribir y recibir datos del cliente, por medio del cliente, por medio
de las funciones de las funciones write write() () y y read read() (), que son , que son
exactamente las mismas que usamos para exactamente las mismas que usamos para
escribir o leer de un fichero. escribir o leer de un fichero.
Obviamente, tanto cliente como servidor deben saber Obviamente, tanto cliente como servidor deben saber
qu qu datos esperan recibir, qu datos esperan recibir, qu datos deben enviar y en datos deben enviar y en
qu qu formato. formato.
Puedes ver c Puedes ver c mo se pueden poner de acuerdo en estos mo se pueden poner de acuerdo en estos
mensajes en el apartado de mensajes. mensajes en el apartado de mensajes.
Cierre de la comunicaci Cierre de la comunicaci n n y del y del socket socket, por , por
medio de la funci medio de la funci n n close close() (), que es la misma , que es la misma
que sirve para cerrar un fichero. que sirve para cerrar un fichero.
Cliente (Funciones)
Cliente (Funciones)
Es el proceso encargado de crear un Es el proceso encargado de crear un socket socket sin sin
nombre y posteriormente enlazarlo con el nombre y posteriormente enlazarlo con el socker socker
servidor nombrado. servidor nombrado.
Por lo tanto, es el proceso que demanda una Por lo tanto, es el proceso que demanda una
conexi conexi n al servidor. n al servidor.
Las funciones utilizadas son las siguientes: Las funciones utilizadas son las siguientes:
int int socket socket ( ( int int dominio dominio, , int int tipo tipo, , int int protocolo protocolo ) )
int int connect connect ( ( int int dfCliente dfCliente, , struct struct sockaddr sockaddr* * direccServer direccServer, , int int
longDirecc longDirecc ) )
Cliente (Funciones)
Cliente (Funciones)
int int socket socket ( ( int int dominio dominio, , int int tipo tipo, , int int protocolo protocolo ) )
crea un crea un socket socket sin nombre de un dominio, tipo y protocolo sin nombre de un dominio, tipo y protocolo
espec espec fico fico
dominio dominio : : AF_INET AF_INET, , AF_UNIX AF_UNIX
tipo tipo : SOCK__DGRAM, SOCK__STREAM : SOCK__DGRAM, SOCK__STREAM
protocolo protocolo : 0 ( protocolo por defecto ) : 0 ( protocolo por defecto )
int int connect connect ( ( int int dfCliente dfCliente, , struct struct sockaddr sockaddr* * direccServer direccServer, , int int
longDirecc longDirecc ) )
intenta conectar con un intenta conectar con un socket socket servidor cuya direcci servidor cuya direcci n se n se
encuentra incluida en la estructura apuntada por encuentra incluida en la estructura apuntada por
direccServer direccServer. .
El descriptor El descriptor dfCliente dfCliente se utilizar se utilizar para comunicar con el para comunicar con el
socket socket servidor. servidor.
El tipo de estructura depender El tipo de estructura depender del dominio en que nos del dominio en que nos
encontremos. encontremos.
Cliente (Funcionalidad)
Cliente (Funcionalidad)
El programa cliente realiza los siguientes pasos: El programa cliente realiza los siguientes pasos:
Apertura de un Apertura de un socket socket, como el servidor, por , como el servidor, por
medio de la funci medio de la funci n n socket socket() ()
Solicitar conexi Solicitar conexi n n con el servidor por medio de con el servidor por medio de
la funci la funci n n connect connect() (). .
Dicha funci Dicha funci n quedar n quedar bloqueada hasta que el servidor bloqueada hasta que el servidor
acepte nuestra conexi acepte nuestra conexi n o bien si no hay servidor en el n o bien si no hay servidor en el
sitio indicado, saldr sitio indicado, saldr dando un error. dando un error.
En esta llamada se debe facilitar la direcci En esta llamada se debe facilitar la direcci n IP del n IP del
servidor y el n servidor y el n mero de servicio que se desea. mero de servicio que se desea.
Escribir y recibir datos Escribir y recibir datos del servidor por medio del servidor por medio
de las funciones de las funciones write write() () y y read read() (). .
Cerrar la comunicaci Cerrar la comunicaci n n por medio de por medio de close close() (). .
Ejemplos de conexi
Ejemplos de conexi

n
n
Los Los sockets sockets orientados a orientados a conexion conexion (TCP) (TCP)
Sockets Sockets est est n orientado a ristras ( n orientado a ristras (stream stream). ).
Permite la conexi Permite la conexi n por Circuito Virtual n por Circuito Virtual
Full Full Duplex Duplex
Ejemplos de conexi
Ejemplos de conexi

n
n
Los sockets no orientados a conexin (UDP).
Las comunicaciones correspondientes tienen la propiedad de
conservar los lmites de los mensajes enviados.
En el dominio Internet, el protocolo subyacente es el UDP.
La transmisin es a nivel de paquetes, donde cada paquete puede
seguir una ruta distinta, no garantizndose una recepcin secuencial
de la informacin.
Comparativa
Comparativa
Simple intercambio de Simple intercambio de
informaci informaci n n
Filosof Filosof a Cliente a Cliente- -Servidor Servidor
Comunicaci Comunicaci n unidireccional. n unidireccional. Comunicaci Comunicaci n n bidireccional bidireccional. .
Comunicaci Comunicaci n s n s lo entre lo entre
procesos de la misma procesos de la misma
m m quina. quina.
Comunicaci Comunicaci n entre procesos n entre procesos
de la misma y diferentes de la misma y diferentes
m m quinas. quinas.
Referenciados por Referenciados por array array de de
descriptores descriptores
Referenciado por descriptores Referenciado por descriptores
Pipes
Pipes
Sockets
Sockets
Bibliograf
Bibliograf

a y referencias
a y referencias
Apuntes de la asignatura. Apuntes de la asignatura. Campus Campus Virtual. Virtual.
TCP/IP TCP/IP Douglas Douglas E. Comer. E. Comer.
Starlinux.net Starlinux.net
http http:// ://www.starlinux.net www.starlinux.net/ /staticpages staticpages/ /index.php?page index.php?page=20020720164837437 =20020720164837437

También podría gustarte