Los sistemas finales están en el extremo de la red y ejecutan aplicaciones. Podemos distinguir el modo cliente-servidor donde los hosts clientes solicitan servicios y los reciben de un programa servidor, el host servidor ofrece un servicio y suele ser un sistema más potente. En el modo peer to peer (P2P) los sistemas ejecutan programas que hacen de host cliente y de host servidor.
Medio Físico
- Cable coaxial: Dos conductores de cobre concéntricos, bidireccionales con banda estrecha en un único canal y banda ancha donde hay múltiples canales sobre el cable.
- Cable de fibra óptica: Compuesto de fibra de vidrio que transporta pulsos de luz. Cada pulso es un bit, la velocidad es su característica importante ya que se transmite de punto a punto a altas velocidades y hay bajas tasas de errores.
- Radio: Es una señal transportada sobre el espectro electromagnético, no existe conductor, la comunicación es bidireccional y tiene efectos debido al entorno como reflexiones, interferencias, obstáculos que interfieren la comunicación. Ej: microondas terrestre, largo alcance, satélite, largo alcance, corto alcance.
Conmutación de Paquetes
Método que permite transportar los datos mediante un canal compartido donde la información se trocea. Los datos son almacenados y reenviados por lo que cada paquete se recibe, se procesa y se reenvía. Por lo que en la llegada del primer paquete es el primero que sale, por tanto, hay un retardo de espera. El retardo crece rápido con la carga de tráfico y puede ocasionar que las colas se llenen y se desborden y conlleva al descarte de paquetes (congestión).
Conmutación de Circuitos
Es un método donde la comunicación dispone de recursos reservados extremo a extremo, tiene una calidad constante y requiere una fase de establecimiento antes de empezar a trabajar. En un enlace un circuito se puede repartir mediante multiplexación por división de frecuencia o por multiplexación por división en el tiempo. En el primero se reparte la capacidad espectral y en el segundo el tiempo. En los periodos de inactividad o los circuitos no asignados estos quedan inservibles.
Conmutación de paquetes:
- Ventajas: Asignación dinámica (el canal solo se ocupa si se necesita), no hay bloqueo, más flexible (caminos alternativos para los paquetes).
- Inconvenientes: Congestión (aumenta el retardo), retardos por el tamaño del paquete y carga en la red, pérdidas parciales y reordenamiento de paquetes.
Conmutación de circuitos:
- Ventajas: Solo hay retardos de transmisión y propagación, sin espera en colas por lo que no hay congestión y garantiza calidad en el servicio.
- Inconvenientes: Existe retardo en espera (tiempo de establecimiento del circuito), hay periodos de inactividad donde el recurso está inutilizado, puede haber bloqueos o rechazo en la comunicación ya que el nº de recursos es finito, no tiene buffer de almacenamiento e interactúan de manera directa entre sistemas finales.
Arquitecturas de Aplicación de Red
- Arquitectura cliente-servidor: En esta arquitectura el host servidor está siempre activo y tiene una dirección IP fija y conocida para facilitar la comunicación. Para evitar los desbordamientos de solicitudes en un servidor, se hacen centros de datos donde se agrupan los host que crean servidores virtuales con grandes capacidades. Los clientes no tienen por qué estar siempre activos y se comunican directamente con el servidor. Su IP es dinámica.
- Arquitectura PEER-TO-PEER: No hay dependencia de servidores. La comunicación es directa entre hosts conectados de manera intermitente. Es una arquitectura auto-escalable permitiendo ser cliente servidor al mismo tiempo, no dispone de infraestructura ni ancho de banda por lo que los costes se reducen, es difícil de gestionar y al ser descentralizado crea problemas como en la seguridad y rendimiento.
- Arquitectura híbrida: Se combinan elementos de las dos anteriores.
Servicios de Transporte para las Aplicaciones de Red
- Fiabilidad: Si un protocolo proporciona un servicio de entrega de datos garantizado, se dice que proporciona una transferencia de datos fiable.
- Tasa de transferencia: Es la tasa a la que el proceso emisor puede suministrar bits al proceso receptor. Tiene que ver con el ancho de banda ya que algunas aplicaciones son sensibles a esta característica.
- Temporización: Un protocolo puede dar garantías de que la información llegará en menos de x tiempo: Esto es necesario para aplicaciones en tiempo real.
- Seguridad: Un protocolo puede dar servicios como la seguridad, la confidencialidad, integridad, autenticidad.
Sistema de Nombres de Dominio (DNS)
Sistema que permite almacenar las correspondencias entre dirección IP y nombres de dominio y se va a emplear para consultar la base de datos distribuida. Está sobre UDP y el servidor espera conexiones en el puerto 53.
Servicios DNS
Traducciones de nombre de dominio a direcciones IP aunque también proporciona alias para esas máquinas o a servidores de correo y ayuda a la distribución de carga haciendo corresponder un único nombre con varias direcciones IP y todo esto de forma transparente al usuario y de forma centralizada. Si fuera centralizado habrá el problema de un único fallo con gran volumen de tráfico, problemas de distancias a un único nodo y de mantenimiento.
DNS está estructurado jerárquicamente por tanto si un cliente quiere acceder a un servidor autoritativo para obtener la IP de www.urjc.es primero la pide al servidor raíz y la IP del servidor TLD, el servidor TLD devuelve la IP del servidor autoritario y por último el servidor autoritario devuelve la IP que queríamos. Por tanto, tenemos tres clases de servidores: Servidor DNS raíz, Servidor TLD (.com.org.es) y servidores DNS autoritativos. Los servidores locales no pertenecen a la jerarquía de servidores, estos actúan cuando el host realiza una consulta DNS, que pasará primero por el servidor local el cual actúa de proxy y reenvía la consulta a la jerarquía de servidores.
Consultas DNS
Pueden ser de manera ITERATIVAS, en el que host utiliza al DNS local para hacer la consulta a los demás servidores, reduciendo la carga de trabajo de los servidores DNS, de manera RECURSIVA en el que el host pide al DNS raíz que haga toda la consulta por él y así sucesivamente, pero no conviene porque cargaría en exceso a los servidores raíz y TLD, de manera local dispone del recurso solicitado en caché o es autorizado. Consultas inversas: traducción inversa, traducción de la IP a nombre de dominio.
Caché DNS
Funcionalidad muy importante para mejorar el rendimiento del DNS donde se hacen copias temporales en memoria caché lo que permite reducir los retardos, el número de mensajes, menor tráfico DNS en la red, menor carga de trabajo en los servidores. Las copias en caché DNS deben tener un tiempo de vida limitado.
Protocolo HTTP
Es un protocolo de transferencia de recursos y se encuentra en el corazón de la web. Este protocolo se usa para la transferencia de recursos (jpeg, html…). Utiliza un modelo cliente servidor y funciona en base a petición-respuesta, es decir, el cliente solicita objetos y el servidor se los transfiere. Es un protocolo sin estado y no conectivo, es decir, que el servidor no guarda información del cliente ni de los mensajes intercambiados. Todas las transacciones HTTP requieren conexión TCP. Procedimiento: cliente solicita conexión con el puerto 80 del servidor, servidor acepta conexión del cliente, servidor acepta conexión del cliente, navegador y servidor intercambian mensajes HTTP, se cierra la conexión TCP.
Conexiones No Persistentes
En estas conexiones se abre una conexión TCP para cada objeto y cuando se ha enviado y recibido se cierra la conexión TCP, aunque queden más objetos. Podemos distinguir el modo serie (1 conexión TCP en cada momento) y paralelo (varias conexiones TCP abiertas a la vez) à T(seg)= N*(2RTT+dtrans) RTT=dprop+dcola+dproc
Conexiones Persistentes
En esta conexión se envían todos los objetos por la misma conexión TCP luego solo es necesario un RTT en el establecimiento de la conexión. Lo distinguimos en el modo con canalización (con pipelining) admite varias transacciones HTTP a la vez: procesamiento en cadena y sin canalización solo una transacción a la vez, es decir, un 1RTT por objeto. T (sec)=RTT+N (RTT+dtrans)
Métodos HTTP
Cuatro de los métodos más significativos de HTTP:
- GET: Para descargar página/objeto (obtener información).
- POST: Para descargar objeto (enviar información).
- HEAD: Similar a GET, pero para descargar sólo el encabezado de la página/objeto.
- PUT: Para cargar nueva página/objeto.
Códigos de Estado HTTP
- 1xx: Información, respuesta provisional (100–199).
- 2xx: Éxito en la resolución de la solicitud (200-299).
- 3xx: Redirigir solicitud, necesarias más acciones (300-399).
- 4xx: Error del cliente (400-499).
- 5xx: Error del servidor (500-599).
Mecanismos para Identificar Usuarios
- Cookies: Permiten a los sitios seguir la pista de los usuarios. Es el mecanismo más genérico, pero, de alguna manera, viola la privacidad del usuario. Cuando un usuario accede por primera vez a un sitio web con cookies, el servidor crea un ID único para el usuario y una entrada indexada en su base de datos, así que cada vez que quiera navegar por un sitio web este primero consulta al fichero de cookies.
- Autorización: Es un mecanismo que se basa en la autentificación de usuario en una página web mediante un usuario y contraseña. Esta autentificación puede ser requerida en cada solicitud nueva de la página web o una única vez si se le asocia una cookie donde sus credenciales son guardadas en la caché.
Caché Web
Es un procedimiento para mejorar las prestaciones del servicio web y permite reducir el tiempo para obtener un objeto, el tráfico en la red y la carga de trabajo del servidor web. Esto se almacena en una memoria temporal, en el cliente lo gestiona el navegador y en un servidor de red funciona como proxy. Funcionamiento: el cliente solicita una HTTP al caché web quien si tiene una copia del objeto solicitado, y la envía al cliente; pero si no tiene una copia, se la solicita al servidor de origen de dicho objeto. Una vez la caché web ha recibido el objeto hace una copia de él para guardársela y luego envía al cliente el objeto que solicitó. La caché web puede funcionar como servidor proxy para uso compartido, distribuir contenido y control de acceso. Tiene un severo problema si es que si un objeto se actualiza o se modifica en el servidor, la copia en caché no es válida por lo que recurrimos a get condicional.
Get Condicional
Es un mecanismo de HTTP que permite a la caché comprobar si sus objetos están actualizados. Un mensaje get condicional lleva siempre una cabecera que informa la fecha y hora de creación o actualización que tiene guardado en la caché. Cuando un cliente solicita un objeto a la caché, esta primero pregunta al servidor si el objeto que le piden ha sido actualizado. Si no ha sido modificado el servidor le responde con el mensaje 304 Not modified y el cuerpo del mensaje vacío, y la caché envió su copia del objeto al cliente. Si ha sido modificado 200 ok y el cuerpo del mensaje incluye el objeto solicitado, y la caché hace una copia y reenvía el objeto al cliente.
Proxy: Caché web para uso compartido à Servidor proxy: satisface solicitudes HTTP en nombre de servidores Web. Tienen doble funcionalidad: De cara al cliente web actúa como servidor web y de cara al servidor web actúa como cliente web. Almacenan en disco copias de objetos recientes solicitados por clientes y utilizado como mecanismo para distribución de contenidos y control de acceso.
Correo Electrónico
Está compuesto de agente de usuario (interfaz usuario y sistema correo), servidores de correo (distinguimos el almacenamiento de mensajes, las colas de salida y el software de comunicación) y el protocolo de correo para la trasferencia de mensajes o de acceso al correo.
Procesos para el Envío de Correo
Existen dos procesos para el envío de correo. El primero desarrollado por el UA, en el que elabora el mensaje e introduce las cabeceras para su posterior transferencia al MTA y el segundo desarrollado por el MTA que encapsula el mensaje en un sobre electrónico para su posterior trasferencia dentro del sobre a través de internet a otra MTA.
- UA cliente convierte el mensaje a ASCII de 7bit.
- UA servidor deja el mensaje en la cola de mensajes salientes del servidor de correo a MTA cliente testea si hay mensajes en cola, y si los hay los intenta enviar, (se obtiene IP del servidor establece conexión TCP).
- MTA servidor comprueba destinatario en caso positivo acepta recibir mensajes.
Protocolo SMTP
Es un protocolo para el correo electrónico se basa en el modelo cliente-servidor, utiliza la conexión TCP persistente y se encarga de transferir mensajes desde los servidores de correo emisores a los servidores de correo receptores. En los mensajes de SMTP, el cliente envía comandos en modo texto mientras que el servidor responde con códigos de estado y todo esto en ASCII de 7 bits. En este protocolo se distinguen 4 fases: Presentación (estable conexión TCP entre cliente y servidor), negociación (Cliente especifica la dirección de correo del emisor y destinatario), transferencia (Se envía el mensaje) y despedida (Cierre de conexión TCP).
Correo Web (Webmail)
Utiliza el protocolo HTTP para transferir mensajes entre UA y servidor de correo. Podemos acceder desde cualquier dispositivo conectado a internet aunque el envío y la recepción puede ser lenta. Por lo que es mejor utilizar un UA de correo convencional.
Pope es un protocolo de acceso al correo que se basa en el modelo cliente servidor y que se inicia cuando el cliente establece una conexión TCP en el puerto 110 del servidor de correos. Consta de 3 fases: autorización (el UA envía nombre y contraseña usuario), transacción (el UA recupera los mensajes), actualización (Se cierra el protocolo). POPE tiene dos modos de trabajo, descargar y borrar, descargar y conservar. Almacena mensajes en el sistema de usuario para su posterior procesamiento y se desconecta del servidor. Es apropiado para usuarios que acceden al correo desde una misma máquina y consume pocos recursos. Los mensajes pope tienen la fase de solicitud (fase actualización y fase Transacción), respuesta y fase de actualización.
IMAP es un protocolo de acceso al correo basado en el modo cliente-servidor y que se inicia cuando el cliente establece una conexión TCP en el puerto 143, mantiene información de estado y es más complejo que POPE y a diferencia de este IMAP nos permite crear carpetas en nuestros servidores de correo, pudiendo colocar los mensajes que recibimos en diferentes carpetas para una mejor organización del usuario. También nos ofrece la posibilidad de hacer una búsqueda de un parámetro con el fin de encontrar aquel mensaje que lo contiene.
Formas de Acceso al Correo con IMAP
- Acceso offline: Similar a pope, minimiza recursos, tiempo de conexión y cuando el ancho de banda es pequeño es útil.
- Acceso Online: Hay interacción entre cliente y servidor de correo donde se requiere una conexión abierta con el servidor para leer el correo y se queda una copia temporal de los mensajes en el servidor.
- Acceso Desconocido: Procesamiento de correo Offline no requiere conexión abierta con el servidor para leer el correo, los mensajes quedan temporalmente en la caché del cliente y se actualizan en la próxima conexión con el servidor de correo y por último se almacenan en el servidor.
Relación entre Capa de Red y Capa de Transporte
Son las operaciones de multiplexación, que es la tarea de reunir los fragmentos en el host de origen desde los distintos sockets, encapsulando cada fragmento de datos con la información de cabecera para crear los segmentos y pasarlos a la capa de red, desmultiplexación que es la entrega de los datos contenidos en un segmento de la capa de transporte al socket correcto. Para saber a qué socket va cada segmento hay que ver si ID único. En un socket UDP se mira la IP y puerto de destino. En un socket TCP se mira además la IP y puerto de origen. M y D sin conexión: cuando un host recibe un segmento UDP comprueba el nº de puerto destino y da sus datos al socket con el nº de puerto indicado. El puerto origen nos proporciona una dirección de retorno por si mi host quisiera responder al emisor. M y D orientadas a la conexión: cuando un host recibe un segmento TCP comprueba sus cuatro campos para poder entregar el segmento al socket apropiado. El socket puede soportar varios sockets abiertos a la vez.
Niveles de Direccionamiento en Host
- Identificación de host.
- Identificación de protocolo de transporte.
- Identificación de proceso.
Protocolo UDP
Es un protocolo ligero ya que desarrolla casi lo mínimo de que debe hacer un protocolo de transporte, multi y demul, comprobación errores. Es no conectivo y carece de la segmentación, fiabilidad, control de flujo congestión y secuencia, no tiene estados e introduce poca sobrecarga de encapsulado. Su uso es para aquellas aplicaciones que controlan los datos que se envían en ese momento, para aplicaciones de tiempo real o aplicaciones que funciona a la misma velocidad que UDP. El problema de UDP surge cuando no dispone de control de congestión por lo que habrá muchas pérdidas de paquetes por lo su uso es poco habitual y se utiliza TCP.
Transferencia de Datos Fiables
Transferencia de datos fiables sobre canal fiable: rdt 1.0
Es un protocolo trivial que es fiable y no hay errores de bit ni perdidas de paquetes existen máquinas de estado para emisor y receptor. El lado emisor solo acepta datos de la capa superior, crea un paquete y lo envía. El lado receptor recibe un paquete, extrae los datos y los pasa a la capa superior y no requiere que el receptor notifique cosas al emisor.
Transferencia de datos fiables sobre canal con errores de bit rdt 2.0
Es un canal no fiable ya que puede haber errores de bit pero no pérdidas y utiliza el protocolo ARQ para saber si el mensaje ha llegado bien y el reconocimiento es + si no será -, este protocolo necesita detección de errores, realimentación de receptor y retransmisión. El lado emisor tiene dos estados uno para recibir datos, hacer el paquete y enviarlo y otro para recibir los mensajes ACK/NAK del receptor. Mientras no reciba un ACK/NAK no se manda nada y el lado receptor solo tiene un estado y responde con ACK o NAK dependiendo si el paquete recibido es correcto o no.
RDT 2.1 que es la versión mejorada de 2.0 (por si los ACK/NAK están corrompidos) que permite gestionar los ACK/NAK corrompidos mediante nº de sec en paquete de datos. El receptor puede detectar los paquetes duplicados y los lados emisor y receptor tiene el doble de estados.
Para los paquetes duplicados aparece el rdt 2.2 que es la versión mejorada de rdt 2.1 que soluciona el problema de datos duplicados gracias a que no emplea NAK solo ACK, ahora el receptor debe incluir el nº de sec del paquete que esta confirmado en el ACK y el emisor debe comprobarlo.
Transferencia de datos fiables sobre canal no fiable rdt 3.0
En el que puede haber tanto errores de bit como perdida de paquetes y para saber si se ha perdido paquetes el emisor espera un cierto tiempo y si no recibe un ACK, vuelve a enviar el paquete, el emisor tiene un tempo de cuenta atrás que debe reiniciarse cada vez que envíe un paquete y se conoce como protocolo de bit alternante porque el nº de sec se alterna de 0 a 1.
Transferencia de datos fiables con procesamiento en cadena
En rtd 3.0 su funcionamiento es correcto pero no es rentable debido a su parada y espera y para mejorar el rendimiento se utiliza el procesamiento en cadena o pipelining, el cual permite enviar más de un paquete a la vez debido a esto es necesario incrementar el rando de nº de sec y tener almacenamiento en el emisor y para recuperación de errores utilizamos retroceder N o repetición selectiva.
Checksum
Es el mecanismo de detección de errores que contiene el complemento a 1 de la suma de todas las palabras de 16 bits del segmento UDP más la pseudo cabecera, con acarreo del bit de desbordamiento de la suma sobre el bit de menor peso. El checksum en el destino tiene que ser igual al de origen para que no haya error en el segmento UDP para ellos se obtiene la pcabecera del paquete recibido y pone a cero el campo checksum. Si el checksum detecta error descarta el segmento corrupto y pasa los datos a la capa de aplicación con una advertencia.
Métodos del Control de Congestión
- Arranque lento: Mecanismo para determinar la velocidad de transmisión, la VC se establece en 1 MSS y cada vez que llega un ACK correctamente este valor se duplica. Es decir, la velocidad de transmisión se duplica cada periodo RTT y crece exponencialmente durante esta fase. Este crecimiento puede acabar con el vencimiento del timeout y pasa al mecanismo de recuperación rápida y si se reciben 3 acks duplicados para a recuperación rápida.
- Evitación de la congestión: Cuando se llega a este modo VC pasa a valer la mitad, pudiendo estar al borde de la congestión, por lo que ahora esta incrementara en solo 1 MSS por cada RTT. El incremento cesa cuando cene el timeout o se reciben 3acks duplicados pasa a la fase de recuperación rápida.
- Recuperación Rápida: Este modo es opcional pero recomendado. En el la VC se incrementa en 1MSS por cada ACK que llega duplicado relativo al segmento que faltaba e hizo entrar a TCP en este modo. Cuando se recibe el ack del segmento que falta se pasa al modo de evitación de congestión con VC=umbra, cuando vence el timeout se pasa a arranque lento con VC=1MSS y Umbral=0,5vc.