![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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/1.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/2.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/3.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/4.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/5.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/6.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/7.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/8.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/9.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/10.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/11.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/12.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/13.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/14.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/15.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/16.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/17.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/18.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/19.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/20.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/21.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/22.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/23.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/24.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/25.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/26.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/27.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/28.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/29.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/30.jpg)
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](https://reader035.vdocumento.com/reader035/viewer/2022070416/5665b46a1a28abb57c91557b/html5/thumbnails/31.jpg)
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)