1 SOCKETS
2 Programa que pide información a un servidor y espera por la respuestaMáquina que ofrece un servicio que puede ser accedido a través de la red Esquema Cliente Servidor Servidor Cliente Programa que pide información a un servidor y espera por la respuesta
3 Esquema Cliente ServidorEspera la conexión de un cliente (espera pasiva) Servidor Cliente Iniciador de la conexión
4 (Aplics. Cliente/Servidor)p.e. FTP, , etc. (Aplics. Cliente/Servidor) Capa de Aplicación p.e. TCP/UDP Capa de Transporte p.e. IP Capa de Red p.e. Ethernet Capa de Enlace de Datos Capa Física
5 Por ejemplo: Aplicación cliente o servidora Dirección hacia donde se transmite Puerto por donde se recibe, etc. Capa de Aplicación Datos Capa de Transporte Capa de Red Capa de Enlace de Datos Capa Física
6 Application Programme InterfaceCapa de Aplicación Network API Network API Capa de Transporte Capa de Red Application Programme Interface Capa de Enlace de Datos Capa Física
7 La mayoría de los sistemas han adoptadoSocket API (disponible en la mayoría de los S.O., p.e. Linux, UNIX, Windows) Capa de Aplicación Network API Capa de Transporte Capa de Red Capa de Enlace de Datos Capa Física
8 Capa de Aplicación Socket API Capa de Transporte 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).
9 Socket API (sockets) Los sockets operan según el paradigma open-read-write-close (UNIX I/O). open Se “crea” el socket Análogamente al trabajo con archivos, open retorna un descriptor a un socket.
10 Se “leen” los datos entrantes al socketSocket API (sockets) Los sockets operan según el paradigma open-read-write-close (UNIX I/O). Se “leen” los datos entrantes al socket read Análogamente al trabajo con archivos, read lee los datos que “llegan al socket”.
11 Se “escriben” datos en el socketSocket API (sockets) Los sockets operan según el paradigma open-read-write-close (UNIX I/O). Se “escriben” datos en el socket write Análogamente al trabajo con archivos, write escribe datos “en el socket”.
12 Socket API (sockets) Los sockets operan según el paradigma open-read-write-close (UNIX I/O). close Análogamente al trabajo con archivos, close indica que se ha terminado de usar el socket.
13 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.
14 Comunicación usando socketsAmbos crean un socket para comunicarse a través de la red Servidor Familia de protocolos a usar en la comunicación AF_UNIX: Comunicación interna AF_INET: TCP/IP AF_APPLETALK: Apple Talk AF_NS: Xerox NS AF_CCITT: Protocolos CCITT, X25, etc. AF_SNA: IBM SNA AF_DECnet: DECnet Cliente descriptor = socket (protofamily, type, protocol)
15 Comunicación usando socketsAmbos crean un socket para comunicarse a través de la red Servidor Tipo de comunicación que usará el socket SOCK_DGRAM: Modo no conectado SOCK_STREAM : Modo conectado SOCK_RAW : Acceso a protocolos de más bajo nivel (p.e. IP). Superusuario. SOCK_SEQPACKET: Para comunica-ciones con Xerox NS. Cliente descriptor = socket (protofamily, type, protocol)
16 Comunicación usando socketsAmbos crean un socket para comunicarse a través de la red Servidor Protocolo de transporte que usará el socket Cliente descriptor = socket (protofamily, type, protocol) 0: protocolo por defecto
17 Comunicación usando socketsAmbos crean un socket para comunicarse a través de la red Servidor Cliente descriptor = socket (protofamily, type, protocol) Protocolo de transporte por defecto (TCP) Modo conectado Familia TCP/IP Por ejemplo: sock=socket(PF_INET,SOCK_STREAM,0)
18 Comunicación usando socketsEl servidor asocia el descriptor del socket al puerto por el que recibirá las peticiones y a la dirección local Servidor Cliente Descriptor del socket retornado por la función socket bind (descriptor, dir_local, largo_dir_local)
19 Comunicación usando socketsEl servidor asocia el descriptor del socket al puerto por el que recibirá las peticiones y a la dirección local Servidor Estructura que contiene la dirección local: Familia de Dirs. Dir_Octetos 0 -1 16 31 Dir_Octetos 2 -5 Dir_Octetos 6 -9 Dir_Octetos Servidor Cliente struct sockaddr { u_short sa_family; char sa_data[14]; }; bind (descriptor, dir_local, largo_dir_local)
20 Comunicación usando socketsEl servidor asocia el descriptor del socket al puerto por el que recibirá las peticiones y a la dirección local Servidor Largo de la dirección local (medido en bytes) Cliente bind (descriptor, dir_local, largo_dir_local)
21 Comunicación usando socketsEl servidor queda en espera... Servidor Especifica el largo de la fila de peticiones de clientes esperando ser atendidas Cliente Descriptor del socket listen(descriptor, largo_cola)
22 Comunicación usando socketsServidor Resumen 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)
23 Comunicación usando socketsY el cliente... una vez creado el socket... Cliente
24 Comunicación usando socketsSe 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 . Servidor Cliente Descriptor del socket retornado por la función socket connect (descriptor, dir_destino, largo_dir_destino)
25 Comunicación usando socketsServidor Estructura que contiene la dirección destino: Familia de Dirs. Dir_Octetos 0 -1 16 31 Dir_Octetos 2 -5 Dir_Octetos 6 -9 Dir_Octetos 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. Servidor Cliente connect (descriptor, dir_destino, largo_dir_destino)
26 Comunicación usando socketsSe 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. Servidor Largo de la dirección destino(medido en bytes) Cliente connect (descriptor, dir_destino, largo_dir_destino)
27 Comunicación usando socketsResumen 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
28 Comunicación usando socketsSe inicia la transferencia de información Servidor read, readv, recv, recvfrom, recvmsg Cliente write, writev, send, sendto, sendmsg
29 Comunicación usando socketsSe inicia la transferencia de información Servidor write, writev, send, sendto, sendmsg Cliente read, readv, recv, recvfrom, recvmsg
30 Comunicación usando socketsRESUMEN SERVIDOR CLIENTE socket bind listen socket connect write read write read close
31 ./etc/services (primeras líneas)tcpmux 1/tcp echo 7/tcp echo 7/udp discard 9/tcp sink null discard /udp sink null systat /tcp users daytime /tcp daytime /udp netstat /tcp chargen /tcp ttytst source chargen /udp ttytst source ftp-data /tcp ftp /tcp telnet /tcp smtp /tcp mail