Cap3. sockets publi
-
Upload
mary-dunnia-lopez-n -
Category
Education
-
view
2.680 -
download
1
Transcript of Cap3. sockets publi
Sockets Tcp/Ip
CAPITULO 3
Ing. Mary Dunnia López N.
UNIVERSIDAD AUTONOMA GABRIEL RENE MORENOFICCT
Semestre I/2016
INF413
“Conocer con un enfoque práctico para
la comunicación entre procesos
remotos, utilizando Sockets TCP/IP ”
Objetivo
C O N T E N I D O
Conceptos
Operaciones primitivas del Server Socket
Operaciones primitivas del Cliente Socket
Implementación de APP’s que usan Sockets
Introducción3.0
3.1
3.2
3.3
3.4
INTRODUCCION
“Los sockets son un método de comunicación entre un programa de cliente y uno de servidor a través de una red. Un socket se define como el extremo
o punto final de una conexión”
INTRODUCCION
Socket indica un concepto abstracto por el cual dos programas (posiblemente en computadoras distintas) pueden intercambiar cualquier flujo de datos, generalmente de manera fiable y ordenada.
El término socket es también usado como el nombre de una interfaz de programación de aplicaciones (API) para la familia de protocolos de Internet TCP/IP, provista usualmente por el sistema operativo.
Los sockets de Internet constituyen el mecanismo para la entrega de paquetes de datos provenientes de la tarjeta de red a los procesos o hilos apropiados.
3.1 Conceptos
Conceptos
3.1.1 Nivel de transporte de Red
3.1.2 Conceptos rápidos de sockets UDP/IP y TCP/IP
3.1.3 Arquitectura Client-Server
3.1.4 Diagrama de comunicación de los Sockets TCP/IP
Nivel de Transporte de RedDefinición
Esta en la capa 4 del modelo OSI y debajo de la capa Aplicación del modelo TCP/IP, se encarga de la conversión entre las aplicaciones mediante un protocolo ya sea TCP o UDP.
Proporciona comunicación lógica entre aplicaciones que se ejecutan en hosts diferentes, ocultándoles la complejidad de la red que une a ambos host.
Gobierna el acceso múltiple a la red de diferentes procesos de la misma maquina y realiza comunicación extremo a extremo no tomando en cuenta los equipos intermedios de la red.
Nivel de Transporte de RedPropósito
Enlace (2)
Física (1)
Usuario en el Nodo A envía el mensaje “Tengo una idea.”
H4H3
Tengo una idea.
Tengo una idea.
Teng o una idea.H3
H4
H2 H4H3 Teng T2 o una idea.H3H2 T2
Tengo una idea.
Tengo una idea.
Red (3)Transp. (4)Sesión (5)
100011110100010111011010101010011111001000001
Nivel de Transporte de RedFunciones Principales
1. Seguimiento de las conversaciones individuales entre aplicaciones origen o destino
2. Segmentación de los datos. Dividir un mensaje en Segmentos. Esto permite gestionar la comunicación y hacerla mas eficiente .
Por ejemplo: Si va enviarse 500 Mb, esta se envía en partes encapsuladas mas manejables. Cabecera1 + Dato1, Cabecera2 + Dato2, … Segmentos !
3. Reensamble de los segmentos. Convertir los Segmentos en un solo Mensaje. 4. Identificación de las diferentes aplicaciones. La capa de transporte reconoce a
cada proceso(web, mensajeria , etc) con un Numero de PUERTO. El puerto va en la cabecera
Por ejemplo el puerto 80 identifica al protocolo http el servicio WEB.5. Multiplexor : Esta función permite que a través de un mismo medio compartido
se pueda enviar varias comunicaciones simultáneamente.
Nivel de Transporte de RedFuncionalidad
En el lado emisor (origen), el nivel de transporte acepta mensajes de las aplicaciones que recibe a través del TSAP y con ellas construye segmentos (TPDU) que luego envía usando los servicios del nivel de red.
En el lado receptor (destino), el nivel de transporte recibe los segmentos del nivel de red y pasa los datos de usuario que contienen (mensajes) hacia el nivel de aplicación a través del TSAP.
origenaplicacióntransporte
redenlacefísica
destinoaplicacióntransporte
redenlacefísica
redenlacefísica
router
Protocolo aplicación
Protocolo transporte
Protocolo red Protocolo red
Protocolo enlace
Protocolo físico
Protocolo enlace
Protocolo físico
Nivel de Transporte de RedFuncionalidad
Conexión extremo a extremo (host a host)
Error de comprobación de mensaje
Paquetesde datos
¿Son estosdatos buenos?
Este paquete no es bueno. Reenviar
Verifica que los datos se transmitan correctamente
Nivel de Transporte de RedFuncionalidad (I)
Los equipos se comunican a través de direcciones IP. Capa transporte añade la dirección de
PUERTO ORIGEN + PUERTO DESTINO.
Física1
Acceso a la Red2
Red3
Transporte4
Aplicación5mens
mens PUERTO ORIGEN PUERTO DESTINO
Un puerto es un número de 16 bits, por lo que existen 65.536 puertos en cada ordenador. Las aplicaciones utilizan estos puertos para recibir y transmitir mensajes.
Nivel de Transporte de RedFuncionalidad (II)
Tipo Descripción ValidezAplicaciones Cliente
- Asignación Dinámica- La aplicación cliente al comunicarse
con el servidor busca un puerto libre para usarlo.
> 1024
Aplicaciones Servidor
- Numero de puertos Pre-Fijados- Puertos asignados a empresas para aplicaciones
comerciales→números 1024 al 49151
- Puertos dinámicos o privados: asignados de manera dinámica a aplicaciones de cliente cuando se inicia una conexión
→números 49 152 al 65 535
0 .. 102321: FTP23: TELNET25: SMTP53: DNS80: HTTP161: SNMP....Puertos asign.
Total de Puertos disponibles 65536 = 216
Nivel de Transporte de RedFuncionalidad (III)
La conexión entre dos equipos se define entre dos puntos extremos o SOCKETS.Socket necesita: dir IP + NUM PUERTO
puerto origen: 1452pueto destino: 8080
puerto8080
puerto1452
ip: 172.20.3.51/16 ip: 172.20.6.51/16
El extremo servidor debe hacer apertura pasiva del puerto, quedándose a la escucha en el mismo a la espera de peticiones de conexión, mientras que el extremo cliente debe realizar una apertura activa del puerto, abriendo un puerto propio y poniéndose en conexión con el puerto que está escuchando en el servidor
cliente servidor
Nivel de Transporte de RedFuncionalidad (IV)
BufferBuffer
puerto origen: 1452pueto destino: 8080
puerto8080
puerto1452
ip: 172.20.3.51/16 ip: 172.20.6.51/16
cliente servidor
Cómo funciona?• Puertos poseen una memoria intermedia BUFFER situada entre los programas de
aplicación y la red • Las aplicaciones envían información y se almacena en el buffer hasta que es
recibida por el puerto destino• El puerto destino va recibiendo la información en el buffer y la va procesando
Nivel de Transporte de RedFuncionalidad (V)
Física1
Acceso a la Red2
Red3
Transporte4
Aplicación5TCP - Protocolo de Control de Transmisión-
UDP - Protocolo de Datagrama Usuario-
Conceptos
3.1.1 Nivel de transporte de red
3.1.2 Sockets UDP/IP y TCP/IP
3.1.3 Arquitectura Client-Server
3.1.4 Diagrama de comunicación de los Sockets TCP/IP
Sockets UDP/IP y TCP/IP
TPC/IP es el primer modelo de protocolo en capas para comunicaciones de Internet se creo a principios de la década de los setenta y se conoce con el nombre de modelo de Internet . A diferencias de los modelos OSI, TPC/IP define 4 capas de funciones que deben tener lugar para que las comunicaciones sean exitosas:
1. Capa de aplicación (telnet, ftp)2. Capa de transporte (TCP / UDP)3. Capa de Internet (IP)4. Capa de acceso a la red (Ethernet, etc.)
Sockets UDP/IP y TCP/IP
Multiplexión/demultiplexión
aplicacióntransporteredenlacefísica
P1 aplicacióntransporte
redenlace
física
aplicacióntransporteredenlacefísica
P2P3 P4P1
host 1 host 2
Entregar en el socket correcto el contenido de los segmentos recibidos, gracias a la info. de la cabecera que lleva el segmento.
host 3
= proceso= socket
Recolectar datos de múltiples sockets, crear los segmentos añadiendo información de cabecera que se usará luego al demultiplexar.
Demultiplexión al recibirMultiplexión al enviar
Sockets UDP/IP y TCP/IPPROTOCOLO UDP (Sin Conexión)
Este protocolo del nivel de transporte esta basado en el intercambio de datagramas.
Permite el envío de datagramas a través de la red sin que se haya establecido previamente una conexión, ya que el propio datagrama incorpora suficiente información de direccionamiento en su cabecera .
Lo utilizan aplicaciones como NFS (Network File System) y RCP (comando de Unix para copiar ficheros entre ordenadores remotos)
Sobre todo se emplea en tareas de control y en la transmisión de audio y vídeo (Streaming) a través de una red ya que no introduce retardos para establecer una conexión.
• DHCP• BOOTP• DNS• Voz sobre IP (VoIP)• Video/audio en tiempo real
Sockets UDP/IP y TCP/IPPROTOCOLO UDP (Sin Conexión)
1. NO ORIENTADO A CONEXIÓN: no necesita que las máquinas establezcan una conexión en el momento.
2. NO FIABLE: La información que llega puede ser NO CORRECTA.
23
Buffer
puerto origen: 1452pueto destino: 8080
puerto8080
puerto1452
ip: 172.20.3.51/16 ip: 172.20.6.51/16
cliente servidor
Demultiplexión sin conexión (UDP)
DatagramSocket serverSocket = new DatagramSocket(6428);
clienteIP: B
P2
cliente IP: A
P1P1P3
servidorIP: C
PO: 6428PD: 9157
PO: 9157PD: 6428
PO: 6428PD: 5775
PO: 5775PD: 6428
La IP origen y el Puerto Origen permitirán a P3 identificar al proceso origen (P1 o P2) y devolverle un mensaje.
PO = Nº de Puerto OrigenPD = Nº de Puerto Destino
Nº de puerto local. Obligatorio especificarlo si es un proceso servidor.
Sockets UDP/IP y TCP/IPPROTOCOLO TCP (Con conexión)
Transporte o TCP (Transfer Control Protocol)
Asegura que los datos llegan a la aplicación destinoAsegura que los datos llegan en el mismo orden en que fueron enviados
Sockets UDP/IP y TCP/IPPROTOCOLO TCP (con conexión)
Es uno de los principales protocolos de la capa de transporte. En el nivel de aplicación, posibilita la administración de datos que vienen del nivel
más bajo del modelo, o van hacia él, (es decir, el protocolo IP). TCP permite colocar los datagramas en orden cuando vienen del protocolo IP. Con el uso del protocolo TCP, las aplicaciones pueden comunicarse en forma
segura (gracias al sistema de acuse de recibo del protocolo TCP) independientemente de las capas inferiores
Los routers sólo tienen que enviar los datos en forma de datagramas, sin preocuparse con el monitoreo de datos porque esta función la cumple la capa de transporte (o más específicamente el protocolo TCP).
Sockets UDP/IP y TCP/IPPROTOCOLO TCP (con conexión)
1. ORIENTADO A CONEXIÓN: es necesario establecer una comunicación entre las dos máquinas para emitir la información.1. La información llega al destino en ORDEN sin DUPLICADOS2. Al final se cierra la conexión
2. FIABLE: La información que se envía de emisor a receptor es correcta.1. Usa ACK's -acuses de recibo- para informar de la recepción de un mensaje.
27
puerto origen: 1452pueto destino: 8080
puerto8080
puerto1452
ip: 172.20.3.51/16 ip: 172.20.6.51/16
cliente servidor
¿Estás ahi?
Sí que estoy
Demultiplexión en TCPServidor Web con varios procesos
P1
cliente IP: A
P1P2P4
servidorIP: C
PO: 9157PD: 80
PO: 9157PD: 80
P5 P6 P3
IP-D: CIP-O: AIP-D: C
IP-O: B
PO: 5775PD: 80
IP-D: CIP-O: B
cliente IP: B
PO = Nº de Puerto OrigenPD = Nº de Puerto DestinoIP-O = Dir. IP OrigenIP-D = Dir. IP Destino
No es problema que dos procesos cliente usen el mismo puerto origen
No es problema que dos procesos cliente usen la misma IP origen
Demultiplexión en TCP: TCPServidor Web multihilo (threaded)
P4P1
cliente IP: A
P1P2
servidorIP: C
PO: 9157PD: 80
PO: 9157PD: 80
P3
IP-D: CIP-O: AIP-D: C
IP-O: B
PO: 5775PD: 80
IP-D: CIP-O: B
cliente IP: B
PO = Nº Puerto OrigPD = Nº Puerto DestiIP-O = Dir. IP OrigenIP-D = Dir. IP Destino
En lugar de un proceso servidor por cada socket, hay un “hilo” por socket y un solo proceso.
Conceptos
3.1.1 Nivel de transporte de red
3.1.2 Conceptos rápidos de sockets UDP/IP y TCP/IP
3.1.3 Arquitectura Cliente-Server
3.1.4 Diagrama de comunicación de los Sockets TCP/IP
Las redes de computadoras permiten a las máquinas intercambiar información mediante diversos
protocolos que controlan estas comunicaciones. En esta sección se muestra como un programa puede
usar la interfaz de Sockets que proveen los sistemas operativos para usar los servicios de las redes de computadoras para comunicarse
con otras máquinas.
Arquitectura Cliente Servidor
Arquitectura Cliente ServidorCaracterísticas
Este modelo permite descentralizar el procesamiento y los recursos. Esto hace que ciertos servidores estén dedicados solo a una aplicación determinada y por lo tanto ejecutarla en forma eficiente
En Sistema donde el cliente es una máquina que solicita un determinado servicio y el servidor a la máquina que lo proporciona. Los servicios pueden ser:
• Ejecución de un determinado programa. • Acceso a un determinado banco de información. • Acceso a un dispositivo de hardware.
Es un elemento primordial, la presencia de un medio físico de comunicación entre las máquinas, y dependerá de la naturaleza de este medio la viabilidad del sistema.
Arquitectura Cliente ServidorComunicación (I)
Las conexiones entre las computadoras usualmente siguen el modelo llamado Cliente-Servidor: Cliente es un proceso en alguna máquina que realiza peticiones a otra
máquina externa en la red, de la cual necesita cierta información para operar. Servidor es un proceso en una máquina de la red que está constantemente
esperando peticiones de clientes.
Los Sockets son una interfaz que provee el sistema operativo para usar los servicios de la Capa de Transporte de la red. Dependiendo del tipo de protocolo que deseemos usar varía el tipo de socket(TCP / UDP)
Conceptos
3.1.1 Nivel de transporte de red
3.1.2 Conceptos rápidos de sockets UDP/IP y TCP/IP
3.1.3 Arquitectura Client-Server
3.1.4 Diagrama de comunicación de los Sockets TCP/IP
Diagrama de comunicación de los Sockets TCP/IP
El cliente y el servidor deben ponerse de acuerdo sobre el protocolo que utilizarán.
Hay dos tipos de socket:
1. Orientado a conexión TCP .
2. Orientado a no conexión. UDP
Un socket es un punto final de un enlace de comunicación de dos vías entre dos programas que se ejecutan a través de la red.
¿Cómo se establece la comunicación con sockets?
Diagrama de comunicación de los Sockets TCP/IP
Diagrama de comunicación de los Sockets TCP/IP
3.2 Operaciones primitivas del Server Socket
El Servidor
El servidor está continuamente esperando peticiones de servicio. Cuando se produce una petición, el servidor despierta y atiende al cliente. Cuando el servicio concluye, el servidor vuelve al estado de espera. De acuerdo con la forma de prestar el servicio, podemos considerar dos tipos de servidores:
Servidores interactivos: El servidor no sólo recoge la petición de servicio, sino que él mismo se encarga de atenderla. Esta forma de trabajo presenta un inconveniente; si el servidor es lento en atender a los clientes y hay una demanda de servicio muy elevada, se van a originar unos tiempos de espera muy grandes.
Servidores concurrentes. El servidor recoge cada una de las peticiones de servicio y crea otros procesos para que se encarguen de atenderlas. Este tipo de servidores sólo es aplicable en sistemas multiproceso, como UNIX. La ventaja que tiene este tipo de servicio es que el servidor puede recoger peticiones a muy alta velocidad, porque está descargado de la tarea de atención al cliente. En las aplicaciones donde los tiempos de servicio son variables, es recomendable implementar este tipo de servidores.
El Servidor InteractivoVarios Clientes intentan interactuar con el Server
• Una forma es ir atendiéndolos de a uno en un ciclo: como en el programa que atiende pedidos de archivos
– Se acepta una conexión– Se lee la petición– Se lee desde el archivo y se escribe en el socket hasta encontrar una
marca de fin de archivo
• A este tipo de servidores se les llama servidores iterativos.• El problema es que todo cliente tiene que esperar su turno para ser
atendido.• Si uno de ellos pide un archivo muy grande los demás tienen que esperar.• La mayor parte de la espera es debido a operaciones de IO, hay capacidad
de CPU ociosa.
Un servidor secuencial (iterativo) atendiendo a más de un cliente
A SERVERA CLIENT
A CLIENT
A CLIENT
4444
Durante la conversación no puede oír por puerto 4444
A SERVERA CLIENT
A CLIENT
A CLIENT
4444
Solo después de efectuar la transmisión podrá escuchar nuevamente por puerto 4444
A SERVERA CLIENT
A CLIENT
A CLIENT
4444
Si el servicio consiste en transferir un archivo, el cliente debe digitar el nombre
A SERVERA CLIENT
A CLIENT
A CLIENT
4444
¿Qué sucede si el servidor tiene que esperar mucho para que un cliente escriba el nombre de un archivo?
A SERVER A CLIENT
A CLIENT
A CLIENT
4444Timeout
ArchServidor2
Servidor Concurrente
• Un servidor concurrente atiende a varios clientes al mismo tiempo.
• Más aún, mientras está atendiendo sigue escuchando • El problema es que todo cliente tiene que esperar su turno
para ser atendido.• Si uno de ellos pide un archivo muy grande los demás tienen
que esperar• La mayor parte de la espera es debido a operaciones de IO,
hay capacidad de CPU ociosa!• Se trata de crear un nuevo proceso o línea de ejecución cada
vez que un cliente “llega” a pedir un servicio.
Servidores Concurrentes: hay procesos separados para atender el puerto y para transferir el archivo
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
Después que el cliente contacta al servidor, éste crea otro proceso para para atender al cliente y
se queda escuchando el puerto 4444 por otro
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
Mientras el nuevo proceso está atendiendo al primer cliente, el segundo cliente puede contactar
al servidor en el puerto 4444
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
Y el servidor crea otro proceso
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
Ahora un tercer cliente contacta al servidor
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
Un tercer proceso esclavo o thread es creado
A SERVER
A CLIENT
A CLIENT
A CLIENT
4444
El Servidor
Secuencia de llamadas hecha por servidor en una comunicación sin conexión.
Secuencia de llamadas hecha por un servido
Socket
Bind
Reciv/Read
Send/Write
Creación del Socket
Que Puerto usa?
Recibe Petición
Sirve Petición
3.3 Operaciones primitivas del Cliente Socket
El Cliente
El cliente es la entidad activa en el establecimiento de una conexión, puesto que es el que toma la iniciativa de la demanda de conexión a un servidor. Esta demanda se realiza por medio de la primitiva connect, solicitando el establecimiento de una conexión que será conocida por los dos extremos. Además, el cliente está informado del éxito o del fracaso del establecimiento de la conexión.
Para que un proceso cliente inicie una conexión con un servidor a través de un socket, es necesario realizar una llamada a connect. Así, se crea un circuito virtual entre los dos procesos cuyos extremos son los sockets. La secuencia de primitivas para la utilización de sockets que el servidor tiene que usar, se muestra a continuación.
El Cliente
Pero en el caso de una comunicación sin conexión, el cliente no utiliza la llamada connect para establecer un circuito virtual entre él y el servidor, sino que lo único que hace es conectarse a un puerto por el cual envía peticiones de servicio a un servidor. La secuencia de llamadas:
Secuencia de llamadas hecha por un cliente. Secuencia de llamadas hecha por un cliente
en una comunicación sin conexión.
3.4 Implementación de APP’s que usan Sockets