Semana 8 api de socket

Preview:

Citation preview

Redes Sockets-1Universidad de Valencia Rogelio Montañana

SOCKETS DE API

REDES DE COMPUTADORAS

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.

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

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)

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

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

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

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

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

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

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

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

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

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

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)

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

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

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

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

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.

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.

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)

Redes Sockets-23Universidad de Valencia Rogelio Montañana

Comunicación usando sockets

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

Cliente

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

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

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)

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

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

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

Redes Sockets-30Universidad de Valencia Rogelio Montañana

Comunicación usando socketsRESUMEN

CLIENTESERVIDOR

socketconnect

writeread

write read

socketbindlisten

close close

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.

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)

Recommended