TEMA 1 INTRODUCCIÓN A LAS REDES DE ORDENADORES
¿QUÉ ES EL INTERNET?
El internet es una red de dispositivos, de servicios y de redes, es decir, es una red de cosas
¿QUÉ ES UN PROTOCOLO?
Un protocolo son unas instrucciones que definen el formato y el orden de los mensajes intercambiados entre
dos o más entidades que se comunican, así como las acciones tomadas en la transmisión y/o recepción de un
mensaje u otro servicio. El cómo se envían mensajes (puede ser público [TEST]
TCP / IP
El Protocolo de Control de Transmisión (TCP) y el Protocolo Entreredes (IP) son dos de los protocolos más
importantes de Internet. Los estándares de Internet son desarrollados por la Internet Enginering Task
Force (IETF), y los documentos asociados a estos se conocen como Request For Comments (RFC, hay
+5000). También existen otros organismos dedicados a especificar estándares (como por ejemplo el IEEE).
COMPONENTES ESENCIALES
Internet es un conjunto de sistemas terminales (host) que se conectan entre sí para intercambiar paquetes de
datos. Las conexiones consisten en diferentes enlaces de comunicaciones (cable, fibra, ondas...) que se unen
mediante dispositivos de conmutación de paquetes (routers y switches). Los hosts acceden a Internet a través
de los Proveedores de Servicios de Internet (ISP).
ESTRUCTURA DE LA RED
La estructura de la red se divide en 3 grandes partes:
- Frontera de la red: compuestas de sistemas terminales ruter
- Redes de acceso y medio físico: compuesta de enlaces físicos, switches y routers de frontera.
- Núcleo de la red: compuesta de enlaces y routers de alta velocidad.
FRONTERA DE LA RED
Básicamente constituida por sistemas terminales (host) como: Ordenadores, Consolas de juego,
Smartphones, Cámaras de vídeo…
Algunos hosts se comportan como clientes y otros como servidores, otros como mixtos (peer to peer o p2p).
REDES DE ACCESO Y MEDIO FÍSICO
Enlaces físicos que conectan los hosts con el primer router conocido como router de frontera (o gateway).
Los principales tipos de enlaces en las redes de acceso son: Acceso telefónico (módems), DSL, Cable, Fibra,
Ethernet y ondas.
NÚCLEO DE LA RED
Enlaces físicos que conectan routers de alta velocidad. Un router (enrutador o encaminador de paquetes) es
un dispositivo cuya función principal consiste en enviar o encaminar paquetes de datos de una red a otra, es
decir, interconectar subredes.
FRONTERA DE LA RED – REDES DE ACCESO
ACCESO TELEFÓNICO (MÓDEM)
Utiliza la infraestructura telefónica ya existente. No se puede simultáneamente hablar por teléfono y acceder
a Internet.
Hasta 128kb/s (64+64 en RDSI, Red Digital de Servicios Integrados) o menor (56Kb/s) de acceso directo a
un router
DIGITAL SUSCRIBER LINE (DSL)
También utiliza la infraestructura telefónica existente. Permite telefonía y datos simultáneos (microfiltros o
splitters). La velocidad depende de distancia a central, calidad cable… Existe una línea física dedicada a la
estación central telefónica
La velocidad de bajada es inferior a 52 Mb/s en VDSL. La velocidad de subida es inferior a 16 Mb/s) en
VDSL.
ACCESO POR CABLE (COAXIAL)
No utilizan la infraestructura telefónica (TV cable)
- HFC: Hybrid Fiber Coax
Asimétrica: Bajada (<30Mb/s), Subida (<2Mb/s). La velocidad depende de número de nodos y tráfico
Conexión compartida (no dedicada como DSL) del cable-modem al router del ISP (Internet Service
Provider)
TECNOLOGÍA FTTH (FIBER TO THE HOME)
Fibra óptica desde la central a las casas:
- Passive Optical network (PON) - las que más se utilizan
- Active Optical Network (AON)
- Velocidades de hasta 100 Mb/s simétricos
- TV+Tel+Internet (Triple-Play)
ACCESO POR ETHERNET
Típicamente utilizado en universidades, empresas, etc.
- 10 Mb/s, 100Mb/s, 1Gb/s, 10Gb/s Ethernet
- Los hosts se conectan a un switch Ethernet
ACCESO INALÁMBRICO
La red de acceso Wireless conecta el host con un router
o Vía estación base (Access point)
LANs Wireless:
o IEEE 802.11b/g/n (WiFi): 11,54, 300 Mb/s
Acceso WAN Wireless (infraestructura de tel. móvil)
o Redes móviles xG
o WiMAX (hasta 75 Mb/s) con distancias de 80 km (IEEE 802.16)
REDES DOMESTICAS
Componentes típicos:
- DSL, modem por cable u ONT
- Router / firewall / NAT
- Cableado Ethernet
- Punto de acceso wireless
REDES DE ACCESO – MEDIOS FÍSICOS
CABLE DE PAR TRENZADO NO APANTALLADO (UTP)
Dos cables de cobre aislados y trenzados en espiral para evitar interferencias:
UTP Categoria 5: hasta 1Gb/s con dist < 100m
UTP Categoria 6: hasta 10Gb/s con dist < 100m
Solución actual para LAN de alta velocidad
VENTAJAS
- Barato
- Fácil de manipular
- Buen compromiso entre velocidad, tasa de errores y distancia para menos de 100 metros.
DESVENTAJAS
- Problemas de ruido y efecto crosstalk(ruido que un cable produce a otro) (mejora variando los patrones
de trenzado en los diferentes pares).
- Ancho de banda limitado (entre 2 MHz y 3.5 MHz).
- Problema de atenuación. Se necesitan repetidores:
Para analógico cada 5 o 6 kms
Para digital cada 2 o 3 km
CABLE COAXIAL
Dos conductores de cobre concéntricos.
Se suele usar de dos formas:
- Banda base - Sólo un canal (digital), de 500 Ohms
- Banda ancha - Varios canales (analógicos), de 75 Ohms
VENTAJAS
- Alcance de 1 a 10 kms
- Gran ancho de banda > 1GHz
- 4 Gb/s
DESVENTAJAS
- Puede ser afectado por campos externos, aunque el problema se minimiza cuando hay varios cables en
paralelo.
- Grosor
- Precio
FIBRA ÓPTICA
Fibra de vidrio que transporta pulsos de luz (bit)
VENTAJAS
- Ratios de error bajos
- Repetidores alejados
- Inmune al ruido EM
- Alta velocidad > 100 Gb/s
- Difícil de pinchar
- No tiene en cuenta las interferencias electromagnéticas
DESVENTAJAS
- Fragilidad
- Precio
- Se dobla mucho el cable -> Se pierde calidad.
- Se usan repetidores
ENLACES RADIO
LAN (Ej. WiFi < 54Mb/s
Microondas terrestres (<45 Mb/s)
WAN (Ej. 3G -> 1Mb/s o WiMax)
Satélite (canales <45 Mb/s, 270ms retardo)
EL NÚCLEO DE LA RED – CONMUTACIÓN DE CIRCUITOS Y
CONMUTACIÓN DE PAQUETES
NÚCLEO DE LA RED
¿CÓMO TRANSPORTAR DATOS EN UNA RED?
Hay dos métodos para transportar los datos en una red:
Conmutación de circuitos (CC) – reservas un cable
Un tio reserva una mesa en un restautante, sabe que no va a quedarse sin mesa está asegurada
Conmutación de paquetes (CP) – no reservas nada, lo haces mediante la red
Un tío va al restaurante a comer sin reservar mesa, puede tener suerte o no.
CONMUTACIÓN DE CIRCUITOS
El enfoque más sencillo para conectar dos terminales telefónicos es unirlos mediante un cable.
Los sistemas de conmutación de circuitos precisan de una fase en la que se reserva el canal de comunicación
en exclusiva. Esta reserva se mantendrá durante toda la comunicación.
Al principio, dicha reserva la realizaban operadores humanos, aunque en los 70 se automatizó todo el
proceso. Si hay pocos hosts
MULTIPLEXACIÓN EN LA FRECUENCIA (FDM)
Las señales se modulan y se mezclan antes de su transmisión.
MULTIPLEXACIÓN EN EL TIEMPO (TDM)
El tiempo se divide en marcos de duración fija, y cada marco se divide en un número fijo de particiones (o
slots).
Cuando una red establece una conexión a través del enlace, la red dedica una partición de cada marco a
dicha conexión.
CONMUTACIÓN DE PAQUETES
La conmutación de circuitos puede ser útil cuando se tiene mucho control sobre él.
En otro caso, puede dar lugar a infrautilización del medio. En casos de poco control es mejor la ocupación
bajo demanda.
La conmutación de paquetes, también conocida como multiplexación estadística, comparte bajo demanda los
enlaces. Este método funciona mejor para secuencias de paquetes que no siguen un patrón fijo.
Cada enlace puede tener una velocidad R diferente.
La velocidad de los enlaces se mide en b/s (bps).
TRANSMISIÓN, ALMACENAMIENTO Y REENVÍO
Almacenar y reenviar: el paquete entero debe llegar al router antes de transmitirlo al siguiente enlace.
La transmisión de un paquete de L bits en un enlace a R bits/s requiere L/R segundos.
El paquete COMPLETO llega al router antes de enviarlo al siguiente router
Como en la figura hay 3 enlaces iguales, el retardo de transmisión será 3L/R segundos. Por ejemplo, si L
= 7.5 Mb y R = 1.5 Mb/s ¿Cuál es el retardo de transmisión?
¿ES LA CONMUTACIÓN DE PAQUETES EL CLARO GANADOR?
VENTAJAS
- Permite aprovechar mejor el canal cuando hay “ráfagas” de datos, y por tanto más usuarios en estos
casos.
- Compartición de recursos más simple, no necesita preasignación del camino.
DESVENTAJAS
- Una congestión excesiva implica retardos y pérdidas de paquetes, y por tanto necesita protocolos que
posibiliten transferencia de datos fiable y control de la congestión.
ESTRUCTURA DE INTERNET
ES UNA RED DE REDES
La estructura interna de Internet tiene jerarquía de niveles. Hay ISP de diferentes niveles:
- ISP de nivel 1 proveedores de:
ISP nivel 2 (clientes) Empresas un poco más pequeñas
Clientes importantes
Los ISP 1 más verticales incluso sirven a usuarios finales
- ISP de nivel 2 proveedores de:
ISP de nivel inferior
Usuarios finales
- ISP de nivel inferior
- ISP de acceso
ISP NIVEL 1 – TRONCALES DE INTERNET
Una red de nivel 1 se caracteriza por:
- Cobertura nacional e internacional
- Velocidades de 2 a 10Gb/s. Routers muy rápidos.
- Conexión directa a cada uno de los otros ISP de nivel 1.
- Conectados a gran número de ISP de nivel 2 y otros clientes.
- Todas las tier 1 están unidos entre sí, no hay que pagar por usarla
Una nueva red no puede convertirse en una Tier1 sin la aprobación implícita de todas otras las redes de nivel
1, puesto que la denegación de cualquier red la excluye. (Vamos que es muy exclusivo)
Las redes de nivel 1 suelen proteger su estado relativamente exclusivo dificultando que nuevas redes se
conviertan en redes de nivel
ISP NIVEL 2 (TIER 2)
ISPs “Nivel 2”: ISPs más pequeños (a menudo, nacional/regional)
Conectados a uno o más ISPs de nivel 1 y a otros ISPs de nivel 2
ISP de nivel 2 paga al ISP de nivel 1 para conectarse al resto de Internet
Algunos tienen acuerdos para no pagar
ISP DE NIVEL INFERIOR E ISP DE ACCESO
ISP de niveles inferiores son clientes de ISP de niveles superiores (proveedores), que los conectan al resto de
Internet
INTERNET ES UNA RED DE REDES
Típicamente, para alcanzar su destino, es necesario enrutar los paquetes a través de muchas redes diferentes.
RETARDOS, PÉRDIDA Y TASA DE TRANSFERENCIA EN UNA RED DE
CONMUTACIÓN DE PAQUETES (RCP)
CUATRO FUENTES DE RETARDO DE PAQUETES
Si un paquete de datos es grande, esto afectará a los retardos de: procesamiento y transmisión
PROCESADO EN EL NODO – RETARDO DE PROCESAMIENTO
Chequeo de bits de error, el objetivo es determinar el enlace de salida (microseg).
El tiempo que tarda el router en examinar los paquetes y decir cuál es el enlace de salida que corresponde
(Depende del tamaño del fichero)
RETARDO DE COLA
Es el tiempo que espera el paquete desde que ha sido situado en la cola de salida hasta que el router
comienza a transmitirlo (tiempo espera para transmitirlo por enlace). Dependerá del nivel de congestión del
router (mseg-microseg).
RETARDO DE TRANSMISIÓN
Depende del tamaño del fichero y del tipo de enlace (L/R). Es significativo para enlaces de baja velocidad.
El tiempo que tarda del router en situar todos los bits del paquete sobre el enlace de salida (mseg-microseg)
RETARDO DE PROPAGACIÓN
De pocos microsegundos a cientos de milisegundos. Depende del tipo de enlace y de la distancia
El tiempo que tarda en propagarse un bit por enlace
RETARDO NODAL
El retardo nodal es la suma de todos los retardos.
RETARDO DE COLA
Para estudiar el problema del retardo de cola supongamos las siguientes simplificaciones:
R = Velocidad de enlace bits/s
L = longitud típica del paquete bit/paq
a = tasa promedio de llegada de paquetes paq/s
L∗a
Intensidad del tr á fico=
R
La/R ~ 0: pequeño retardo promedio de cola
La/R ~ 1: retardos grandes
La/R > 1: llega más “trabajo” que el que se puede procesar, ¡retardo promedio infinito! (se pierden
paquetes)
PERDIDA DE PAQUETES
La cola (buffer) que precede al enlace tiene una capacidad finita
El paquete que llega a una cola llena se pierde [TEST]
Un paquete perdido podría ser retransmitido de terminal a terminal para garantizar que todos lleguen del
origen al destino
TASA DE TRANSFERENCIA (THROUGHPUT)
La tasa de transferencia es la ratio (bit/unidad tiempo) a la que se transfieren bits entre emisor/receptor
Instantánea: ratio a un determinado punto y tiempo
Media: ratio sobre un periodo más largo de tiempo
TASA DE TRANSFERENCIA EN INTERNET
Por conexión origen-destino: min {Rc,Rs,R/10}
La tasa de transferencia también depende del tráfico existente.
CAPAS DE PROTOCOLOS Y MODELOS DE SERVICIO
CAPAS DE PROTOCOLO
Ejemplo del cartero
El proceso de envíos postales sigue un protocolo
Cada capa implementa un servicio que lo proporciona a la capa superior. Hay un diálogo horizontal (entre
capas iguales) y otro diálogo vertical (entre capa superior e inferior).
VENTAJAS DE LA ORGANIZACIÓN EN CAPAS
- Es útil para organizar sistemas grandes y complejos.
- Estructuras explícitas permiten identificar relaciones entre piezas del sistema complejas.
- Organización con un modelo de referencia.
- La modularización facilita el mantenimiento y actualización de los sistemas.
- Cambios de implementación en el servicio de una capa es transparente para el resto del sistema.
Por ejemplo, el cambio de la empresa postal no afecta al resto del sistema.
DESVENTAJAS DE LA ORGANIZACIÓN EN CAPAS
- Puede haber funcionalidad duplicada en varias capas
Por ejemplo, la detección de errores de bit. Se realiza tanto en un enlace (capa de enlace) como
extremo a extremo (capa de red)
- Cuando la funcionalidad de una capa necesita información que sólo existe en otra capa se suele obviar
el principio de organización en capas (rompe la encapsulación).
Por ejemplo, si en la central de correos revisan la carta por temas de seguridad
PILA DE PROTOCOLOS DE INTERNET
Aplicación: da soporte a las aplicaciones permitiéndoles el intercambio de mensajes en una red. Incluye
protocolos como: FTP, SMTP, HTTP...
Transporte: transferencia de segmentos de proceso a proceso. Incluye protocolos como: TCP y UDP.
Red: encamina datagramas desde un host origen a otro destino. Incluye protocolos como: IP y protocolos de
enrutado.
Enlace: transferencia de tramas entre elementos de red vecinos. Incluye protocolos como: PPP, Ethernet,
WiFi
Física: movimiento de bits en un medio físico (cable, fibra, espacio...
MODELO DE REFERENCIA ISO/OSI
El modelo OSI (Open System Interconnection) incluye 2 capas adicionales:
Presentación: permite a las aplicaciones de Internet interpretar significado de datos: encriptación,
compresión, convenios específicos de la máquina, etc.
Sesión: delimita y sincroniza el intercambio de datos: punto de restauración y esquema de recuperación.
Como la pila en la que se basa Internet no tiene estas dos capas, si se necesitasen sus servicios sería
responsabilidad de las aplicaciones su implementación.
ENCAPSULACIÓN
Cada capa suele añadir cápsulas con información propia.
PRINCIPALES PROTOCOLOS POR CAPAS
SEGURIDAD
SEGURIDAD EN REDES
La seguridad en redes se refiere a:
Cómo se ataca una red de computadoras
Cómo se defiende de los ataques una red
Cómo diseñar arquitecturas inmunes a los ataques
Originalmente Internet no fue diseñada pensando en ataques a su seguridad. La visión original era: “grupo
de usuarios fiables conectados a una red transparente”. Los diseñadores de protocolos de Internet se están
“actualizando”
MALWARE EN HOSTS VÍA INTERNET
Malware (software malicioso) que puede acceder a un host.
Los objetivos habituales del malware son:
- Espiar (spyware malware), grabando pulsaciones de teclas (contraseñas), sitios visitados,
transmitiendo, etc.
- Dañar el software o hardware, borrar ficheros, hacer chantaje.
- Utilizar los hosts infectados con otros fines: ataques, spam...
TIPOLOGÍA DEL MALWARE EN HOSTS VÍA INTERNET
Troyano:
- Parte oculta en otro software
- Páginas web (Active-X, plug-in)
Virus
- Requiere interacción del usuario (Ej., adjunto e-mail) que lo ejecuta
- Auto-replicante: se propaga a otros hosts, usuarios
Gusano
- No requiere de interacción del usuario
- Auto-replicante: se propaga a otros hosts, usuarios
ATAQUES A SERVIDORES E INFRAESTRUCTURA DE RED
Ataques de denegación de servicio (DDoS): inutilizan servidores web, correo, DNS de su uso legítimo
sobrecargando el recuso con tráfico “falso (bogus)”
Principales tipos de ataques:
- Ataque de vulnerabilidad: pocos mensajes “bien construidos”
- Inundación del ancho de banda: envío masivo de mensajes
- Inundación de conexiones: elevado número de conexiones TCP abiertas o semi-abiertas
CONCEPTOS BÁSICOS DE SEGURIDAD
Las 4 características de una comunicación segura son:
- Autenticación - Es quien dice ser.
- Confidencialidad - Lo que dice solo lo escuchamos nosotros.
- Integridad - Lo que dice no lo ha modificado nadie.
- No repudio - No puede negar lo que ha dicho o hecho.
Para conseguir estos objetivos se utilizan diferentes mecanismos:
- Seguridad en el acceso al sistema.
- Seguridad de los datos: cifrado, firma digital y backup.
- Seguridad en la comunicación: síncrona (p.ej. VPN) o asíncrona (p.ej. PGP).
EJEMPLO DE ATAQUE A LA CONFIDENCIALIDAD
Packet sniffing (Husmeador de paquetes):
- Acceso “broadcast” (Ethernet, WiFi)
- Software que lee/graba todos los paquetes (incluyendo contraseñas) que pasan por la red
- Defensa: Información cifrada
EJEMPLO DE ATAQUE A LA AUTENTICACIÓN
- IP spoofing: enviar un paquete con una dirección origen falsa
- Defensa: Autenticación en el punto terminal. Determina si un paquete tiene el origen donde creemos
que lo tiene
EJEMPLO DE ATAQUE A LA INTEGRIDAD
Interponerse en la ruta de comunicación de dos entidades con conexión establecida.
Por ejemplo, interponerse entre dos usuarios, o dos routers, o dos servidores de correo, etc.
El atacante podría ser un router “comprometido” en la ruta de comunicación.
Si el atacante puede inyectar, modificar y borrar mensajes, entonces no está asegurada la integridad de los
datos.
Los mecanismos de confidencialidad y de autenticación en el punto terminal no necesariamente aseguran
integridad de datos.
TEMA 2 LA CAPA DE APLICACIÓN
INTRODUCCIÓN
CREACION DE APLICACIONES DE RED
Diseñar programas que
Se ejecuten en (diferentes) sistemas terminales.
Se comuniquen mediante la red.
Ej: servidor web que se comunica con el navegador.
Para hacer una aplicación de red no es necesario escribir código para los dispositivos del núcleo de la red
Aunque quiera, no podría hacerlo porque no ejecutan aplicaciones de red.
Esto facilita el desarrollo e implementación de aplicaciones.
Arquitectura de la aplicación
Se distinguen dos tipos principales de arquitecturas:
Cliente - Servidor
Peer to peer (P2P)
ARQUITECTURA CLIENTE SERVIDOR
CARACTERÍSTICAS
Siempre existe un host activo denominado servidor.
Los servidores tienen una IP conocida.
El servidor da servicio a las solicitudes de otros muchos hosts que llamamos clientes.
Los clientes pueden estar activos o no.
Los clientes no se comunican entre sí.
ASPECTOS A CONSIDERAR
Si el servidor es muy popular será necesario un centro de datos con una agrupación de hosts (cluster)
que simule un servidor virtual de gran capacidad.
Dependiendo del tráfico pueden ser necesarias infraestructuras intensivas:
o Granjas de servidores
o Grandes anchos de banda
EJEMPLO CLIENTE-SERVIDOR
Un servidor S, y dos equipos A y B, contienen un archivo deseado por los equipos C y D.
C empieza a descargar el archivo y el equipo D empieza a descargar una vez que el el equipo C ha
descargado 50% del archivo.
Secuencia en un esquema Cliente-Servidor:
1) C hace una petición al Servidor S y S responde afirmativamente.
2) C establece una conexión con el servidor y empieza a descargar el archivo.
3) D hace una petición al Servidor S y S responde afirmativamente.
4) D empieza a descargar el archivo una vez que C ha descargado el 50%.
5) C termina de descargar el archivo y cierra la conexión.
6) D termina de descargar y cierra la conexión.
El problema está en que la velocidad de descarga de C y D decrece mientras ambos están conectados a S
(Paso 4).
Velocidad en C-S
- Suponiendo que:
Hay un servidor y N hosts.
La velocidad de carga del enlace de acceso del servidor es us
Las velocidades de carga y descarga del enlace de acceso del host i son ui y di respectivamente.
El núcleo de Internet tiene un ancho de banda suficiente, y que todos los hosts solo están a esta tarea.
En un esquema C-S el tiempo de distribución de un archivo de F bits DC-S cumple:
ARQUITECTURA PEER TO PEER
En esta sección expondremos las características más importantes de la arquitectura Peer to Peer
● No existe dependencia de servidores que estén siempre activos
● Hay una comunicación directa (arbitraria) entre pares.
● Los pares (hosts) se conectan intermitentemente y deciden lo que comparten en cada momento.
●Los pares no son propiedad del proveedor del servicio.
La arquitectura P2P es auto escalable: cuando un par genera trabajo (solicitando recursos) también añade
capacidad al sistema (proporcionando sus recursos).
EJMPLO P2P
Un servidor S, y dos equipos A y B, contienen un archivo deseado por los equipos C y D.
C empieza a descargar el archivo y el equipo D empieza a descargar una vez que el el equipo C ha
descargado 50% del archivo.
Secuencia en un esquema P2P:
1. C pregunta a todos los pares si tienen el archivo. S, A y B responden afirmativamente.
2. C establece conexión con varios y empieza a descargar una parte del archivo de cada uno
3. D pregunta por el archivo. A, B, C y S responden afirmativamente.
4. D establece una conexión con varios y comienza la descarga.
La velocidad de descarga es más alta debido a las múltiples fuentes.
El protocolo es más complejo, porque, aunque C no tiene el archivo completo puede servir las partes
que ya ha descargado. Además, C y D pueden solicitarse entre sí partes que no tienen.
VELOCIDAD EN P2P
Suponiendo que:
o Hay un servidor y N hosts.
o La velocidad de carga del enlace de acceso del servidor es us.
o Las velocidades de carga y descarga del enlace de acceso del host i son ui y d
respectivamente.
o El núcleo de Internet tiene un ancho de banda suficiente, y que todos los hosts solo están a
esta tarea.
En un esquema P2P el tiempo de distribución DP2P de F cumple:
C-S VS P2P
C-S
n
có iu
rtsb i
id
ed P2
o
p
m
Tei
N - Número de host
TIPOS DE ARQUITECTURAS P2P
Atendiendo a la pureza del protocolo:
Centralizadas: Estas redes dependen de un equipo servidor central que administra el funcionamiento,
ejemplo: Napster, BitTorrent. Pueden considerarse híbridos P2P/Cliente-Servidor.
Descentralizadas: No dependen de un equipo específico, cada nodo contiene información y esta se
comparte, ejemplo: Freenet, eDonkey, TOR, Gnutella. Pueden considerarse P2P puras. Las
búsquedas suelen usar inundación.
Atendiendo a la paridad de los nodos:
Estructuradas: Existen categorías de nodos que permiten un control sobre la estructura de la red,
ejemplo: BitTorrent, eDonkey
Desestructuradas: Las conexiones y la estructura general es arbitraria, ejemplo: Gnutella, TOR
EJEMPLO DE USO DE P2P
Transferencia de Correos: el email se transmite usando una red P2P entre los MTA (Mail Transport
Agents).
Mensajería instantánea (y de voz): La comunicación entre usuarios es P2P. Servicio centralizado:
seguimiento de las IPs de los usuarios. Un usuario registra su IP en un servidor centralizado cuando
se conecta. Un usuario se conecta a un servidor central para encontrar IPs de contactos. Conexión
cliente-cliente directa (no a través del servidor). Ejemplos: Skype, Hangout...
Investigación: Existen varios proyectos que buscan resolver problemas complejos utilizando P2P y
cómputo distribuido. Ejemplo: Seti.
Transferencia de Archivos grandes: Hay muchas organizaciones que alientan a los usuarios a
distribuir sus archivos en redes P2P, tales como distribuciones Linux, fundaciones de software libre,
sistemas abiertos, etc.
Además varios protocolos se apoyan en sistemas P2P para agilizar procesos, así como algunos P2P
se apoyan en redes cliente servidor. Un ejemplo son los protocolos de enrutamiento (usados en
Internet), donde la información sobre las conexiones de los host se intercambia entre cada router
formando una red P2P.
ARQUITECTURA PEER TO PEER
Retos de la arquitectura P2P:
Ancho de banda asimétrico de los ISP.
Su carácter abierto y distribuido complica la seguridad.
Como incentivar a los usuarios para que cedan voluntariamente almacenamiento, capacidad de
computo y ancho de banda.
ÍNDICE PARA LOCALIZAR RECURSOS
Uno de las dificultades en una red P2P es averiguar dónde está un determinado recurso.
Para resolver esta dificultad se suelen utilizar bases de datos compuestas de registros que contienen
entradas clave/valor.
La clave es un identificador del recurso compartido.
El valor es la dirección del par que proporciona ese recurso.
Por ejemplo: (“cancion.mp3”,121.212.34.12)
Las operaciones que se desean sobre dicha base de datos son:
Consultar una clave para obtener los pares relacionados.
Insertar entradas clave/valor.
Idealmente esa base de datos debería estar distribuida.
Distribución aleatoria de la base de datos
Una solución sencilla sería:
Repartir aleatoriamente las entradas clave/valor entre los pares.
Cada par tienen una lista con las IP de todos los otros pares.
Cuando un par necesita un recurso manda un mensaje a todos los demás pares, y estos le contestan
con las entradas clave/valor correspondientes.
Problemas de esta solución:
La lista de pares que todos deben almacenar es muy costosa (almacenarla, mantenerla actualizada…)
Enviar mensaje a todos los pares es muy costoso (inviable).
DHT (DISTRIBUTED HASH TABLE)
DHT distribuye los elementos clave/valor entre los pares usando funciones hash. Una función hash es un
procedimiento que convierte cualquier entrada en un número acotado.
Ejemplo: hash(“cancion.mp3”) = 24566
En las funciones hash la probabilidad de que dos objetos den el mismo número es muy baja.
El mecanismo de distribución consiste en:
Asignar a cada par un identificador entero en el rango [0,2N-1]. Por ejemplo, con N = 32 el rango es
de posibles pares P es [0, ~4x109]
Hacer que cada clave sea también un entero en el mismo rango usando una función hash sobre la
clave original.
Sabiendo el entero que corresponde al recurso buscado, “calculamos” el identificador del par que
tiene el recurso.
¿CÓMO ASIGNAR CLAVES A PARES?
Una regla sencilla consiste en asignar la clave al par con el identificador igual o su inmediato sucesor
(módulo N).
Por ejemplo, supongamos que:
N = 4, entonces las claves se dispersan en el rango [0,15]
Tenemos los pares: 1, 3, 4, 5, 8, 10, 12, 14 Entonces:
Si la clave = 8, el elemento (8,valor) se almacenará en el par 8
Si la clave = 13, el elemento (13,valor) se almacenará en el par 14
Si la clave = 15, el elemento (15,valor) se almacenará en el par 1 Se pueden proponer otras reglas
que permitan que un elemento (clave,valor) esté en varios pares, para posibilitar el funcionamiento
en ausencia de pares.
¿CÓMO ENCUENTRA EL PAR MÁS PRÓXIMO?
Al insertar una pareja (clave, valor) se necesita encontrar el par más próximo. La solución de fuerza bruta
es tener almacenados todos los pares del sistema (el id y su IP correspondiente). Pero esta solución no
escala bien.
DHT CIRCULAR
Cada par sólo controla su inmediato predecesor y sucesor
Se define más cercano como el más cercano al sucesor
Red solapada (Overlay network): red lógica sobre la física
DHT CIRCULAR CON ATAJOS
Cada par tiene la IP de su predecesor, sucesor y atajos.
Cada par le envía un mensaje al vecino con clave más próxima. En el ejemplo se reduce de 6 a 4 mensajes
Está demostrado que si el número de vecinos por par es de log(P) el número de consultas queda O(log P)
ABANDONO DE PARES
Para gestionar el abandono de pares cada par debe conocer la IP de dos sucesores y dos antecesores.
Cada par periódicamente envía un “ping” a dichos sucesores para determinar que siguen conectados.
Ejemplo:
o Par 5 abandona abruptamente
o Par 4 lo detecta
o Par 4 hace al 8 su inmediato sucesor
o Par 4 pide al 8 su inmediato sucesor
o 4 lo hace su segundo sucesor.
¿Qué pasa si el par 13 quiere unirse y solo conoce al 1?
COMUNICACIÓN ENTRE PROCESOS
En esta sección explicaremos qué es un proceso y como pueden establecer comunicación entre ellos
Definiciones
Informalmente, podemos entender que un proceso es un programa que se ejecuta en un host.
o Procesos en un mismo host se comunican usando comunicación inter-proceso (definida por el
S.O.).
o Procesos en diferentes hosts se comunican intercambiando mensajes.
En el contexto de una sesión de comunicación entre 2 procesos:
o El proceso encargado de iniciar la comunicación se denomina Proceso Cliente.
o El proceso que espera hasta que alguien se le conecte se denomina Proceso Servidor.
En las aplicaciones con arquitectura P2P un mismo proceso se puede comportar a veces como cliente
y a veces como servidor.
INTERFAZ ENTRE LOS PROCESOS Y UNA RED
Un socket es la interfaz entre la capa de aplicación y la capa de transporte.
Para enviar un mensaje de un proceso a otro a través de una red hay que utilizar un socket.
El desarrollador tiene control de todos los elementos de la capa de aplicación, pero poco control
sobre elementos de la capa de transporte (como mucho la selección del protocolo, fijar el tamaño
máximo de buffer o de los segmentos).
PROTOCOLOS DE LA CAPA DE APLICACIÓN
El protocolo define:
o Tipo de mensaje intercambiado
o Sintaxis del mensaje
o Semántica del mensaje
o Reglas de cuándo y cómo un proceso envía mensajes y responde a los mismos
Protocolos de dominio público:
o Definidos en RFCs
o Permiten la interoperabilidad
o e.j., HTTP (RFC2616), SMTP (RFC5321), BitTorrent (RFC5694,RFC7574)
Protocolos propietarios:
o e.j., Skype, Spotify, ppstream
SERVICIOS REQUERIDOS POR LAS APLICACIONES
Transferencia fiable
o Aplicaciones que requieren transferencia de datos 100% fiable. Por ejemplo, transferencia de
ficheros (ftp) o terminal remoto (telnet).
o Sino, la aplicación debe ser tolerante a fallos (ejemplos: audio, vídeo)
Temporización (Timing)
o Aplicaciones que requieren bajo retardo para ser efectivas (ejemplos: telefonía por Internet,
juegos interactivos...)
Tasa de transferencia
o Aplicaciones sensibles al ancho de banda: requieren una tasa de transferencia mínima
garantizada (ejemplos: multimedia o VoIP)
o Aplicaciones elásticas: usan la tasa de transferencia disponible Seguridad
o Confidencialidad, integridad, autenticación y no repudio.
Seguridad
o Confidencialidad, integridad, autenticación y no repudio
REQUISITOS DE ALGUNAS APLICACIONES DE RED
SERVICIOS DE TRANSPORTE DE INTERNET (TCP)
El Protocolo de Control de la Transmisión (TCP) es uno de los principales protocolos de Internet.
Aunque TCP se analizará en detalle en el tema 3 (capa de transporte), proporciona ciertos servicios a
la capa de aplicación que pasamos a analizar:
o Orientado a conexión
o Transporte fiable entre procesos
o Control de flujo
o Control de congestión (modificando el flujo)
o No proporciona:
Temporización
Mínima tasa de transferencia
Seguridad
SERVICIOS DE TRANSPORTE DE INTERNET (UDP)
El protocolo de Datagramas de Usuario (UDP) es otro de los principales protocolos de Internet.
UDP se analizará en el tema 3 (capa de transporte), pero proporciona ciertos servicios a la capa de
aplicación que debemos analizar ahora:
o Protocolo ligero y simple
o No orientado a conexión
o Transferencia de datos no fiable entre procesos
o No proporciona:
Control de flujo
Control de congestión
Temporización
Tasa de transferencia mínima
Seguridad
PROTOCOLOS DE ALGUNAS APLICACIONES DE INTERNET
DIRECCIONAMIENTO DE PROCESOS
Para recibir un mensaje se necesita tener un identificador
o Los host tienen una IP única de 32-bit (IPv4)
o Ejercicio: usar ipconfig (Win) / ifconfig (Linux) desde la línea de comandos para obtener la
dirección IP
¿Es la IP de un host donde corre el proceso suficiente para identificar el proceso?
o El identificador incluye además de la IP el número de puerto asociado con el proceso en el
host ● Ejemplos de puertos:
o Servidor HTTP: 80
o Servidor de correo: 25
DIRECCIONAMIENTO DE PROCESOS
PROGRAMACIÓN CON SOCKETS
INTRODUCCIÓN
La programación con sockets tiene por objetivo construir aplicaciones cliente/servidor que se
comuniquen.
Los tipos de aplicaciones de red que se pueden crear son 2:
Implementación de un protocolo estándar (adaptación al RFC)
Aplicaciones propietarias. No sigue ningún RFC, pero proporciona un control absoluto sobre el
código del cliente y el servidor.
Red
Host
Aplicación
-
SOCKET
Un socket es una Interfaz por la que un proceso puede enviar o recibir mensajes de/a otro proceso.
El API de Sockets fue introducida en BSD4.1 UNIX en 1981.
Fue explícitamente creada, usada y lanzada por las aplicaciones de red.
Está basada en el paradigma cliente/servidor Hay 2 tipos de trasporte vía API de sockets:
o UDP
o TCP
PAUTAS GENERALES
El servidor debe estar ejecutando un proceso que tenga un socket abierto antes de que el cliente le
envíe algo.
El cliente necesita conocer la IP y el puerto del servidor. Con ellos crea un socket para poder enviar y
recibir datos (normalmente envía consultas y recibe respuestas).
El socket se identifica localmente con los puertos inicio y final.
Lenguajes para aplicaciones de redes: Java, C/C++, Pascal, Python…
Un flujo (stream) es una secuencia de bytes que entran o salen de un proceso.
o Un flujo de entrada está asociado con una fuente de entrada para el proceso. Por ejemplo:
teclado o socket.
o Un flujo de salida está asociado con una fuente de salida. Por ejemplo: monitor o socket.
TCP
¿Cuándo usar sockets TCP?
Transferencia fiable y en orden de bytes de un proceso a otro.
El cliente debe iniciar el contacto (con el servidor)
El proceso servidor debe estar ejecutándose
El servidor debe tener un socket que permita el contacto (de acogida) El cliente contacta al servidor:
o Creando un socket TCP
o Especificando la IP y el puerto del proceso servidor
o Acuerdo en tres fases: transparente para procesos cliente y servidor
EJEMPLO DE APLICACIÓN CLIENTE SERVIDOR TCP
El Cliente
o El cliente escribe una cadena y la envía a través de un socket al servidor.
o Luego, el cliente se queda esperando la respuesta del servidor.
o Cuando llega, muestra el resultado por la salida estándar.
El Servidor
o El servidor lee una línea de su socket de conexión.
o El servidor pasa la línea a mayúsculas.
o El servidor envía la línea modificada a través de su socket de conexión al cliente.
CLASES DE JAVA UTILIZADAS EN EL EJEMPLO
Clases utilizadas:
o InputStream y OutputStream.- Flujos de bytes de entrada o salida.
o Reader y Writer.- Flujos de caracteres UTF-16 de entrada o salida.
o Socket.- Punto final de la comunicación entre dos máquinas. Tiene métodos que devuelven
un InputStream y un OutputStream.
o ServerSocket.- Genera un socket por cada petición de conexión que acepta. Usada en los
servidores para aceptar múltiples conexiones.
o DataOutputStream.- Para convertir tipos de datos primitivos de Java (char, int…) en un flujo
de bytes de salida.
o InputStreamReader.- Transforma un flujo de bytes (InputStream) en un flujo de caracteres
(reader).
o BufferedReader.- Lee caracteres de un flujo de caracteres (Reader) y los almacena hasta
formar una línea (cuando detecta el fín de línea).
Detalles sobre flujos de caracteres
o La primitva codificación ASCII (American Standard Code for Information Interchange) es
muy limitada pues solo utiliza 7 bits por caracter.
o La codificación UTF-32 (o UNICODE) usa 4 bytes por carácter y permite representar todos
los caracteres que ha inventado la humanidad.
o La codificación UTF-16 usa 2 bytes por carácter para representar un subconjunto de UTF-32
que contiene todos los alfabetos actuales.
o La codificación UTF-8 usa 1 byte por carácter para representar un subconjunto de UTF-16.
Desde UTF-8 y UTF-16 se puede acceder a cualquier código UTF-32 utilizando extensiones.
o Java utiliza UTF-16 en los char y por tanto en los String. Los objetos de Java utilizados en el
ejemplo son: ●
o System.in.- Flujo estándar de bytes de entrada. Normalmente desde teclado y codificado en
UTF-16.
o ●
o System.out.- Flujo estándar de bytes de salida. Normalmente hacia la pantalla y codificado en
UTF-16.
FLUJO DE DATOS EN EL CLIENTE
Cuando llega la respuesta del servidor, muestra el resultado por la salida estándar
Código del cliente (Java)
class TCPCliente {
public static void main(String argv[]) throws Exception
{
//Configuramos los flujos convenientemente
Socket socket = new Socket("192.156.21.21", 6789);
DataOutputStream streamToServer = new
DataOutputStream(socket.getOutputStream());
InputStreamReader streamFromServer=new
InputStreamReader(socket.getInputStream());
BufferedReader serverInput = new BufferedReader(streamFromServer);
//Enviamos el servidor
String sentence = "Mensaje que se desea enviar";
streamToServer.writeBytes(sentence + '\n');
//Esperamos respuesta
String modifiedSentence = serverInput.readLine();
//Cerramos y mostramos resultado
socket.close();
System.out.println("DEL SERVIDOR: " + modifiedSentence);
}
}
FLUJO DE DATOS EN EL SERVIDOR
El servidor lee una línea de su socket de conexión.
La pasa a mayúsculas.
La envía modificada a través de su socket de conexión al cliente.
Código del servidor (Java)
class TCPServidor {
public static void main(String argv[]) throws Exception
{
ServerSocket serverSocket = new ServerSocket(6789);
while(true) {
//Configuramos flujos
Socket socket = serverSocket.accept();
InputStreamReader inputStream = new
InputStreamReader(socket.getInputStream());
BufferedReader input = new BufferedReader(inputStream);
DataOutputStream outputStream = new
DataOutputStream(socket.getOutputStream());
//Leemos, procesamos y enviamos
String sentence = input.readLine();
String newSentence =
sentence.toUpperCase() + '\n';
outputStream.writeBytes(newSentence);
socket.close();
}
}
}
OBSERVACIONES Y PREGUNTAS
El servidor usa un servidor de Sockets.
Cuando el cliente llama al servidor, este crea un socket y completa la conexión TCP.
La IP destino y el puerto no están explícitamente asociados al segmento.
¿Pueden múltiples clientes usar el servidor?
UDP
¿CUÁNDO USAR SOCKETS UDP?
No hay “conexión” entre el cliente y el servidor
No hay fase inicial de negociación
El emisor explícitamente asocia la IP y el puerto de destino a cada paquete
Modelo de servicio es no fiable: se hace el máximo esfuerzo por suministrar el lote de bits al destino
El servidor extrae la IP y el puerto del emisor del datagrama recibido
UDP proporciona transferencia no fiable de grupos de bytes
(“datagramas”) entre cliente y servidor
La terminología oficial para un paquete UDP es “datagrama”, pero también se puede utilizar el término “paquete UDP”
EJEMPLO DE USO DE SOCKETS UDP
El cliente
o Usuario que escribe una línea de texto
o El programa cliente envía la línea al servidor
o Recibe la línea de texto modificada
o La muestra por pantalla
El servidor
o El servidor recibe la línea de texto
o Cambia de mayúsculas a minúsculas
o Envía la línea modificada al cliente
CLASES DE JAVA UTILIZADAS EN EL EJEMPLO
Nuevas clases utilizadas:
o InetAddress.- Dirección IP.
o DatagramPacket.- Mensaje enviado o recibido (datagrama).
o DatagramSocket.- Socket para envío o recepción de datagramas
CÓDIGO DEL CLIENTE (JAVA)
class UDPCliente {public static void main(String args[])
throws Exception {
//Creamos datagrama de salida con el mensaje
InetAddress dirIP = InetAddress.getByName("121.212.122.122");
String sentence = "Mensaje que se desea enviar";
byte[] outBuff = sentence.getBytes();
DatagramPacket outPac = new DatagramPacket(outBuff,outBuff.length,dirIP,9876);
//Creamos el socket y enviamos el datagrama
DatagramSocket socket= new DatagramSocket();
socket.send(outPac);
//Recibimos un datagrama
byte[] inputBuff = new byte[1024];
DatagramPacket inPac = new DatagramPacket(inputBuff, inputBuff.length);
socket.receive(inPac); socket.close();
String newSentence = new String(inPac.getData());
System.out.println("DEL SERVIDOR:" + newSentence);
}
}
CÓDIGO DEL SERVIDOR (JAVA)
class UDPServidor {
public static void main(String args[]) throws
Exception { DatagramSocket socket = new
DatagramSocket(9876); byte[] inBuffer = new
byte[1024];
while(true) {
//Recibe el datagrama
DatagramPacket inPack = new DatagramPacket(inBuffer, inBuffer.length);
socket.receive(inPack);
//Transforma los datos
String frase = new
String(inPack.getData()); String
modifiedSentence = sentence.toUpperCase();
byte[] outBuffer =
modifiedSentence.getBytes();
//Envía el datagrama
InetAddress dirIP =
inPack.getAddress(); int port
= inPack.getPort();
DatagramPacket outPack = new DatagramPacket(outBuffer,outBuffer.length,dirIP,port);
socket.send(outPack);
}
}
- }
OBSERVACIONES Y PREGUNTAS
Tanto el cliente como el servidor usan DatagramSocket
IP destino y puerto se introducen explícitamente en el paquete
¿Puede el cliente enviar un segmento al servidor sin conocer su IP y/o puerto?
¿Pueden n múltiples clientes usar el servidor?
WEB Y HTTP
TERMINOLOGÍA BÁSICA
Una página web está constituida por un fichero base HTML y varios objetos referenciados.
Los objetos referenciados pueden ser binarios (imágenes JPEG, applets Java, ficheros de audio…) o
ASCII (ficheros HTML, código javascript, ficheros css, ficheros XML...)
Cada objeto es direccionable mediante una URL (Uniform Resource Locator).
Ejemplo de URL:
INTRODUCCIÓN AL HTTP
HyperText Transfer Protocol
Protocolo de la capa de aplicación
Modelo cliente/servidor
Protocolo HTTP descrito en las RFCs 1945 y 2616
Utiliza TCP
Sin memoria de estado
HTTP no especifica cómo se muestra lo enviado al cliente. Diferentes navegadores pueden presentarlo
de formas diversas.
HTTP utiliza TCP para conectar clientes y servidores:
El cliente inicia una conexión TCP (crea el socket) con el servidor, puerto 80
El servidor acepta la conexión TCP solicitada por el cliente
Mensajes HTTP: intercambio de mensajes entre el cliente HTTP y el servidor web (HTTP server)
La conexión TCP se cierra
- HTTP no tiene memoria: El servidor no mantiene información de peticiones antiguas del cliente. Las
principales complicaciones de tener memoria serían:
Hay que mantener la historia pasada
Si el servidor/cliente “se cae”, su memoria podría ser inconsistente y necesitaría ser actualizada
TIPOS DE CONEXIONES HTTP
Conexiones HTTP no persistentes
Cada conexión TCP transporta un mensaje de solicitud y uno de respuesta ●
Se envía como máximo un objeto por cada conexión TCP Conexiones HTTP persistentes
Se pueden enviar varios objetos en una sola conexión TCP
Son las implementadas por defecto en HTTP 1.
CONEXIÓN HTTP NO PERSISTENTE
Ejemplo de una consulta a la URL www.urjc.es/home.index que consta de un fichero HTML y 10 imágenes
JPG
HTTP no persistente: Respuesta temporal
RTT (Round-Trip Time): tiempo que tarda un paquete pequeño en viajar del cliente al servidor y
volver.
Click en un hipervínculo: “Acuerdo en tres fases”
o El cliente envía un pequeño segmento TCP al servidor
o El servidor lo reconoce y responde con otro pequeño segmento TCP
o El cliente devuelve un mensaje de reconocimiento al servidor y la solicitud HTML
- En este ejemplo, el proceso abarca un tiempo de 2 x RTT + d transmisión(f)
-
Desventajas
- Las conexiones HTTP no persistentes fueron el mecanismo por defecto hasta HTTP 1.1.
- Los principales problemas de las conexiones HTTP no persistentes son:
o La descarga de cada objeto sufre un retardo de dos RTTs. Si la conexión se mantuviese
solo sería un RTT.
o Abrir y cerrar muchas conexiones TCP tiene un coste (buffers, mantener variables...) que
puede sobrecargar el servidor.
- Para solucionar el problema 1 los navegadores suelen abrir conexiones TCP paralelas (o
concurrentes) para “bajar” los objetos referenciados en paralelo. Pero esto empeora el problema
2.
HTTP CON CONEXIONES PERSISTENTES
- En una conexión HTTP persistente el servidor deja abierta la conexión después del mensaje de
respuesta. Así, los siguientes mensajes HTTP entre el mismo par cliente/servidor se envían sobre
la conexión abierta.
Detalles:
- El cliente envía solicitudes en cuanto encuentra referencias a nuevos objetos, y así sólo se emplea
un RTT de conexión para todos los objetos referenciados.
- El servidor cierra la conexión si no se utiliza durante cierto tiempo.
- Se podrían encadenar múltiples solicitudes sin esperar y luego recibir las respuesta una tras otra
(pipeline).
- Algunos parámetros son configurables en los navegadores (por ejemplo en Firefox y Chrome)
CONEXIONES NO PERSISTENTES VS PERSISTENTES
Pipeline
- El pipeline reduce drásticamente los tiempos de espera.
FORMATO DE LOS MENSAJES HTTP
- Hay dos tipos de mensajes HTTP: solicitud y respuesta
-
-
MÉTODOS DISPONIBLES EN HTTP/1.0
- Los mensaje HTTP de solicitud tiene un formato legible por humanos (ASCII). Los métodos
HTTP 1.0 son:
o GET: es el método más común en solicitudes. El navegador pide el objeto indicado en la
URL. El cuerpo de entidad queda vacío
o POST: el usuario pide un objeto al servidor, pero el contenido depende de lo escrito en un
formulario (datos en el cuerpo de la entidad)
El paso de datos al servidor también se puede implementar con un método GET,
incluyendo los datos del formulario en la URL. Por ejemplo:
www.busqueda.com/animalsearch?mono&platano
No tan importante
o HEAD: es similar a GET. Cuando el servidor recibe un mensaje con HEAD responde con
un mensaje HTTP pero no envía el objeto solicitado (para depuración)
MÉTODOS DISPONIBLES EN HTTP/1.1
HTTP 1.1 añadió los siguientes métodos de solicitud:
o PUT: suele utilizarse con herramientas de publicación web. Permite al usuario o a una
aplicación cargar un objeto en una ruta específica.
o DELETE: permite a un usuario o aplicación borrar un objeto de un servidor web.
FORMATO DE LOS MENSAJES HTTP DE SOLICITUD
Respuesta HTTP: códigos de estado
Algunos códigos de respuesta:
o 200 OK: Solicitud exitosa. Se devuelve la información en el mensaje de respuesta
o 301 Moved Permanently: El objeto solicitado ha sido movido permanentemente. La nueva
localización se especifica en (Location:). El cliente recupera automáticamente el objeto en la
nueva URL.
o 400 Bad Request: La solicitud no ha sido comprendida por el servidor.
o 404 Not Found: El objeto solicitado no existe en el servidor.
o 505 HTTP Version Not Supported
FORMATO DE LOS MENSAJES HTTP DE RESPUESTA
EJEMPLO DE CONEXIÓN HTTP
Evolucion de
internte
Información de cabecera en los navegadores
HTTPS
HTTPS consiste en el uso del protocolo HTTP sobre una conexión encriptada (TLS).
HTTPS se conoce también como HTTP TLS, HTTP SSL o HTTP seguro.
o TLS (Transport Layer Security), y es un protocolo criptográfico que proporciona
confidencialidad, integridad y no repudio.
o SSL (Secure Socket Layer) es un protocolo predecesor de TLS
-
-
- Ejercicios de repaso
Suponga que un navegador solicita una página web a un servidor web al que no estaba conectado.
Esa página es un archivo HTML que hace referencia a 5 objetos muy pequeños almacenados en ese
mismo servidor. Siendo RTT el tiempo de ida y vuelta entre el host local y el servidor que contiene
los objetos, y despreciando los tiempos de transmisión de los objetos: dibuje los diagramas de
comunicación indicando en cada momento qué objetos obtiene el cliente, e indique el tiempo que
transcurre desde que solicita la página hasta que recibe todo en los siguientes casos: a) HTTP no
persistente
HTTP no persistente con 6 conexiones en paralelo
HTTP persistente
HTTP persistente con pipelining con un límite máximo de 3 solicitudes simultáneas
EJERCICIO DE REPASO (CONT)
Suponga ahora que además de a esos 5 objetos, la página hace referencia a otros 2 que se encuentran
en otro servidor distinto (S2). Sea RTT1 el tiempo de ida y vuelta entre el host local y el servidor de
la página (S1), y RTT2 el tiempo de ida y vuelta entre el host y S2.
Despreciando los tiempos de transmisión de los objetos, suponiendo que se pueden abrir conexiones
en paralelo a servidores distintos, y sabiendo que RTT2 < RTT1 <2*RTT2, razone e indique el
tiempo que transcurre desde que solicita la página hasta que recibe todo en los cuatro casos
anteriores.
a) Solución no persistente
-
b) Solución no persistente con 6 conexiones en paralelo
-
c) Solución persistente
-
d) Solución persistente con pipelining
INTERACCIÓN USUARIO-SERVIDOR: COOKIES
Una cookie consiste en:
o Un par nombre-valor con el dato o datos almacenados.
o Una fecha de expiración a partir de la cual la cookie será invalidada (y eliminada).
o El dominio y el path del servidor al cual enviará dicho dato.
Como los servidores HTTP no tienen memoria (stateless) las cookies son un mecanismo que se
utiliza para identificar a los usuarios en sucesivas peticiones HTTP.
- Ejemplo de uso de cookies
Ana accede a Internet y visita Amazon por primera vez, aunque previamente ya había visitado eBay.
Cuando la solicitud HTTP llega al sitio, este crea:
o Un identificador, ID, único
o Una entrada en su base de datos back-end indexada por el ID
- Ana accede a Internet y visita Amazon por primera vez, aunque previamente ya había visitado eBay.
-
-
-
- Dias después Ana accede de nuevo a Amazon usando el mismo ordenador y navegador. Gracias a las
cookies se recuerdan sus datos.
-
-
UTILIDADES DE LA COOKIES
¿Qué pueden hacer?
o Autorización (login automático)
o Recomendaciones (relleno automático de campos)
o Recordar información, mantener una sesión (carros de compra)
o Personalización (anuncios personalizados)
TIPOS DE COOKIES
Según su finalidad:
o Técnicas: para posibilitar la navegación en una página web.
Ejemplo: identificar la sesión, acceder a zonas de acceso restringido o recordar los
elementos que integran un pedido.
o Personalización: permiten al usuario acceder a un servicio con características predefinidas (el
idioma, la configuración regional desde donde accede al servicio, etc.).
o Análisis: aquéllas que permiten el seguimiento y análisis del comportamiento de los usuarios
de los sitios web a los que están vinculadas.
o Publicitarias: aquéllas que permiten la gestión de los espacios publicitarios incluidos en una
página web.
Según la entidad que las gestiona
o Propias: se envían al cliente desde un dominio gestionado por el propio editor y desde el que
se presta el servicio.
o De terceros: aquéllas que se envían al cliente desde un dominio que no es gestionado por el
editor. Por ejemplo, cineEspañol.es puede tener un botón de “Me gusta” que instala una
cookie de Facebook, para que este la lea cuando accedas.
Según el tiempo que permanecen activas:
o De sesión: diseñadas para recabar y almacenar datos mientras el usuario accede a una página
web (por ejemplo, para mantener una lista de la compra).
o Persistentes: los datos se mantienen almacenados minutos u años (periodo definido por el
responsable de la cookie).
CUESTIONES DE INTERÉS
Debido a que permiten almacenar datos del usuario, la ley obliga a avisar del uso de cookies por
parte de un servidor.
Un mal uso de las cookies puede provocar un agujero de seguridad.
Las cookies permiten rastrear los sitios que visita un usuario.
El borrado de cookies en un ordenador impide su uso por terceros.
La navegación privada de los modernos navegadores impide el acceso del navegador al mecanismo
de cookies.
SERVIDORES PROXY HTTP (CACHÉS WEB)
Objetivo: satisfacer solicitudes del cliente sin involucrar al servidor original.
o El usuario configura en el navegador que todo acceso a la web se realice a través del proxy
o El proxy, que entiende el código HTTP, lo analiza y reenvía las solicitudes al servidor.
o Si el objeto solicitado no está en la cache del proxy, lo pide al servidor, y cuando llega se
queda una copia.
o Si el objeto está en la caché del proxy, pide al servidor que se lo envíe solo si ha cambiado.
Esto suele ocurrir en un porcentaje de casos que se denomina Tasa de Acierto.
o Finalmente, el proxy responde al cliente con el objeto solicitado.
TRANSPARENCIA
Obsérvese que el proxy actúa como servidor y como cliente.
El proceso es trasparente para el cliente y para el servidor.
o El cliente cree que habla con el servidor.
o El servidor solo habla con el proxy, creyendo que es el cliente.
Algunos proxy incluyen campos especiales en las cabeceras HTTP con la IP del cliente.
UBICACIÓN DE LAS CACHES
Los navegadores suelen incluir una cache propia.
Los ISP (universidad, empresa,…) suelen instalar proxies.
-
Los CDN (Content Delivery Networks) son clusters de proxies distribuidos geográficamente que se
pueden contratar.
VENTAJAS Y DESVENTAJAS
Ventajas:
o Navegación más rápida.
o Reducción del tráfico (en el enlace de acceso de la institución).
o Control del tráfico (programas espía o malware).
o Navegación anónima (el servidor desconoce al verdadero cliente).
o Navegación segura (si la comunicación con el proxy es segura).
o Navegación desde un país determinado (saltar restricciones).
Desventajas
o Seguridad (un proxy es un man in the midle).
o Es posible que en algunos casos deba acceder a información privada del cliente.
GET CONDICIONAL
El objetivo del get condicional es evitar la transferencia de objetos si el proxy o la cache del host
origen tiene una versión actualizada. Para ello se procede en 2 pasos:
o En la solicitud, se especifica la fecha de la copia que se tiene almacenada mediante la cadena:
“If-modified-since: <date>”
o El servidor no envía el objeto si la fecha de la copia es posterior a la fecha de la última
modificación del original, enviando la cadena: “HTTP/1.0 304 Not Modified”.
El get condicional es utilizado por los proxys, pero también es utilizado por los navegadores en
combinación con las cachés que estos implementan.
EJEMPLO DE USO DE PROXY
Supongamos un escenario en el que:
o El tamaño medio de los objetos es de 1 [Mb]
o El ratio promedio de solicitudes es 15 [sol/s]
o Los mensajes que solo incluyan cabecera se suponen sin retardo.
o El retardo desde la solicitud en el router de Internet y vuelta con el archivo es de 2 [s]
Preguntas:
o ¿Qué retardo pueden tener las descargas de los objetos?
o ¿Qué ocurre al incrementar la velocidad del enlace de acceso a 100 [Mb/s]?
o ¿Qué ocurre al añadir un proxy con una tasa de acierto del 40%?
FTP
En esta sección explicaremos el funcionamiento del protocolo FTP
PROTOCOLO DE TRANSFERENCIA DE FICHEROS FTP
El objetivo de este protocolo es el de posibilitar la transferencia de ficheros hacia/desde un host
remoto.
Sus características son:
o Modelo cliente/servidor
o Descripción del protocolo FTP: RFC 959
o Puerto por defecto del servidor FTP: 21
CONEXIÓN DE CONTROL
La comunicación se inicia cuando el cliente FTP establece una conexión TCP de control con el
servidor FTP por el puerto 21.
Se debe proporcionar usuario y contraseña. Aunque es habitual configurarlo para admitir al usuario
“anonymous”.
Los servidores FTP mantienen el estado de la sesión, que incluye: ●
o Directorio actual.
o Información de autenticación.
El cliente navega por el directorio remoto enviando comandos a través de la conexión de control.
CONEXIÓN SEPARADA PARA DATOS
Cuando el servidor recibe el comando de transferir ficheros, establece una segunda conexión TCP,
para transferir datos. Obsérvese que es el servidor el que abre la conexión.
Por usar conexiones diferente para datos y control se dice que la conexión de control está fuera de
banda (out of band).
Hay dos modos para el tipo de contenido:
o Modo ASCII.
o Modo binario.
Después de transferir un fichero, el servidor cierra la conexión de datos. Si tiene que transferir otro
fichero, el servidor establece otra conexión de datos nueva.
MODO DE CONEXIÓN ACTIVO
En modo activo el servidor inicia conexión con el cliente desde el puerto 20.Ç
-
-
En modo activo el servidor inicia conexión con el cliente desde el puerto 20
-
-
MODO DE CONEXIÓN PASIVO
En modo pasivo es el cliente el que inicia la conexión de datos con el servidor. El servidor abre un
puerto nuevo para la conexión de datos.
-
En modo pasivo es el cliente el que inicia la conexión de datos con el servidor.
SIMILITUDES Y DIFERENCIAS ENTRE FTP Y HTTP
Similitudes:
o Ambos protocolos permiten transferencia de ficheros y se ejecutan sobre TCP.
Diferencias:
o FTP utiliza dos conexiones distintas:
Conexión de Control: envía información entre los dos hosts, como la identificación,
contraseña, comandos para modificar el directorio remoto y, por supuesto, introducir
(PUT) y extraer (GET) ficheros.
Conexión de Datos: envía un único fichero de datos.
HTTP envía la información de cabecera de solicitud y respuesta por la misma conexión TCP que
transfiere el archivo (en banda), mientras que FTP envía la información de control fuera de banda.
El servidor FTP tiene que mantener el estado.
COMANDOS FTP Y RESPUESTAS
Como en HTTP, los comandos (C→S) y las respuestas (S→C) se envían legibles por la conexión de
control en ASCII.
Cada comando va en una línea y consta de cuatro caracteres ASCII y argumentos opcionales.
Cada comando tiene una respuesta de tres dígitos con un mensaje opcional.
Comandos:
o USER username
o PASS password
o LIST: lista todos los ficheros del directorio actual
o RETR filename: extrae el fichero del directorio actual
o STOR filename: almacena un fichero en el host remoto en el directorio actual
Respuestas:
o 331 Username OK, password required
o 125 data connection already open; transfer starting
o 425 Can’t open data connection
o 452 Error writing file
Ejemplo de sesión FTP
Uso de FTP en la actualidad
Hoy día el uso de FTP está desaconsejado debido a los siguientes problemas que plantea:
o Todas las transmisiones se realizan sin cifrado (incluido el nombre de usuario y la
contraseña).
o El modo activo, que implica apertura de puertos aleatorios en el cliente, no suele estar
permitido tras un firewall.
Es por ello que normalmente se recomienda el uso de alternativas seguras (como SFTP o FTPS) o
incluso directamente HTTP o HTTPS.
Los pocos servidores que mantienen FTP suelen limitarse a redes locales (sin acceso desde el
exterior) o a servidores públicos con acceso anónimo (donde no es necesario enviar usuarios o
claves).
CORREO ELECTRÓNICO (SMTP, POP3, IMAP)
ELEMENTOS FUNDAMENTALES
Cliente de correo (o agente de usuario) POP3
o Software que permite componer, editar, leer y enviar mensajes de correo electrónico. Por
ejemplo: Outlook, Thunderbird...
Servidor de Correo hotmail.com
o Software que contiene los mensajes entrantes de un usuario (buzón o mailbox), y la cola de
mensajes salientes (listos para ser enviados).
Protocolos
o SMTP.- Protocolo usado entre servidores de correo. Tiene parte cliente (que envía el correo)
y parte servidora (que lo recibe).
o POP3 e IMAP.- Protocolos usados para acceder al correo.
EJEMPLO DE ENVÍO DE CORREO
1. Alicia usa un agente de correo para componer un correo electrónico y enviarlo a
[email protected]-
2. El agente de correo de Alicia envía el mensaje a su servidor de correo (se almacena en la cola)
-
3. El lado cliente del servidor SMTP de Alicia abre una conexión TCP con el lado servidor SMTP de
Bob y envía el mensaje de Alicia
-
4. El servidor de correo de Bob almacena el mensaje en su buzón
-
5. Bob invoca a su agente de correo para leerlo cuando quiera
EL PROTOCOLO SMTP (SIMPLE MAIL TRANSFER PROTOCOL)
Usa TCP para transferencia fiable de correo desde el cliente al servidor en el puerto 25.
SMTP envía cada correo mediante una transferencia directa del servidor emisor al servidor receptor.
SMTP realiza la transferencia de correos en tres fases: ●
o El cliente especifica el correo-e del emisor y del destinatario.
o Una vez reconocido, el servidor envía el mensaje.
o El cliente repite este proceso para el resto de mensajes. En caso contrario cierra la conexión.
SMTP se basa en un flujo de comandos y respuestas:
o Los comandos se envían en ASCII.
o Las respuestas incluyen un código de estado y una frase explicativa.
DETALLE OBSOLETO DE SMTP
SMTP resquiere que tanto el cuerpo como la cabecera del mensaje use una codificación en ASCII
puro (de 7 bits). Por ello, los datos binarios de archivos multimedia deben codificarse a ASCII antes
de ser enviados por SMTP y luego deben ser decodificados.
SMTP tiene esta restricción porque es un protocolo que se creó hace 30 años. HTTP no tiene esta
restricción de codificación y puede transmitir cualquier binario.
Para solventar esta y otras limitaciones aparece MIME (MultiPurpose Internet Mail Extensions). En
particular MIME incluye la codificación “quoted-printable” que codifica en ASCII puro diferentes
juegos de caracteres.
COMANDOS SMTP
SMTP permite la introducción de los siguiente comandos en texto ASCII:
HELO nombre Inicia el diálogo (HELO es una abreviatura de HELLO).
MAIL FROM <[email protected]> Identifica al emisor.
RCPT TO <[email protected]> Identifica al receptor.
DATA Tras este comando se introduce el texto del mensaje. Para terminar hay que introducir una
línea que solo tenga un punto.
QUIT Termina la conexión con el servidor SMTP.
FORMATOS DE LOS MENSAJES DE CORREO
Tras el comando DATA el texto ASCII que aparece es el mensaje. Dicho texto utiliza un formato
estándar que permite detallar: el asunto, el remitente y el destinatario. Este formato está descrito en el
RFC 5322.
El formato está compuesto de las siguientes cadenas:
o To:
o From:
o Subject:
Tras el subject se debe dejar una línea en blanco y tras ella se puede escribir el cuerpo del mensaje.
Estas cadenas no son comandos SMTP, sino un formato del mensaje que luego utilizarán los agentes
de usuario para mostrar los correos correctamente.
EJEMPLO DE SESIÓN SMTP
Insertando directamente en tu buzón de correo un mensaje
> telnet smtp.servidor.es 25
220 alumnos.urjc.es
> HELO localhost
250 Hello localhost, pleased to meet you
> MAIL FROM: <
[email protected]>
250
[email protected]... Sender ok
> RCPT TO: <
[email protected]>
250
[email protected] ... Recipient ok
> DATA
354 Enter mail, end with "." on a line by itself
> Subject: Peticion de fotos
>
> Hola, podrías enviarme las fotos de las vacaciones.
> Un saludo.
>.
250 Message accepted for delivery ´
> QUIT
EJEMPLO DE SESIÓN SMTP
Hoy día, debido a las restriccciones de seguridad, para intentar una conexión SMTP manualmente y
enviar un correo es necesario:
o Disponer de una cuenta en un servicio de correo.
o Codificar en base 64 (RFC 4648)el usuario y la contraseña.
o Disponer de la aplicación OpenSSL para iniciar una comunicación segura con el servidor
SMTP.
Las siguientes líneas se podrían usar para acceder al servidor SMTP de Gmail desde un sistema
Linux:
> perl -MMIME::Base64 -e'print encode_base64("\000ana\@gmail.com\000contraseña")'
AHVzdWFyaW9AZ21haWwuY29tAGNvbnRyYXNlw7Fh
> openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
...
> HELO localhost
250 smtp.gmail.com at your service
> AUTH PLAIN AHVzdWFyaW9AZ21haWwuY29tAGNvbnRyYXNlw7Fh
235 2.7.0 Accepted
> MAIL FROM: <
[email protected]>
...
COMPARANDO SMTP CON HTTP
Semejanzas
o Ambos transfieren ficheros entre máquinas
o Tanto HTTP (persistente) como SMTP utilizan conexiones permanentes
o Ambos tienen interacción ASCII comando/respuesta y códigos de estado
Diferencias
o SMTP requiere que los mensajes (cabecera y cuerpo) estén codificados en ASCII de 7 bits
o Los servidores SMTP utilizan CRLF.CRLF para determinar el final de los mensajes
o HTTP es un protocolo de tipo pull, mientras SMTP es de tipo push
o En HTTP cada objeto se encapsula en el propio mensaje de respuesta, pero en SMTP
múltiples objetos se envían en un único mensaje
POST OFFICE PROTOCOL - VERSION 3 (POP3)
El protocolo POP3 está detallado en el RFC 1939. POP3 consta de 3 fases:
o Autorización (agente / servidor)
o Descarga
o Actualización
Así, es habitual un esquema de conectar, descargar y borrar.
POP3 no tiene memoria entre sesiones. Durante la sesión solo mantiene información de los mensajes
marcados para ser borrados.
FASE DE AUTORIZACIÓN
En esta fase los posibles comandos del cliente son: ●
user: nombre de usuario ● pass: contraseña
Y las posibles respuestas del servidor son:
+OK
-ERR
- S: +OK POP3 server ready
- C: user bob
- S: +OK
- C: pass hungry
- S: +OK user successfully logged on
FASE DE TRANSACCIÓN Y ACTUALIZACIÓN
En estas fases los posibles comandos del cliente son:
o List
o retr <numero>
o dele <número>
o quit
- C: list
- S: 1 498
- S: 2 912
- S: .
- C: retr 1
- S: <message 1 contents>
- S: .
- C: dele 1
- C: retr 2
- S: <message 2 contents>
- S: .
- C: dele 2
- C: quit
- S: +OK POP3 server signing off
INTERNET MESSAGE ACCESS PROTOCOL
IMAP es un protocolo cliente /servidor que te permite recibir los correos de tu servidor de correo.
Por defecto IMAP:
o Deja los mensajes en el servidor de correo.
o Muestra solo las cabeceras y los emisores de los mensajes. Solo ve el cuerpo de los mensajes
cuando decide descargarlo.
Para organizar los correos, IMAP permite manipular carpetas en el servidor. Por ello se dice que
IMAP tiene memoria entre sesiones.
EJEMPLO DE CONFIGURACIÓN EN OUTLOOK
CORREO ELECTRÓNICO WEB
A medidados de los 90 Hotmail introdujo el acceso basado en Web.
Hoy día Yahoo, Google, empresas y otros organismos ofrecen servicios parecidos.
En estos servicios, el agente de usuario es una aplicación web que se ejcuta en un servidor.
La comunicación de un usuario con su servidor de correo usa HTTP, pero la comunicación del
servidor con otros servidores sigue siendo SMTP.
DNS
En esta sección explicaremos el funcionamiento del protocolo DNS
TLD -> .ES
autoritativos
SISTEMA DE NOMBRE DE DOMINIOS (DNS)
El Sistema de Nombres de Dominio (DNS) es un sistema de nomenclatura jerárquica para
computadoras, servicios o cualquier recurso conectado a Internet o a una red privada.
EL DNS también especifica la funcionalidad del servicio de bases de datos distribuidas necesario
para construir un servicio tolerante a fallos e independiente de algún servidor central.
Su función más importante es traducir identificadores textuales (fáciles de manejar y recordar) en
identificadores numéricos asociados con los equipos conectados a la red, con el propósito de poder
localizar y direccionar estos equipos mundialmente.
Una dirección IP v4 es un número entero de 32 bits que se suele representar mediante los 4 enteros
que corresponden a los bytes que lo forman. Por ejemplo: 87.248.122.122
SERVICIOS PROPORCIONADOS POR EL DNS
Los servidores de DNS proporcionan de manera transparente al usuario los siguientes servicios:
Traducción del nombre canónico del host a dirección IP
Por ejemplo: www.urjc.es → 212.128.240.50
Alias de un hosts.- Un host con un nombre canónico puede tener un alias o más.
Alias del servidor de correo.- En los servidores de correo es especialmente interesante el uso de un
alias simple.
Distribución de la carga.- El DNS facilita disponer de un conjunto de direcciones IP para un único
nombre canónico, de manera que se puedan ir rotando la IP devuelta a cada traducción para distribuir
la carga.
ESTRUCTURA DEL DNS
En el diseño del DNS se ha evitado el uso de un servidor centralizado porque escalaría mal debido a
que:
o Habría un único punto de fallo para toda Internet.
o Tendría gran volumen de tráfico al gestionar todas las consultas.
o Habría gran distancia a la BD centralizada.
o Sería difícil el mantenimiento de una BD tan grande.
Un servidor de DNS suele ser una máquina Unix que ejecutan el programa BIND sobre UDP
utilizando el puerto 53.
La jerarquía de servidores DNS se estructura en:
o Servidores raíz.
o Servidores Top-Level Domain (TLD).
o Servidores autoritativos.
BD DISTRIBUÍDA Y JERÁRQUICA
SERVIDORES DNS RAÍZ
Los servidores raíz son un conjunto de cientos de servidores (en 2020 hay 1091) repartidos por el
mundo. Estos servidores están configurados como 13 autoridades de nombres (etiquetadas de la “a” a
la “m”).
Cada servidor raíz conoce todos los servidores TLD mediante un fichero publicado por la ICANN
(Internet Corporation for Assigned Names and Numbers) y controlado por el Departamento de
Comercio de EEUU.
SERVIDORES TLD
Los TLD son responsable de:
o Los dominios genéricos: .com, .org, .net, .info...
o Los dominios de países: .es, .uk, .fr, .ca, .jp…
o Los dominios
patrocinados: .edu, .gov, .int, .aero, .asia, .cat, .jobs, .musuem, .abogados, .madrid, .xxx, .post
...
Los TLD son designados por la Internet Corporation for Assigned Names and Numbers (ICANN)
En Febrero de 2020 había 1516 TLD.
Servidores autoritativos
Las organizaciones propietarias de hosts que requieran visibilidad (como los servidores web y los
servidores de correo) deben proporcionar registros DNS accesibles públicamente que establezcan las
correspondencias de las IP con sus equipos,
Estos servidores DNS se denominan autoritativos y son mantenidos por las propias organizaciones o
por proveedores externos.
o La mayoría de las universidades y empresas de gran tamaño implementan y mantienen sus
propios servidores DNS.
o Particulares y pymes suelen utilizar proveedores externos.
SERVIDORES LOCALES
Aunque son muy importantes, los servidores locales no pertenecen a la jerarquía DNS.
Cada ISP (universidad, empresa, departamento…) tiene un DNS local (o servidor de nombres
predeterminado).
Cuando un host se conecta a un ISP se suele configurar con servidores de DNS locales.
El servidor de DNS local actúa como un proxy (devuelve la IP si ya la tiene y si no, envía la petición
a la jerarquía de servidores DNS).
Ejemplo de resolución de nombres
Pasos cuando un host que está en urjc.es desea conocer la IP de www.nasa.gov:
-
1. El S.O. responde que no lo tiene en caché.
-
2. Se solicita al servidor de DNS local.
-
3. El DNS local no lo encuentra en su caché y traslada la consulta de manera recursiva al DNS raíz.
-
4. El DNS raíz responde con la IP del servidor TLD correspondiente a .gov.
-
5. Ahora el servidor local envía una consulta al servidor TLD.
-
6. El servidor TLD responde con la dirección del servidor autoritativo.
-
7. El servidor DNS local consulta esta vez al autoritativo.
-
8. El servidor autoritativo contesta con la IP deseada.
-
9. Finalmente, el servidor DNS local envía la IP solicitada al equipo solicitante.
-
10. El equipo solicitante ya conoce la IP de www.nasa.gov
ALMACENAMIENTO EN CACHÉ DNS
Los servidores DNS almacenan las correspondencias (nombre, IP) que consiguen para reducir
retardos y mensajes DNS en la red.
Descartan esa información de la caché después de un tiempo máximo (días).
Servidores TLD están habitualmente en las cachés de los DNS locales.
Los servidores raíz no son muy visitados.
Mecanismos de actualización/notificación mecanismos bajo diseño (IETF RFC 2136).
REGISTROS DNS
Los servidores de DNS almacenan registros de recursos (resource records, RR) con el siguiente
formato: (Nombre, valor, tipo, tiempo de vida (ttl))
El significado de nombre y valor dependen del tipo:
Tipo Nombre Valor Ejemplo
A Host IP (ser5.ibm.com , 122.2.3.21 , A)
Nombre de un DNS autoritativo que
NS Dominio (ibm.com , dns.ibm.com , NS)
conoce el dominio
CNAME Alias Nombre canónico (www.ibm.com , ser5.ibm.com , CNAME)
Nombre canónico de un servidor de
MX Alias (ibm.com , ser5.ibm.com , MX)
correo
MENSAJES DNS
El protocolo DNS tiene 2 tipos de mensajes:
consulta y respuesta. Pero solo hay un
formato para los dos tipos de mensajes.
La cabecera del mensaje está compuesta de:
o Un número de identificación de 16 bits.
o Un conjunto de flags (1 bit) para:
Distinguir preguntas de
respuestas.
Solicitar recursión.
Mostrar si el servidor soporta
recursión.
Indicar si la respuesta viene de un
autoritativo.
o El número de registros en los 4 tipos de
secciones.
El resto de campos incluye:
1. En las consultas, el nombre a consultar y el tipo de consulta (A, CNAME, MX…).
2. Las respuestas RR asociados a la consulta.
3. Las respuestas RR de los DNS autoritativos.
4. Otros RR útiles como información adicional. Por ejemplo, si se pregunta por la dirección
canónica de un servidor de correo, puede que te devuelvan también su IP.
EJEMPLO DE NSLOOKUP
La aplicación nslookup permite interrogar los servidores de DNS de manera interactiva desde la
consola de comandos.
El siguiente ejemplo muestra la acción por defecto: consultar la IP de un host destino.
EJEMPLO DE REGISTRO DE NOMBRE
Supongamos que se crea la empresa “Network Utopia”. Los pasos para registrar el nombre
networkutopia.com serían:
Dirigirse a un registrador DNS (por ejemplo, Two&Two).
o El registrador verifica la unicidad del nombre.
o Proporcionar nombre e IP de servidores de nombres autoritativos (primario dns1.2and2.com
y secundario dns2.2and2.com).
o El registrador inserta dos RRs en el servidor TLD .com:
(networkutopia.com, dns1.2and2.com, NS)
(dns1.2and2.com, 212.212.212.1, A)
o Crea dos RR en los dos DNS autoritativos:
Tipo A para www.networkuptopia.com
Tipo MX para mail.networkutopia.com
EJEMPLO DE REGISTRO DE NOMBRE CON SERVIDORES DNS CONTRATADOS
TEMA 3 CAPA DE TRANSPORTE