57
Sockets Tcp/Ip CAPITULO 3 Ing. Mary Dunnia López N. UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO FICCT Semestre I/2016 INF413

Cap3. sockets publi

Embed Size (px)

Citation preview

Page 1: Cap3. sockets publi

Sockets Tcp/Ip

CAPITULO 3

Ing. Mary Dunnia López N.

UNIVERSIDAD AUTONOMA GABRIEL RENE MORENOFICCT

Semestre I/2016

INF413

Page 2: Cap3. sockets publi

“Conocer con un enfoque práctico para

la comunicación entre procesos

remotos, utilizando Sockets TCP/IP ”

Objetivo

Page 3: Cap3. sockets publi

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

Page 4: Cap3. sockets publi

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”

Page 5: Cap3. sockets publi

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.

Page 6: Cap3. sockets publi

3.1 Conceptos

Page 7: Cap3. sockets publi

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

Page 8: Cap3. sockets publi

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.

Page 9: Cap3. sockets publi

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

Page 10: Cap3. sockets publi

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.

Page 11: Cap3. sockets publi

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

Page 12: Cap3. sockets publi

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

Page 13: Cap3. sockets publi

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.

Page 14: Cap3. sockets publi

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

Page 15: Cap3. sockets publi

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

Page 16: Cap3. sockets publi

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

Page 17: Cap3. sockets publi

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-

Page 18: Cap3. sockets publi

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

Page 19: Cap3. sockets publi

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.)

Page 20: Cap3. sockets publi

Sockets UDP/IP y TCP/IP

Page 21: Cap3. sockets publi

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

Page 22: Cap3. sockets publi

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

Page 23: Cap3. sockets publi

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

Page 24: Cap3. sockets publi

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.

Page 25: Cap3. sockets publi

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

Page 26: Cap3. sockets publi

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).

Page 27: Cap3. sockets publi

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

Page 28: Cap3. sockets publi

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

Page 29: Cap3. sockets publi

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.

Page 30: Cap3. sockets publi

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

Page 31: Cap3. sockets publi

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

Page 32: Cap3. sockets publi

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.

Page 33: Cap3. sockets publi

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)

Page 34: Cap3. sockets publi

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

Page 35: Cap3. sockets publi

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?

Page 36: Cap3. sockets publi

Diagrama de comunicación de los Sockets TCP/IP

Page 37: Cap3. sockets publi

Diagrama de comunicación de los Sockets TCP/IP

Page 38: Cap3. sockets publi

3.2 Operaciones primitivas del Server Socket

Page 39: Cap3. sockets publi

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.

Page 40: Cap3. sockets publi

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.

Page 41: Cap3. sockets publi

Un servidor secuencial (iterativo) atendiendo a más de un cliente

A SERVERA CLIENT

A CLIENT

A CLIENT

4444

Page 42: Cap3. sockets publi

Durante la conversación no puede oír por puerto 4444

A SERVERA CLIENT

A CLIENT

A CLIENT

4444

Page 43: Cap3. sockets publi

Solo después de efectuar la transmisión podrá escuchar nuevamente por puerto 4444

A SERVERA CLIENT

A CLIENT

A CLIENT

4444

Page 44: Cap3. sockets publi

Si el servicio consiste en transferir un archivo, el cliente debe digitar el nombre

A SERVERA CLIENT

A CLIENT

A CLIENT

4444

Page 45: Cap3. sockets publi

¿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

Page 46: Cap3. sockets publi

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.

Page 47: Cap3. sockets publi

Servidores Concurrentes: hay procesos separados para atender el puerto y para transferir el archivo

A SERVER

A CLIENT

A CLIENT

A CLIENT

4444

Page 48: Cap3. sockets publi

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

Page 49: Cap3. sockets publi

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

Page 50: Cap3. sockets publi

Y el servidor crea otro proceso

A SERVER

A CLIENT

A CLIENT

A CLIENT

4444

Page 51: Cap3. sockets publi

Ahora un tercer cliente contacta al servidor

A SERVER

A CLIENT

A CLIENT

A CLIENT

4444

Page 52: Cap3. sockets publi

Un tercer proceso esclavo o thread es creado

A SERVER

A CLIENT

A CLIENT

A CLIENT

4444

Page 53: Cap3. sockets publi

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

Page 54: Cap3. sockets publi

3.3 Operaciones primitivas del Cliente Socket

Page 55: Cap3. sockets publi

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.

Page 56: Cap3. sockets publi

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.

Page 57: Cap3. sockets publi

3.4 Implementación de APP’s que usan Sockets