SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser...

31
SOCKETS

Transcript of SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser...

Page 1: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

SOCKETSSOCKETS

Page 2: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Esquema Cliente Servidor

Servidor

Cliente

Cliente

Cliente

Cliente

Máquina que ofrece un servicio que puede ser

accedido a través de la red

Máquina que ofrece un servicio que puede ser

accedido a través de la red

Programa que pide información a un servidor y

espera por la respuesta

Programa que pide información a un servidor y

espera por la respuesta

Page 3: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Esquema Cliente Servidor

Servidor

Cliente

Cliente

Cliente

Cliente

Espera la conexión de un cliente (espera pasiva)

Espera la conexión de un cliente (espera pasiva)

Iniciador de la conexión Iniciador de la conexión

Page 4: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Capa Física

Capa de Enlace de Datos

Capa de Red

Capa de Transporte

Capa de Aplicación

p.e. Ethernet

p.e. IP

p.e. TCP/UDP

p.e. FTP, e-mail, etc.(Aplics. Cliente/Servidor)

Page 5: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Capa Física

Capa de Enlace de Datos

Capa de Red

Capa de Transporte

Capa de Aplicación

Por ejemplo: •Aplicación cliente o servidora•Dirección hacia donde se transmite•Puerto por donde se recibe, etc.

Datos

Page 6: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Capa Física

Capa de Enlace de Datos

Capa de Red

Capa de Transporte

Capa de Aplicación

NetworkAPI

Network API

Application Programme Interface

Page 7: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Capa Física

Capa de Enlace de Datos

Capa de Red

Capa de Transporte

Capa de AplicaciónNetwork API

La mayoría de los sistemas han

adoptado Socket API

(disponible en la mayoría de los

S.O., p.e. Linux, UNIX, Windows)

Page 8: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

En algunos S.O. las funciones de Socket API están integradas en el S.O. (p.e. BSD UNIX)

En otros, una biblioteca entrega las funciones necesarias para comunicar la Aplicación con la Capa de Transporte (p.e. socket.h).

Capa de Transporte

Capa de AplicaciónSocket API

Page 9: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Socket API (sockets)

Los sockets operan según el paradigma open-read-write-close (UNIX I/O).

open

Análogamente al trabajo con archivos, open retorna un descriptor a un socket.

Se “crea” el socket

Page 10: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Socket API (sockets)

Los sockets operan según el paradigma open-read-write-close (UNIX I/O).

readread

Análogamente al trabajo con archivos, read lee los datos que “llegan al socket”.

Se “leen” los datos entrantes al socket

Se “leen” los datos entrantes al socket

Page 11: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Socket API (sockets)

Los sockets operan según el paradigma open-read-write-close (UNIX I/O).

writewrite

Análogamente al trabajo con archivos, write escribe datos “en el socket”.

Se “escriben” datos en el socket

Se “escriben” datos en el socket

Page 12: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Socket API (sockets)

Los sockets operan según el paradigma open-read-write-close (UNIX I/O).

closeclose

Análogamente al trabajo con archivos, close indica que se ha terminado de usar el socket.

Page 13: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Socket API (sockets)

En realidad, la comunicación usando sockets es algo más complicada que open-read-write-close.

Por ejemplo, es necesario especificar:

protocolo de transporte dirección destino tipo de dirección destino si se trata de un servidor, puerto por el que recibe las peticiones etc.

Page 14: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Servidor

Cliente

Ambos crean un socket para comunicarse a través de la red

descriptor = socket (protofamily, type, protocol)

Familia de protocolos a usar en la comunicaciónAF_UNIX: Comunicación interna

AF_INET: TCP/IPAF_APPLETALK: Apple TalkAF_NS: Xerox NSAF_CCITT: Protocolos CCITT, X25, etc.AF_SNA: IBM SNAAF_DECnet: DECnet

AF_UNIX: Comunicación internaAF_INET: TCP/IPAF_APPLETALK: Apple TalkAF_NS: Xerox NSAF_CCITT: Protocolos CCITT, X25, etc.AF_SNA: IBM SNAAF_DECnet: DECnet

Page 15: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Servidor

Cliente

Ambos crean un socket para comunicarse a través de la red

descriptor = socket (protofamily, type, protocol)

Tipo de comunicación que usará el socket

SOCK_DGRAM: Modo no conectadoSOCK_STREAM : Modo conectadoSOCK_RAW : Acceso a protocolos de más bajo nivel (p.e. IP). Superusuario.SOCK_SEQPACKET: Para comunica-ciones con Xerox NS.

SOCK_DGRAM: Modo no conectadoSOCK_STREAM : Modo conectadoSOCK_RAW : Acceso a protocolos de más bajo nivel (p.e. IP). Superusuario.SOCK_SEQPACKET: Para comunica-ciones con Xerox NS.

Page 16: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Servidor

Cliente

Ambos crean un socket para comunicarse a través de la red

descriptor = socket (protofamily, type, protocol)

Protocolo de transporte que usará el socket

0: protocolo por defecto0: protocolo por defecto

Page 17: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Servidor

Cliente

Ambos crean un socket para comunicarse a través de la red

descriptor = socket (protofamily, type, protocol)

Por ejemplo:sock=socket(PF_INET,SOCK_STREAM,0)

Familia TCP/IP

Modo conectado Protocolo de transporte por defecto (TCP)

Page 18: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Servidor

Cliente

El servidor asocia el descriptor del socket al puerto por el que

recibirá las peticiones y a la dirección local

El servidor asocia el descriptor del socket al puerto por el que

recibirá las peticiones y a la dirección local

bind (descriptor, dir_local, largo_dir_local)

Descriptor del socket retornado por la función

socket

Page 19: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Cliente

El servidor asocia el descriptor del socket al puerto por el que

recibirá las peticiones y a la dirección local

El servidor asocia el descriptor del socket al puerto por el que

recibirá las peticiones y a la dirección local

bind (descriptor, dir_local, largo_dir_local)

ServidorServidor

Estructura que contiene la dirección local:

Familia de Dirs. Dir_Octetos 0 -10 16 31

Dir_Octetos 2 -5

Dir_Octetos 6 -9

Dir_Octetos 10 - 13

struct sockaddr {u_short sa_family;char sa_data[14];

};

struct sockaddr {u_short sa_family;char sa_data[14];

};

Page 20: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Cliente

El servidor asocia el descriptor del socket al puerto por el que

recibirá las peticiones y a la dirección local

El servidor asocia el descriptor del socket al puerto por el que

recibirá las peticiones y a la dirección local

bind (descriptor, dir_local, largo_dir_local)

Servidor

Largo de la dirección local (medido en bytes)

Page 21: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Cliente

El servidor queda en espera...El servidor queda en espera...

listen(descriptor, largo_cola)

Servidor

Descriptor del socket

Especifica el largo de la fila de peticiones de

clientes esperando ser atendidas

Page 22: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

ServidorResumen actividades hechas por el servidor (hasta ahora):

Crea un socket (socket) Le asocia un puerto y una dirección local (bind) Queda en espera (listen)

Page 23: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Y el cliente... una vez creado el socket...

Cliente

Page 24: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Servidor

Cliente

Se conecta (sólo si se trata de un servicio SOCK_STREAM) al servidor a través de su socket.

Para esto le asocia el puerto del servidor y su dirección .

Se conecta (sólo si se trata de un servicio SOCK_STREAM) al servidor a través de su socket.

Para esto le asocia el puerto del servidor y su dirección .

connect (descriptor, dir_destino, largo_dir_destino)

Descriptor del socket retornado por la función

socket

Page 25: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Servidor

Cliente

Se conecta (sólo si se trata de un servicio SOCK_STREAM) al servidor a través de su socket.

Para esto le asocia el puerto del servidor y su dirección.

Se conecta (sólo si se trata de un servicio SOCK_STREAM) al servidor a través de su socket.

Para esto le asocia el puerto del servidor y su dirección.

connect (descriptor, dir_destino, largo_dir_destino)

Servidor

Estructura que contiene la dirección destino:

Familia de Dirs. Dir_Octetos 0 -10 16 31

Dir_Octetos 2 -5

Dir_Octetos 6 -9

Dir_Octetos 10 - 13

Page 26: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Servidor

Cliente

Se conecta (sólo si se trata de un servicio SOCK_STREAM) al servidor a través de su socket.

Para esto le asocia el puerto del servidor y su dirección.

Se conecta (sólo si se trata de un servicio SOCK_STREAM) al servidor a través de su socket.

Para esto le asocia el puerto del servidor y su dirección.

connect (descriptor, dir_destino, largo_dir_destino)

Largo de la dirección destino(medido en bytes)

Page 27: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Resumen actividades hechas por el cliente (hasta ahora):

Crea un socket (socket) Le asocia un puerto y una dirección destino (connect, sólo en caso de un servicio con conexión)

Cliente

Page 28: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Cliente

ServidorSe inicia la transferencia de informaciónSe inicia la transferencia de información

write, writev, send, sendto, sendmsg

read, readv, recv, recvfrom, recvmsg

Page 29: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando sockets

Cliente

ServidorSe inicia la transferencia de informaciónSe inicia la transferencia de información

write, writev, send, sendto, sendmsg

read, readv, recv, recvfrom, recvmsg

Page 30: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

Comunicación usando socketsRESUMEN

CLIENTESERVIDOR

socketconnect

writeread

write read

socketbindlisten

close close

Page 31: SOCKETS. Esquema Cliente Servidor Servidor Cliente Máquina que ofrece un servicio que puede ser accedido a través de la red Programa que pide información.

tcpmux 1/tcpecho 7/tcpecho 7/udpdiscard 9/tcp sink nulldiscard 9/udp sink nullsystat 11/tcp usersdaytime 13/tcpdaytime 13/udpnetstat 15/tcpchargen 19/tcp ttytst sourcechargen 19/udp ttytst sourceftp-data 20/tcpftp 21/tcptelnet 23/tcpsmtp 25/tcp mail

./etc/services (primeras líneas)