semana 8 api de socket

32
Redes Sockets-1 niversidad de Valencia Rogelio Montañana SOCKETS DE API REDES DE COMPUTADORAS

Upload: jh-terly-tuanama

Post on 12-Jan-2017

225 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Semana  8 api de socket

Redes Sockets-1Universidad de Valencia Rogelio Montañana

SOCKETS DE API

REDES DE COMPUTADORAS

Page 2: Semana  8 api de socket

Redes Sockets-2Universidad de Valencia Rogelio Montañana

Diferencia entre Protocolo e Interfaz

• Protocolo: Reglas que rigen la comunicación entre dos procesos que se ejecutan en dos sistemas diferentes en la misma capa del modelo OSI. Para asegurar su interoperabilidad es necesario estandarizarlos. Ejemplos de protocolos: IPv4 (RFC 791), TCP (RFC 793), HTTP (RFC 2616)

• Interfaz: Reglas que rigen la comunicación entre dos procesos en capas consecutivas dentro del mismo sistema. Pueden no ser estándar, pero su estandarización permite la portabilidad de software entre sistemas de distinta arquitectura.

• Normalmente la Interfaz se especifica y estandariza mediante una API (Interfaz de Programación de Aplicaciones) que es una librería de funciones para la comunicación entre procesos. En TCP/IP las APIs más utilizadas derivan de la librería “Berkeley sockets” escrita en C, que apareció en el Unix BSD 4.2 en 1983. Esta API permite utilizar desde el nivel de aplicación los servicios del nivel de transporte.

Page 3: Semana  8 api de socket

Redes Sockets-3Universidad de Valencia Rogelio Montañana

3

Servicios de los protocolos de transporte de Internet

Servicio de TCP:• Orientado a conexión: se debe

establecer una conexión entre los procesos cliente y servidor

• Transporte confiable entre el proceso emisor y el proceso receptor

• Control de flujo: el emisor no debe “saturar” al receptor

• Control de congestión: el emisor debe moderarse cuando la red esté “sobrecargada”

• No ofrece: ni control de tiempos, ni garantiza un mínimo ancho de banda

Servicio de UDP:• Transferencia de datos no

confiable entre el proceso emisor y el receptor

• NO ofrece: establecimiento de conexión, confiabilidad, control de flujo, control de congestión, control de tiempo, o garantía de ancho de banda mínimo

Page 4: Semana  8 api de socket

Redes Sockets-4Universidad de Valencia Rogelio Montañana

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: Semana  8 api de socket

Redes Sockets-5Universidad de Valencia Rogelio Montañana

Esquema Cliente Servidor

Servidor

Cliente

Cliente

Cliente

Cliente

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

Page 6: Semana  8 api de socket

Redes Sockets-6Universidad de Valencia Rogelio Montañana

Esquema Cliente Servidor

Servidor

Cliente

Cliente

Cliente

Cliente

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

Iniciador de la conexión

Page 7: Semana  8 api de socket

Redes Sockets-7Universidad de Valencia Rogelio Montañana

7

Aplicaciones de Internet: aplicación, protocolos de transporte

Aplicación

e-mailAcceso remoto

Web Transferencia de archivos

streaming multimedia

Telefonía Internet

Protocolo de la capa de aplicación

SMTP [RFC 2821]Telnet [RFC 854]HTTP [RFC 2616]FTP [RFC 959]proprietario(RealNetworks)proprietary(Dialpad)

Protocolo de la capa de transporte

TCPTCPTCPTCPTCP o UDP

normalmente UDP

Page 8: Semana  8 api de socket

Redes Sockets-8Universidad de Valencia Rogelio Montañana

Puertos y Servidores• Los puertos se identifican por un número entero de 16

bits (rango de 0 a 65535)• Cada paquete lleva un puerto de origen y uno de destino

(como las direcciones IP)• Los puertos 0 a 1023 están reservados para los

servicios ‘bien conocidos’, por ejemplo:

puerto 80 → servicio web (HTTP)

de esta forma los clientes web (o lo que sea) saben a que puerto han de dirigir sus peticiones

• Algunas aplicaciones usan TCP, otras UDP. Algunas usan ambos, dependiendo del tipo de operación

Page 9: Semana  8 api de socket

Redes Sockets-9Universidad de Valencia Rogelio Montañana

Algunos servicios ‘bien conocidos’Servicio Puerto TCP UDPDayTime 13 X X

FTP 21 X

SSH 22 X

TelNet 23 X

SMTP 25 X

Domain (DNS) 53 X X

BOOTP 67 X

HTTP 80 X

POP3 110 X

NTP 123 X

SNMP 161 X

HTTPS 443 X

Page 10: Semana  8 api de socket

Redes Sockets-10Universidad de Valencia Rogelio Montañana

Puertos de Clientes• A diferencia de los servidores, los clientes usan

números de puerto elegidos arbitrariamente por el sistema operativo, pero siempre con valores superiores al 1023, para no coincidir con los servidores que pueda haber en ese host

• A los puertos elegidos por los clientes se les suele llamar puertos ‘efímeros’ ya que, a diferencia de puertos de servidores, suelen tener una vida muy corta (la de la conexión)

• La mayoría de los sistemas operativos no utilizan para los puertos efímeros todo el rango posible (1024-65535) sino sólo una parte

Page 11: Semana  8 api de socket

Redes Sockets-11Universidad de Valencia Rogelio Montañana

Sockets

• La combinación de una dirección IP y un número de puerto identifica un punto de conexión del nivel de transporte. Es lo que llamamos un ‘socket’Ejemplo de socket: 10.0.1.25 : 80

• Podemos considerar el socket como la dirección completamente especificada:

Av. Universitaria 229 – 1ª puerta

Dirección IP Puerto

Socket

Dirección IP Puerto

Socket

Page 12: Semana  8 api de socket

Redes Sockets-12Universidad de Valencia Rogelio Montañana

Conexión TCP10.0.1.25:80-10.0.2.47:1038 Puerto

1038El ordenador ejecuta

el programa ‘Explorer’

Socket: 10.0.2.47:1038

Conexión de un cliente a un servidor web

IP 10.0.2.47IP 10.0.1.25

Puerto 80

Socket 10.0.1.25:80(rojo = ‘LISTEN’)

Servidor Web

Comunicación entre dos sockets

Cliente

Page 13: Semana  8 api de socket

Redes Sockets-13Universidad de Valencia Rogelio Montañana

Capa Física

Capa de Enlace de Datos

Capa de Red

Capa de Transporte

Capa de Aplicación

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

Datos

Page 14: Semana  8 api de socket

Redes Sockets-14Universidad de Valencia Rogelio Montañana

Capa Física

Capa de Enlace de Datos

Capa de Red

Capa de Transporte

Capa de AplicaciónNetworkAPI

Network API

Application Programme Interface

Page 15: Semana  8 api de socket

Redes Sockets-15Universidad de Valencia Rogelio Montañana

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 16: Semana  8 api de socket

Redes Sockets-16Universidad de Valencia Rogelio Montañana

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 17: Semana  8 api de socket

Redes Sockets-17Universidad de Valencia Rogelio Montañana

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 18: Semana  8 api de socket

Redes Sockets-18Universidad de Valencia Rogelio Montañana

Socket API (sockets)

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

read

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

Se “leen” los datos entrantes al socket

Page 19: Semana  8 api de socket

Redes Sockets-19Universidad de Valencia Rogelio Montañana

Socket API (sockets)

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

write

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

Se “escriben” datos en el socket

Page 20: Semana  8 api de socket

Redes Sockets-20Universidad de Valencia Rogelio Montañana

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.

Page 21: Semana  8 api de socket

Redes Sockets-21Universidad de Valencia Rogelio Montañana

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 22: Semana  8 api de socket

Redes Sockets-22Universidad de Valencia Rogelio Montañana

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: Semana  8 api de socket

Redes Sockets-23Universidad de Valencia Rogelio Montañana

Comunicación usando sockets

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

Cliente

Page 24: Semana  8 api de socket

Redes Sockets-24Universidad de Valencia Rogelio Montañana

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 .

connect (descriptor, dir_destino, largo_dir_destino)

Descriptor del socket retornado por la función socket

Page 25: Semana  8 api de socket

Redes Sockets-25Universidad de Valencia Rogelio Montañana

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.

connect (descriptor, dir_destino, largo_dir_destino)

ServidorEstructura que contiene la dirección destino:

Familia de Dirs. Dir_Octetos 0 -10 16 31

Dir_Octetos 2 -5Dir_Octetos 6 -9Dir_Octetos 10 - 13

Page 26: Semana  8 api de socket

Redes Sockets-26Universidad de Valencia Rogelio Montañana

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.

connect (descriptor, dir_destino, largo_dir_destino)

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

Page 27: Semana  8 api de socket

Redes Sockets-27Universidad de Valencia Rogelio Montañana

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: Semana  8 api de socket

Redes Sockets-28Universidad de Valencia Rogelio Montañana

Comunicación usando sockets

Cliente

ServidorSe inicia la transferencia de información

write, writev, send, sendto, sendmsg

read, readv, recv, recvfrom, recvmsg

Page 29: Semana  8 api de socket

Redes Sockets-29Universidad de Valencia Rogelio Montañana

Comunicación usando sockets

Cliente

ServidorSe inicia la transferencia de información

write, writev, send, sendto, sendmsg

read, readv, recv, recvfrom, recvmsg

Page 30: Semana  8 api de socket

Redes Sockets-30Universidad de Valencia Rogelio Montañana

Comunicación usando socketsRESUMEN

CLIENTESERVIDOR

socketconnect

writeread

write read

socketbindlisten

close close

Page 31: Semana  8 api de socket

Redes Sockets-31Universidad de Valencia Rogelio Montañana

Como ver las conexiones TCP

• Comando netstat: nos permite ver que conexiones TCP que tenemos activas en un momento dado (socket origen – socket destino) y l estado en que se encuentran. También nos muestra si tenemos algún puerto a la escucha (modo LISTEN)

• Programa wireshark: nos permite capturar los paquetes enviados y recibidos, pudiendo analizar su contenido con todo detalle, el momento en que se envían, etc.

Page 32: Semana  8 api de socket

Redes Sockets-32Universidad de Valencia Rogelio Montañana

Comando ‘netstat’ en un host

C:\>netstat -nConexiones activas

Proto Dirección local Dirección remota Estado TCP 10.0.1.25:3719 10.0.1.60:21 ESTABLISHED TCP 10.0.1.25:4111 10.0.1.50:110 TIME_WAIT TCP 10.0.1.25:4113 10.0.1.50:110 TIME_WAIT TCP 10.0.1.25:80 10.0.1.40:1056 ESTABLISHED TCP 10.0.1.25:80 10.0.1.30:2312 ESTABLISHED TCP 10.0.1.25:80 *:* LISTENC:\>

IP local

IP remotaPuerto local

Puerto remoto

Servidor web a la escucha en este hostConexión de clientes con el servidor web de este hostSesión pendiente de cerrar de un cliente de correo de este host con 10.0.1.50Conexión de un cliente ftp de este host con 10.0.1.60

Si no se utiliza la opción ‘–n’ el programa netstat intenta convertir las direcciones IP y los puertos a nombres siempre que puede (por ejemplo pone ‘pop3’ en vez de 110)