PDF de programación - Los Sockets de Unix

Imágen de pdf Los Sockets de Unix

Los Sockets de Unixgráfica de visualizaciones

Publicado el 27 de Marzo del 2018
787 visualizaciones desde el 27 de Marzo del 2018
277,9 KB
54 paginas
Creado hace 14a (30/09/2009)
Programación de sockets

Sockets: funcionamiento y programación

Los sockets de Unix

E i
Emisor

Receptor
Receptor

Funcionamiento y programación
Dr Roberto Gómez Cárdenas
Dr. Roberto Gómez Cárdenas

DCC del ITESM-CEM

[email protected]

http://webdia.cem.itesm.mx/ac/rogomez

Dr. Roberto Gomez C.

Diapo. No. 1

Sockets: funcionamiento y programación

La comunicación

- Comunicación ocurre a través de un puerto
Cliente y servidor comparten sistema de archivos
- Cliente y servidor comparten sistema de archivos,

y están en misma máquina:

puerto = memoria compartida, pipes, fifos.

- por otro lado en una red:

puerto = socket o conexión TLI

SERVIDOR

CLIENTE

Dr. Roberto Gomez C.

Diapo. No. 2

Dr. Roberto Gómez Cárdenas

1

Programación de sockets

Sockets: funcionamiento y programación

El concepto de puerto

- Cliente debe conocer la máquina a contactar:

i
b
nivel alto: máquina identificada por un nombre
nivel bajo: dirección red (IP: Internet Protocol)

id tifi d

á

l

lt

i

- Dentro máquina existen varios “puntos finales de
comunicación”, en los cuales los servidores están
escuchando para una conexión.

Puntos finales = número puerto
Puntos finales
número puerto

- Analogía:

IP = Número teléfono; Número Puerto = extensión

Dr. Roberto Gomez C.

Diapo. No. 3

Host cognac

Identificando un servidor

Host tequila

Sockets: funcionamiento y programación

sendmail

rexecd

Servidor
impresora

25

512

515

servidor

sendmail

rexed

id

S
Servidor
impresatora

Número
puerto

Transporte
punto-punto

25

512

515

dirección IP

203.6.18.6

La red

203.6.18.8

Dr. Roberto Gomez C.

Diapo. No. 4

Dr. Roberto Gómez Cárdenas

2

Programación de sockets

Ejemplo de Servicios y Números Puertos

Sockets: funcionamiento y programación

19/

daytime 13/ tcp
daytime 13/ udp
netstat 15/ tcp
h
chargen 19/ tcp ttytst source
chargen 19/ udp ttytst source
ftp-data 20/ tcp
ftp 21/ tcp
telnet 23/ tcp
smtp 25/ tcp mail
time 37/ tcp timserver
time
time 37/udp timserver
timserver
. . .
exec 512/ tcp
login 513/ tcp
shell 514/ tcp cmd
printer 515/ tcp spooler

37/udp

Dr. Roberto Gomez C.

Diapo. No. 5

¿Qué son los sockets?

Sockets: funcionamiento y programación

• Punto de comunicación por el cual un proceso puede emitir o recibir

información

• Es una interfaz con la entre capa de aplicación y el de transporte.
• En el interior de un proceso se identificará por un descriptor parecido al
• En el interior de un proceso se identificará por un descriptor, parecido al

usado para la identificación de archivos:
– permite re-dirección de la entrada y salida estándar
– permite utilización de aplicaciones estándar sobre la red
– todo nuevo proceso, (fork() ) hereda los descriptores de socket de su padre

• Permite, dado dos procesos que se comunican a través de ellos,

despreocuparse de:
– canal físico de comunicación, (capa física de la ISO-OSI)
ISO OSI)
– forma de codificación de señales para disminuir probabilidad error en la

ió (

l fí i

fí i

d l

d

i

transmisión (capa enlace)

– nodos red por los cuales tiene que pasar, (capa red)
– formar paquetes de la información a transmitir y buscar ruta que una la

computadora origen con la destino, (capa transporte)

Dr. Roberto Gomez C.

Diapo. No. 6

Dr. Roberto Gómez Cárdenas

3

Programación de sockets

Sockets: funcionamiento y programación

Los pasos en la comunicación

Servidor:

abre su puerto
espera por peticiones del cliente

Cliente:

abre su puerto
escribe su petición

Servidor:

realiza el servicio

Excelente mientras solo exista un cliente y el cliente no requiera de un reply

Dr. Roberto Gomez C.

Diapo. No. 7

Sockets: funcionamiento y programación

Comunicación un servidor varios clientes

Si existe más de un cliente

Peticiones clientes diferentes deben diferenciarse
Establecer convención para enviar id del proceso cliente
Cuidado con la seguridad: posibilidad un proceso se haga

pasar por otro.

SERVIDOR

CLIENTE

CLIENTE

Dr. Roberto Gomez C.

Diapo. No. 8

Dr. Roberto Gómez Cárdenas

4

Programación de sockets

Sockets: funcionamiento y programación

Solución en sockets

Llamadas sistema recvfrom( ) , listen() y accept() permiten al servidor

escuchar un socket conocido para verificar si hay peticiones

Cada petición identifica al emisor

Servidor usa la identificación para enviar respuesta usando sendto( )

recvfrom( ) y sendto( ) son la base del protocolo conectionless de
sockets

Dr. Roberto Gomez C.

Diapo. No. 9

Sockets: funcionamiento y programación

Canal de comunicación bidireccional

Si cliente y servidor requieren de interacción adicional durante
procesamiento de la petición:

i ió

útil contar con canal de comunicación de doble sentido

i

d l

canal privado que no requiere intercambio de id de los procesos
en cada envío de mensajes

SERVIDOR
SERVIDOR

petición cliente
p

CLIENTE
CLIENTE

canal comunicación bidireccional

Dr. Roberto Gomez C.

Diapo. No. 10

Dr. Roberto Gómez Cárdenas

5

Programación de sockets

Sockets: funcionamiento y programación

Canal privado de comunicación

Canal:

Ningún otro proceso puede aceptarlo
Protocolos orientados conexión:
mecanismo llamado hand off

Una vez que el canal fue establecido servidor debe decidir como
manejar la petición

1. Estrategia servidor-serial (serial server)
2. Estrategia servidor-padre (father server)
3. Estrategia servidor-thread (thread server)

Dr. Roberto Gomez C.

Diapo. No. 11

Sockets: funcionamiento y programación

Estrategia servidor serial

d

C
d di
Cuando servidor recibe una petición se dedica completamente
a atender la petición antes que cualquier otra

i ió

id

ib

l

SERVIDOR
SERVIDOR

petición cliente

CLIENTE
CLIENTE

canal comunicación bidireccional

Dr. Roberto Gomez C.

Diapo. No. 12

Dr. Roberto Gómez Cárdenas

6

Programación de sockets

Sockets: funcionamiento y programación

Pseudocódigo estrategia servidor serial

for ( ; ; ) {

escuchar petición cliente
crear canal comunicación privado bidireccional
while (no error en canal de comunicación ) {

leer petición cliente
atender petición
responder al cliente

}
}
cerrar canal de comunicación

}

Dr. Roberto Gomez C.

Diapo. No. 13

Sockets: funcionamiento y programación

Estrategia servidor padre

Servidor “forks” un hijo para que atienda la petición, mientras que
el servidor se queda escuchando otras posibles peticiones
el servidor se queda escuchando otras posibles peticiones

SERVIDOR

peticion cliente

CLIENTE

SERVIDOR

canal comunicacion bidireccional

Dr. Roberto Gomez C.

Diapo. No. 14

Dr. Roberto Gómez Cárdenas

7

Programación de sockets

Sockets: funcionamiento y programación

Pseudocódigo estrategia servidor padre

for ( ; ; ) {

escuchar petición cliente
crear canal comunicación privado bidireccional
fork un hijo que atienda la petición
cerrar el canal de comunicación
limpiar zombies

}
}

Dr. Roberto Gomez C.

Diapo. No. 15

Sockets: funcionamiento y programación

Estrategia servidor thread

Alternativa de la estrategia anterior de bajo overhead
En lugar de hacer un fork de un hijo para atender la petición, el servidor

p

p

crea un thread en su propio espacio de proceso

p p

Ventaja: menos overhead y tratamiento más eficiente
Desventaja: posible interferencia entre peticiones multiples debido al

espacio de direcciones compartido.

SERVIDOR

peticion cliente

CLIENTE

threads

Dr. Roberto Gomez C.

Diapo. No. 16

canal comunicacion bidireccional

Dr. Roberto Gómez Cárdenas

8

Programación de sockets

Sockets: funcionamiento y programación

Transfiriendo información entre máquinas heterogéneas

Para comunicar dos computadoras no basta con poder conectarlas lógicamente
Para comunicar dos computadoras no basta con poder conectarlas lógicamente
también se tienen que poner de acuerdo en diferentes aspectos.

Entre los más importantes encontramos:

• Orden representación de bytes
• Operaciones sobre bytes
• Obtención nombre máquina y otros datos de la misma
• Representación de direcciones

Dr. Roberto Gomez C.

Diapo. No. 17

Sockets: funcionamiento y programación

Rutinas de ordenamiento de bytes

Funciones que manejan posibles diferencias en el orden de la representación de bytes
entre diferentes arquitecturas de computadoras y diferentes protocolos.

#include <sys/types h>
#include <sys/types.h>
#include <netinet/in.h>

u_long htonl(u_long hostlong);

conversión entero largo de host a red

u_short htons(u_short hostshort);

conversión entero corto de host a red

u_long ntohl(u_long netlong);

conversión entero largo de red a host

u_short ntohs(u_short netshort);

conversión entero corto de red a host

Dr. Roberto Gomez C.

Diapo. No. 18

Dr. Roberto Gómez Cárdenas

9

Programación de sockets

Sockets: funcionamiento y programación

Operaciones sobre bytes

Sistema 4.3BSD define funciones que funcionan sobre user-defined byte strings.
user-defined = no son strings de caracteres standard de C (que terminan en caracter nulo);
pueden contener null-bytes dentro de ellos y no significan un fin de string;
por esto se debe especificar el tamaño de cada string como parámetro.
por esto se debe especificar el tamaño de cada string como parámetro.

bcopy( char *src, char *dest, int nbytes );

mueve el número de bytes especificado de src a dest
(difere del orden usado por la función strcpy() )

bzero(char *dest, int nbytes);

escribe el número especificado de null-bytes en dest

int bcmp(char *ptr1, char *ptr2, int nbytes);

compara dos bytes strings
regresa cero si los dos byte strings son identicos, sino regresa un valor no-cero
(difiere del resultado aportado por la función strcmp() )

NOTA: equivalente en sistema V: me
  • Links de descarga
http://lwp-l.com/pdf9927

Comentarios de: Los Sockets de Unix (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad