api_de_socket [Explicación Completa]

27
Redes Sockets-1 Universidad de Valencia Rogelio Montañana SOCKETS DE API REDES DE COMPUTADORAS SOCKETS DE API REDES DE COMPUTADORAS

Transcript of api_de_socket [Explicación Completa]

Redes Sockets-1Universidad de Valencia Rogelio Montañana

SOCKETS DE API

REDES DE COMPUTADORAS

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

Protocolos de transporte de Internet

• Se encargan del transporte de los datos extremo a extremo (host a host).

• Hay dos protocolos para dos tipos de servicio:– TCP (Transmission Control Protocol): orientado a conexión.

Garantiza la entrega sin pérdidas, descarte de duplicados, etc.– UDP (User Datagram Protocol) : no orientado a conexión. No

garantiza la entrega, equivale en el nivel de transporte al servicio que ofrece IP en el nivel de red.

• En un host hay una sola instancia de TCP y una de UDP, que dan servicio a todas las aplicaciones que lo soliciten

• TCP y UDP se encargan de multiplexar el tráfico de los procesos a nivel de aplicación mediante los números de puertos.

Redes Sockets-4Universidad de Valencia Rogelio Montañana

4

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-5Universidad 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-6Universidad 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

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

Redes Sockets-7Universidad de Valencia Rogelio Montañana

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

Redes Sockets-8Universidad de Valencia Rogelio Montañana

8

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-9Universidad 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-10Universidad de Valencia Rogelio Montañana

Algunos servicios ‘bien conocidos’

Servicio Puerto TCP UDP

DayTime 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-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.47

IP 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

NetworkAPI

Network API

Application Programme Interface

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ó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-15Universidad 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-16Universidad 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-17Universidad de Valencia Rogelio Montañana

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

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

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

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

closeclose

Análogamente al trabajo con archivos, close indica que se ha terminado de usar el socket.

Redes Sockets-20Universidad 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-21Universidad de Valencia Rogelio Montañana

Comunicación usando sockets

ServidorResumen actividades hechas por el servidor:

Crea un socket (socket) Le asocia un puerto y una dirección local (bind) Queda en espera (listen)

Redes Sockets-22Universidad de Valencia Rogelio Montañana

Comunicación usando sockets

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

Cliente

Redes Sockets-23Universidad de Valencia Rogelio Montañana

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

Redes Sockets-24Universidad de Valencia Rogelio Montañana

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

Redes Sockets-25Universidad de Valencia Rogelio Montañana

Comunicación usando socketsRESUMEN

CLIENTESERVIDOR

socketconnect

writeread

write read

socketbindlisten

close close

Redes Sockets-26Universidad 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-27Universidad de Valencia Rogelio Montañana

Comando ‘netstat’ en un host

C:\>netstat -n

Conexiones 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 *:* LISTEN

C:\>

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)