Post on 23-Jan-2018
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)