8 – CAPA DE HOST A HOST 8.1 – Introducción: La capa Host a Host cumple dos funciones principales: A – Proporciona una interfaz adecuada para que los procesos de la capa superior y las aplicaciones accedan a la red. B – Entrega los mensajes de la capa superior entre hosts Dado que las necesidades de los procesos de la capa superior son distintas, se han implementado dos protocolos Host a Host. 1 - El protocolo de control de transmisión (TCP – Transmission Control Protocol) - Es un protocolo fiable Se esfuerza por entregar los datos en su destino Verifica si se producen errores Repite los envíos cuando es necesario Sólo informa a las capas superiores si no consigue realizar una transmisión correcta El precio de la robustez de TCP es un elevado nivel de tráfico en la red. Si no se requiere de una alta fiabilidad, es preferible utilizar un transporte que genere menos tráfico 2- El protocolo de datagrama de usuario (UDP – User Datagram Protocol). - Es un protocolo no fiable Realiza un solo intento de entrega de los datos UDP no se esfuerza en descubrir datagramas perdidos Los procesos de la capa superior deben encargarse de la detección y transmisión de los posibles datos erróneos o incompletos UDP genera un nivel menor de tráfico que TCP La figura siguiente muestra los protocolos asociados con las capas de la pila TCP/IP: Proceso / Aplicación FTP Telnet SMTP Otros TFTP DNS SNMTP NFS Host a Host TCP Internet Acceso a la red Protocolos ARP encaminamiento UDP IP Ethernet, IEEE 802x, FDDI,ATN, ISDN, x25 8.2 – Protocolo de control de transmisión: TCP proporciona una comunicación fiable entre los procesos que se ejecutan en los Hosts interconectados. La comunicación host a host funciona con independencia de la estructura de la red. TCP no se encarga del encaminamiento de los datos a través de la interred; la responsabilidad de la infraestructura de la red recae sobre IP. En la capa de Host a Host, el TCP de un Host se comunica directamente con el de otro sin tener en cuenta si pertenecen a la misma red o a redes remotas. TCP desconoce la infraestructura de la red. TCP utiliza direcciones IP para identificar a los Hosts sin considerar las direcciones físicas. Algunas de las características y funciones de TCP son las siguientes: 8.2.1- Mantenimiento de las corrientes de datos Desde su perspectiva, los procesos y las aplicaciones de los Hosts se comunican transmitiendo corrientes de datos. No se preocupan de los mecanismos de fragmentación de datos ni del control de flujo. El interfaz entre TCP y el proceso local se denomina puerto. Es un mecanismo que permite que el proceso llame a TCP y que TCP a su vez entregue las concesiones de datos a los procesos adecuados. Los puertos se identifican mediante un número de puerto. Los fabricantes que implementan TCP disponen de una gran libertad para asignar un nº de puerto a los procesos, aunque la autoridad de números asignados por Internet (IANA) ha dedicado números de puerto específicos a una serie de procesos comunes. El RFC de números asignados (RFC 1700) describe estos casos, que se denominan “puertos bien conocidos” El conjunto de puertos bien conocidos resulta adecuado para establecer conexiones entre los procesos más comunes. Por ejemplo, el proceso telnet server dispone de un puerto bien conocido, que facilita el inicio de una sesión telnet desde un host. Para especificar plenamente una conexión, la dirección IP se añade al nº del puerto. Esta combinación se denomina socket (enchufe). Por consiguiente, el nº de socket es único en toda la interred. Una conexión entre dos hosts queda totalmente descrito por los sockets asignados a cada terminal de la conexión. La conexión entre dos sockets proporciona una ruta de comunicación bidireccional (dúplex total entre los dos procesos) TCP/IP utiliza dos tipos de sockets: - Sockets de corriente: Se utilizan con TCP para lograr un intercambio de datos fiable, secuencial y bidireccional Socket de datagrama: Se utilizan con UDP para lograr transferencias de datos no fiables y bidireccionales Los sockets constituyen un interfaz de programa de aplicación (API) entre TCP, los procesos y las aplicaciones. Esta API permite a los programadores que sus aplicaciones accedan a TCP. Nota: En el paquete hay un octeto que determina si el paquete va a TCP o a UDP COMUNICACIÓN DUPLEX TOTAL P/A P/A P/A P/A P/A P/A P/A P/A P/A P/A P/A FTP FTP Telnet TFTP TFTP Telnet FTP FTP Puerto A TCP Puerto B Protocolo Ip=6 P. C Pue. D UDP IP Acceso a la red Pr.IP=17 Puerto D TCP TCP Puerto C Protocolo Ip=17 P. B Pue. UDP A UDP IP Acceso a la red Pr.IP=6 8.2.2- Administración de conexiones: Para el proceso, la comunicación con la red implica el envío y la recepción de corrientes de datos contínuas. El proceso no se encarga de la fragmentación de los datos para adaptarlos a los protocolos de la capa inferior. La secuencia del proceso de los datos durante la transmisión y la recepción consta de los siguientes pasos: A- TCP recibe una corriente de datos desde el proceso de la capa superior. B- TCP puede fragmentar la corriente de datos en segmentos para adaptarlos al tamaño máximo del datagrama IP C- IP puede fragmentar los segmentos a medida que prepara los datagramas para adaptarlos a las restricciones de la red D- Los protocolos de acceso a la red transmiten el datagrama en forma de bits E- Los protocolos del host receptor reconstruyen los datagramas a partir de los bits recibidos F- Ip recibe los datagramas de la red. Si es necesario, los fragmentos se reensamblan para reconstruir el segmento original G- TCP presenta los datos de los segmentos a los protocolos de la capa superior en forma de corriente de datos Figura que representa el proceso de los datos durante la transmisión y recepción: 8.2.2.1- Ventanas: TCP se encarga de controlar el flujo entre dos hosts y para ello utiliza ventanas. El host receptor envía una ventana al host emisor especificando el número de octetos que puede aceptar el TCP receptor. El TCP emisor no transmite después de recibir la ventana, hasta recibir un acuse que confirme la recepción de los datos. El tamaño de ventana de recepción TCP indica la capacidad de datos de la memoria intermedia del host receptor. Es la cantidad máxima de datos que un host puede gestionar en un momento dado. La eficacia de la transmisión de mensajes aumenta cuando estos se fragmentan según la unidad máxima de transferencia (mtu); El tamaño máximo de mensaje que puede viajar a través de una determinada ruta de la red. Cuando se establece una conexión, TCP utiliza la mtu de la red para adaptarse al tamaño máximo de segmento (mss). Normalmente, el mss equivale a la mtu menos los bytes que están dedicados a las cabeceras. En una red de Microsoft TCP/IP funcionando sobre Ethernet, se utiliza un mss de 1460 bytes y normalmente la ventana es de unos 8760 bytes (aproximadamente 6 segmentos) 8.2.2- Abrir y cerrar conexiones Los procesos pueden abrir y cerrar la conexión y obtener el estado de la misma. Las conexiones deben abrirse y cerrarse explícitamente. Cuando TCP envía una llamada de apertura, éste indica el puerto local y el socket remoto. Los procesos de la capa superior reciben un nombre que utilizan para identificar la conexión. 8.2.3- Comunicación fiable TCP se encarga de entregar las corrientes de datos a sus destinatarios de manera fiable y ordenada. TCP utiliza números de secuencia de segmento y acuses de recibo. Cada octeto de un segmento cuenta con un número de secuencias que permite acusar su recibo. Cuando TCP envía un segmento, retiene una copia, y las mantiene en una cola hasta que llega el acuse de recibo. Si en un tiempo determinado no se recibe el acuse, el segmento se envía nuevamente. 9 – La capa proceso / aplicación 9.1-Introducción La capa de proceso/aplicación es el motivo por el que existen otras capas de red. Los protocolos de las capas inferiores se limitan a entregar mensajes. El verdadero trabajo se lleva a cabo en la capa de proceso/aplicación. Contiene programas que proporcionan servicios de red como servidores de correo, de transferencia de archivos, terminales remotos y servidores de administración de sistemas. Además, existen programas que actúan a modo de interfaces con el usuario final como FTP y Telnet. Debe tenerse en cuenta que pueden existir otras capas sobre las de proceso/aplicación: aplicaciones que utilizan los servicios proporcionados por ciertos procesos. Por ejemplo, los usuarios pueden utilizar directamente el protocolo simple de transferencia de correo (SMTP – Simple Mail Transfer Protocol) para enviar y recibir correo. Sin embargo, es más frecuente que los usuarios accedan a SMTP mediante un programa de correo electrónico(outlook) que genere mensajes utilizando el protocolo SMTP. 9.2- Asignación de nombres a los hosts de Internet Dado que los usuarios interactúan con la capa de proceso/aplicación, resulta conveniente dotarla de cierta amigabilidad. Imaginemos que tuviéramos que utilizar direcciones IP para enviar mensajes y dirigirse a los usuarios en una red de dimensiones de Internet. ¿Cuántas direcciones IP seríamos capaces de recordar? Por este motivo, la comunidad de Internet comenzó a utilizar nombres de hosts para indentificarlos. La mayoría de usuarios les resulta más fácil recordar www.marcgene.com que 192.49.45.10 El uso de nombres de hosts requiere un sistema que permita asociarlos a sus direcciones IP: A tal efecto, se han empleado dos tecnologías en Internet: A- El uso de archivos Hosts para asignar nombres estáticos B- Sistema de nombres de dominio (DNS – Domain Name System) el cual convierte nombres de dominio en direcciones IP 9.3- Aplicaciones TCP/IP 9.3.1- Introducción En este apartado se van a describir varias aplicaciones TCP/IP de uso común que son herramientas que los usuarios utilizan frecuentemente. 9.3.2- FTP – Protocolo de transferencia de ficheros FTP es a la vez un protocolo y un programa que puede utilizarse para realizar operaciones básicas sobre los archivos de un host remoto y para transferir archivos entre hosts. Como programa, FTP permite que los usuarios realicen manualmente operaciones realizadas con archivos. Las aplicaciones pueden usar FTP como protocolo si requieren sus servicios de archivo. FTP es una aplicación segura y fiable, que ya opera sobre TCP. Los usuarios que acceden a un host utilizando FTP deberán autentificar su conexión, y por tanto proporcionar su nombre y contraseña. 9.3.2.1 – Anatomía de FTP Un host que ofrece sus sistema de archivos a los usuarios, debe ejecutar una aplicación de tipo servidor FTP. Los usuarios que accedan al servidor FTP deberán ejecutar un software de tipo cliente FTP en sus ordenadores. Cuando el cliente FTP abre una conexión al servidor FTP, se establece un canal lógico (un circuito virtual definido por dos sockets) entre ambos hosts. El canal posibilita la comunicación entre los componentes FTP. No es posible ejecutar los archivos remotos a modo de programas pero sí se puede listar directorios, ver el contenido de archivos, manipular los directorios locales y copiar los archivos de un host a otro. Figura de la anatomía de una sesión FTP Almacenamiento local archivos Almacenamiento remoto archivos Cliente FTP UDP IP Servidor FTP UDP IP Capa acceso a la red Capa acceso a la red RED de área extensa 9.3.2.2- Uso de FTP Para utilizar FTP existen aplicaciones con entornos gráficos que nos permiten configurar el inicio de sesión, y realizar las correspondientes operaciones de envío y recepción de archivos. También puede realizarse comandos de FTP desde una línea de órdenes. 9.3.2.3 – Comandos de FTP * Consultar listado 9.3.3 – TFTP: Protocolo trivial de transferencia de archivos FTP fue diseñado para garantizar la seguridad de las operaciones con archivos en redes poco fiables. Utiliza TCP como protocolo de transporte para conseguir entregas fiables. FTP opera sobre circuitos virtuales TCP y requiere que los hosts establezcan una conexión antes de realizar las operaciones con archivos. Una conexión FTP lleva implícito un proceso de autenticación. Cuando una red es fiable, como por ejemplo una red de área local, la carga adicional de FTP puede no ser deseable. Esta razón ha impulsado el desarrollo de un protocolo más sencillo: el TFTP (RFC 1350). TFTP usa el protocolo no fiable UDP como transporte. No obliga a establecer una conexión ni implica el proceso de autentificación antes de permitir la transferencia de archivos. La falta de seguridad de trivial (TFTP) hace que su uso sea arriesgado en una red pública. 9.3.4 – Telnet 9.3.4.1- Introducción El acceso en modo terminal remoto es una característica crítica de muchos ordenadores, lo cual puede lograrse mediante conexión telefónica y red de Internet. Telnet es un programa que posibilita el acceso en modo terminal remoto a través de una red. 9.3.4.2 – Funcionamiento de Telnet Al igual que FTP, se basa en procesos cliente – servidor. Un servidor Telnet, ejecutándose en un host remoto mantiene un terminal virtual: una imagen software de un terminal que puede interactuar con el host. Un usuario inicia una sesión Telnet ejecutando un programa cliente Telnet y conectándose al servidor Telnet. El servidor recibe las pulsaciones de teclas del cliente y las aplica al terminal virtual que interactúa con otros procesos del host. El servidor Telnet también recibe los datos destinados a la pantalla del terminal y los envía al cliente Telnet. La sensación que percibe el usuario es que la cesión del terminal tiene lugar en la computadora local, mientras que el host remoto piensa “que está interactuando con un terminal local” Telnet se basa en la emulación de un terminal de texto, normalmente DIGITAL UET220. En estos terminales sólo se puede trabajar en modo texto. Otra limitación consiste en que la computadora local no tiene capacidad para procesar información. Todos los procesos tienen lugar en el servidor Telnet remoto, que convierte el host local en un terminal tonto. 9.3.4.3 – Figura de funcionamiento de Telnet Cliente Telnet TCP IP Servidor Telnet TCP IP Capa acceso a la red Capa acceso a la red Red de área extensa 9.3.5 – SMTP: Protocolo simple de transferencia de correo 9.3.5.1 – Introducción El correo electrónico es una de las aplicaciones más importantes en Internet. Se basa en el protocolo SMTP descrito en la RFC821. SMTP transporta mensajes de correo electrónico entre distintos hosts TCP-IP. Aunque un usuario con experiencia puede comunicarse directamente usando el protocolo SMTP, éste no es el procedimiento estándar. Normalmente, varias capas de comunicación intervienen en el proceso. 9.3.5.2 – Arquitectura del correo SMTP Los hosts que admiten correo electrónico utilizan un agente de transferencia de correo ( MTA – Mail Transfer Agent) para gestionar el proceso. El MTA más extendido en la comunidad UNIX es el Send Mail. A grandes rasgos, el MTA tiene dos responsabilidades: 1 – Enviar y recibir mensajes desde / hasta otros servidores de correo 2 - Proporcionar un interfaz que permita que las aplicaciones accedan al sistema de correo. El MTA se encarga de proporcionar a los usuarios buzones de correo dotados de una dirección. Cuando se envía un mensaje a www.marcgene.com, www.margene.com es el nombe del dominio del host que ejecuta el MTA. Este se encarga de asegurar que los mensajes dirigidos a marc se depositan en el buzón correcto. Los usuarios finales se comunican con el MTA utilizando uno de los muchos agentes de usuario (UA – User Agent) disponibles. El UA es un sistema de correo que evita al usuario todas las complicaciones del proceso. Los UA utilizan un protocolo de correo para comunicarse con el MTA, por ejemplo , la versión 3 del protocolo de oficina de correos (POP 3- Post Office Protocol Version3;RFC1460) En UNIX, uno de los UA más utilizados es el programa basado en texto mail. En Windows, el Outlook. La imagen siguiente representa la arquitectura de la mensajería basada en SMTP: SMTP TCP IP SMTP TCP IP Capa acceso a la red Agente de Usuario POP3 Conexión Agente de transferencia de correo (MTA) Capa acceso a la red Agente de transferencia de correo (MTA) POP3 Agente de Usuario Red de área extensa • Los dos ordenadores del centro son servidores 9.3.5.3 – Entregas de correo electrónico Los sistemas de correo electrónico no están diseñados para realizar intercambio de mensajes en tiempo real. Los servidores de correo electrónico usan un método de almacenamiento temporal y envío de mensajes. En la imagen siguiente, se muestra un ejemplo de correo en el que B debe enviar mensajes entre A y C. B debería trabajar a mucho ritmo si tuviera que encaminar los datagramas IP en tiempo real. En cambio, B opta por un enfoque más relajado. Cuando recibe el mensaje de A, B almacena la totalidad del mensaje en un disco duro local. Si B tiene otras prioridades, (p.ej. la recepción de otros mensajes) espera hasta que la actividad descienda antes de enviar el mensaje a C. Es posible configurar B para que envíe los mensajes a C cuando existan varios mensajes pendientes o cuando transcurra un periodo de tiempo dado. La eficiencia de B aumenta al transferir varios mensajes con una sola conexión, en lugar de abrir una conexión distinta para cada mensaje. Estas técnicas pueden aumentar el tiempo de tránsito en minuto u horas, pero aumentan la eficiencia global. Imagen de entrega de mensajes de correo electrónico: Cola mensajes Cola almacenamiento y envío Agente transferencia correo (MTA) A Agente transferencia correo (MTA) B Mensaje que B debe enviar Buzón de usuario Agente transferencia correo (MTA) C Mensaje para buzones de C 9.3.5.4 – Características de SMTP SMTP fue diseñado para transferir mensajes basados en texto ASCII de 7 bits. El envío de datos binarios a través de los sistemas de correo SMTP, requiere su codificación en un formato compatible con la transmisión de caracteres de 7 bits. El host receptor decodifica el mensaje para recuperar los datos binarios. Muchos de los agentes de usuario realizan estas conversiones de forma automática en los archivos adjuntos. Las extensiones de propósito general para correo de Internet ( MIME – Multi Purpose Internet Mail Extension) constituye un protocolo opcional que admite transferencia de mensaje binarios a través de SMTP. La seguridad de SMTP es pobre y no existe encriptación de mensajes. Se recomienda encriptar mensajes confidenciales antes de transmitirlos por correo SMTP 9.3.6 – NFS (Sistema de archivos de red) Imaginemos que deseamos abrir un programa de hoja de cálculo en nuestro ordenador y actualizar la hoja de cálculo de otra computadora. Con FTP debería transferir e archivo a mi computadora y enviarlo nuevamente a su origen una vez hechos los cambios. El sistema NFS es el equivalente TCP/IP de la capacidad para compartir archivos de los productos Microsoft. NFS fue desarrollado por Sun Microsystems. Un servidor NFS puede exportar parte de un árbol de directorios para el uso de los clientes NFS. Los clientes pueden montar los directorios exportados como si formaran parte del sistema de archoivos nativo local. Por ejemplo, los usuarios de DOS acceden al directorio exportado como si se tratara de una letra de unidad incluída en la estructura de archivos local de DOS. NFS es un protocolo sofisticado y fiable que no usa el transporte TCP. Por motivos de eficiencia, NFS funciona sobre UDP. NFS implementa la seguridad, la fragmentación de mensajes y recuperación de errores. Imagen de exportación de un directorio con NFS Servidor NFS / bin etc pub mac msdos UNIX Servidor NFS UDP IP Capa acceso a la red D:\> pub Cliente NFS mac msdos UNIX Directorio Exportado Cliente NFS UDP IP Capa acceso a la red