Sistemas operativos y redes Práctica N°3 Protocolos de aplicación en TCP/IP: DNS – DHCP – SMTP – HTTP Cuestionario Ejercicio N°1:Sistema DNS a) Estudie el funcionamiento del sistema DNS. ¿Qué son los TLD? ¿Cuáles son los TLD oficialmentereconocidos? ¿A qué se llama root-server? b) Explique cuáles son los principales tipos de registro que se mantienen en la base de datos de DNS (SOA, IN, CNAME, MX, etc) c) Estudie el funcionamiento del programa nslookup. Explique el funcionamiento de las distintasopciones del mismo, en particular server, lservery set type. d) Haga un diagrama mostrando como se resuelve el nombre www.ucla.edu indicando que servidores DNS intervienen suponiendo que no existen entradas en cache. a) El usuario prefiere usar nombres de alto nivel para las máquinas y pensar en las IP como nombres de bajo nivel. Las redes TCP/IP utilizan un esquema descentralizado de asignación de nombres. Asimismo en una red de redes TCP/IP, la jerarquía de nombres de máquinas se asigna de acuerdo con la estructura de la organización que obtiene la autoridad para dividir el espacio de nombres y no necesariamente de acuerdo con la estructura de las interconexiones de red física. En este esquema de nombres jerárquicos el espacio de nombres es particionado en el nivel superior y la autoridad para los nombres de subdivisiones pasa a agentes designados. El mecanismo que implanta una jerarquía de nombres de máquina para las redes TCP/IP se conoce como Domain Name System (Sistema de Nombres o Nomenclatura de Dominio o DNS). El DNS tiene dos aspectos conceptualmente independientes. El primero es abstracto. Especifica la sintaxis del nombre y las reglas para delegar la autoridad respecto a los nombres. El segundo es concreto: especifica la implantación de un sistema de computación distribuido que transforma eficientemente los nombres en direcciones. El DNS se vale de un esquema de nombres jerárquicos conocido como nombre de dominio. Un nombre de dominio consiste en una secuencia de nombres separados por un carácter delimitador, el punto. En este esquema se llama a cada sección etiqueta. El mecanismo para la asociación de nombres en direcciones consiste en sistemas independientes y cooperativos llamados servidores de nombres. Un cliente debe saber cómo contactar al último servidor de nombres. Y un servidor podría conocer la dirección de un servidor para el dominio de un nivel inmediatamente superior. Si cada resolución de nombres comenzara siempre por contactar al nivel más alto de la jerarquía, la máquina en este punto podría sobrecargarse. Por eso, en el proceso de resolución de nombres, hay dos 1 etapas, la resolución comienza con el servidor de nombres local. Si el servidor de nombres local no puede resolver el nombre, la solicitud deberá enviarse hacia otro servidor en el sistema de dominio. Los servidores de nombres en Internet utilizan una memoria inmediata de nombres (name caching) para optimizar los costos de búsqueda. Cada servidor mantiene una memoria de los nombres utilizados más recientemente, así como un registro de dónde fue obtenida la información para la asociación de nombres. Para mantener la memoria con información correcta, los servidores suprimen las entradas que excedan un tiempo razonable. Se denomina TLD (Top Level Domain) a la última parte de la URL, la cual identifica aquellos dominios que no están contenidos en otros dominios. Esto se utilizan para distinguir distintos tipos de páginas web. Los TLD oficialmente reconocidos son: Dominio de nivel superior Significado .com .net .org .gov .edu Sitio comercial (empresa) Sitio administrativo de Internet Organización sin fines de lucro Organismo gubernamental de EE.UU. Institución educativa Un root-server (servidor raíz) es también un DNS, pero es un servidor que conoce las direcciones de todos los DNS autoritarios para cada una de las zonas de más alto nivel de la Internet, es decir los TLD. Cuando se hace una petición DNS, el primer paso es preguntar a un root-server cual es el DNS que tiene la información del TLD en el cual se encuentra la URL deseada. b) El DNS se adapta a gran variedad de transformaciones y no sólo a traducir nombres de dominio para correo o direcciones IP. Cuando se envía una solicitud, el cliente debe especificar el tipo en su solicitud. El tipo determina el contenido del registro de recursos de acuerdo a la siguiente tabla. Tipo A CNAME HINFO MINFO MX Significado Dirección de anfitrión Nombre de oficina CPU&OS Información de buzón Transportador de correo NS PTR SOA Servidor de nombre Puntero Comienzo de autoridad TXT Texto arbitrario Contenido Dirección IP de 32 bits. Nombre de dominio de oficina para un alias. Nombre de CPU y sistema operativo. Información sobre buzón o lista de correo. Preferencia de 16 bits y nombre del anfitrión que actúa como transportador de correo para el dominio. Nombre de un servidor autorizado para el dominio. Nombre de dominio (como un enlace simbólico). Varios archivos que especifican qué partes de la jerarquía de nombres implanta un servidor. Cadena de texto en ASCII sin interpretación. 2 c) Nslookup es una herramienta administrativa de la línea de comandos para probar y solucionar problemas de los servidores DNS. Nslookup se puede ejecutar en dos modos: interactivo y no interactivo. El modo no interactivo es útil cuando sólo se necesita devolver un fragmento de datos. La sintaxis para el modo no interactivo es la siguiente: nslookup [-option] [hostname] [server] Para iniciar Nslookup en modo interactivo, basta con escribir "nslookup" en el símbolo del sistema: C:\> nslookup Default Server: nameserver1.domain.com Address: 10.0.0.1 > Si se escribe "help" o "?" en el símbolo del sistema se generará una lista de comandos disponibles. Todo lo que escriba en el símbolo del sistema que no se reconozca como un comando válido se supone que es un nombre de host y se intenta resolver utilizando el servidor predeterminado. Para interrumpir comandos interactivos, presione CTRL+C. Para salir del modo interactivo y volver al símbolo del sistema, escriba exit en el símbolo del sistema. Lo siguiente es la ayuda generada y contiene la lista completa de opciones: Commands: (los identificadores están en mayúsculas, [] significa opcional) NAME - print info about the host/domain NAME using default server NAME1 NAME2 - as above, but use NAME2 as server help or ? - print info on common commands set OPTION - set an option all - print options, current server and host [no]debug - print debugging information [no]d2 - print exhaustive debugging information [no]defname - append domain name to each query [no]recurse - ask for recursive answer to query [no]search - use domain search list [no]vc - always use a virtual circuit domain=NAME - set default domain name to NAME srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1, N2, and so on root=NAME - set root server to NAME retry=X - set number of retries to X timeout=X - set initial time-out interval to X seconds 3 type=X - set query type (for example, A, ANY, CNAME, MX, NS, PTR, SOA, SRV) querytype=X - same as type class=X - set query class (for example, IN (Internet), ANY) [no]msxfr - use MS fast zone transfer ixfrver=X - current version to use in IXFR transfer request server NAME - set default server to NAME, using current default server lserver NAME - set default server to NAME, using initial server finger [USER] - finger the optional NAME at the current default host root - set current default server to the root ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE) -a - list canonical names and aliases -d - list all records -t TYPE - list records of the given type (for example, A, CNAME, MX, NS, PTR, and so on) view FILE - sort an 'ls' output file and view it with pg exit - exit the program Buscar tipos de datos diferentes [set type] Para buscar tipos de datos diferentes dentro del espacio de nombres de dominio, utilice el comando set type en el símbolo del sistema. Por ejemplo, para consultar los datos del intercambiador de correo, escriba lo siguiente: Consultar directamente desde otro servidor de nombres [server o lserver] Para consultar directamente otro servidor de nombres, utilice los comandos server o lserver para cambiar a ese servidor de nombres. El comando lserver utiliza el servidor local para obtener la dirección del servidor al que se desea cambiar, mientras que el comando server utiliza el servidor predeterminado actual para obtener la dirección. d) Fully Qualified Host Name (FQHN): Es el “nombre completo” de un host. Está formado por el hostname, seguido de un punto y su correspondiente nombre de dominio. El proceso de resolución de nombres: Cuando una aplicación (cliente) necesita resolver un FQHN envía un requerimiento al servidor de nombres configurado en el sistema. A partir de entonces se desencadena el proceso de resolución del nombre: El servidor de nombres inicial consulta a uno de los servidores raíz (cuya dirección IP debe conocer previamente). Este devuelve el nombre del servidor a quien se le ha delegado la sub-zona. El servidor inicial interroga al nuevo servidor. El proceso se repite nuevamente a partir del punto 2 si es que se trata de una sub-zona delegada. 4 Al obtener el nombre del servidor con autoridad sobre la zona en cuestión, el servidor inicial lo interroga. El servidor resuelve el nombre correspondiente, si este existe. El servidor inicial informa al cliente el nombre resuelto. 5 Ejercicio N°2: a) Explique cómo es el funcionamiento del sistema DHCP. b) ¿Qué tipo de información puede ser establecida mediante DHCP? a) El DHCP (Dynamic Host Configuration Protocol) es el sucesor del BOOTP y del RARP y corrige las dificultades que éstos presentaban. El DHCP extiende el BOOTP de dos formas. En primer lugar, el DHCP permite que una computadora adquiera toda la información que necesita en un solo mensaje. En segundo lugar, el DHCP permite que una computadora posea una dirección IP en forma rápida y dinámica. Cada vez que una computadora se conecta a la red configurada mediante DHCP, esta se conecta al servidor y éste le asigna una dirección IP. La IP asignada puede ser de manera manual, es decir previamente estipulada en la configuración del servidor para esa MAC. O también puede ser dinámica, es decir, que el servidor asigna una IP que esté disponible (bajo ciertas restricciones) por tiempo limitado. Las máquinas en DHCP utilizan la dirección IP de difusión límite (255.255.255.255) para obligar a difundir un datagrama en la red local, antes de que dicha máquina tenga asignada la dirección IP que debe tener en dicha red. El servidor DHCP escucha estos paquetes y responde a la máquina con la configuración que ésta requiere. Cuando se utiliza DHCP para obtener una dirección IP, el cliente se encuentra en 1 de 6 estados. Cuando un cliente arranca por primera vez, entra en el estado INITIALIZE, para comenzar a adquirir una IP, el cliente primero contacta a todos los servidores DHCP de la red local. Para hacerlo difunde un mensaje DHCPDISCOVER y cambia al estado SELECT. El cliente envía el mensaje en un datagrama UDP con el puerto de destino activado para el puerto BOOTP (puerto 67). Los servidores enviarán n mensaje DHCPOFFER. Cada oferta contiene información de configuración para el cliente junto con una IP que el servidor ofrece prestar al cliente. El cliente debe negociar este préstamo con el servidor. Para ellos, el cliente envía un mensaje DHCPREQUEST y entra al estado REQUEST. A fin de enviar un acuse de recibo el servidor responde con un DHCPACK. El cliente pasa al estado BOUND y está listo para usar la IP. b) Cada computadora conectada a una red de redes TCP/IP necesita saber su dirección IP antes de poder enviar y recibir datagramas. Además, esa computadora necesita saber la dirección del router, la máscara de red y la dirección del DNS. Toda ésta información es suministrada por el servidor DHCP. 6 Ejercicio N°3: a) Explique el funcionamiento del sistema de envío de e-mail mediante SMTP. ¿Qué es un MUA y qué es un MTA? b) Haga un diagrama explicando que pasos se siguen en el envío de un e-mail desde la dirección [email protected] hacia la dirección [email protected] Suponga que se utiliza un MUA basado en protocolo pop3. c) Estudie cuales son las cabeceras principales que puede encontrar en un e-mail y que información se obtiene de ellas. En particular diga cómo puede determinarse por cuáles servidores pasó el e-mail, donde se originó y en qué momento fue procesado por cada servidor. a) Cuando se envía un correo electrónico, el mensaje se enruta de servidor a servidor hasta llegar al servidor de correo electrónico del receptor. Más precisamente, el mensaje se envía al servidor del correo electrónico (llamado MTA, del inglés Mail Transport Agent [Agente de Transporte de Correo]) que tiene la tarea de transportarlos hacia el MTA del destinatario. En Internet, los MTA se comunican entre sí usando el protocolo SMTP, y por lo tanto se los llama servidores SMTP (o a veces servidores de correo saliente). Luego el MTA del destinatario entrega el correo electrónico al servidor del correo entrante (llamado MDA, del inglés Mail Delivery Agent [Agente de Entrega de Correo]), el cual almacena el correo electrónico mientras espera que el usuario lo acepte. Existen dos protocolos principales utilizados para recuperar un correo electrónico de un MDA: POP3 (Post Office Protocol [Protocolo de Oficina de Correo]), el más antiguo de los dos. IMAP (Internet Message Access Protocol [Protocolo de Acceso a Mensajes de Internet]). Los emails quedan almacenados en el MDA hasta que el receptor se conecte y los lea. Esto significa que no es necesario que los destinatarios estén conectados para poder enviarles un correo electrónico. La recuperación del correo se logra a través de un programa de software llamado MUA (Mail User Agent [Agente Usuario de Correo]). b) Para realizar el envío de un email se deben seguir los siguientes pasos: Ejecutar el comando telnet desde la consola del siguiente modo: telnet barcala.ing.unlp.edu.ar 25 Y luego se ingresan los siguientes comandos: HELO barcala MAIL FROM:<[email protected]> RCPT TO:<[email protected]> DATA Este es el cuerpo del email enviado . QUIT 7 Para realizar la recepción del email usando POP3 se siguen los siguientes pasos: Ejecutar el comando telnet desde la consola del siguiente modo: telnet barcala.ing.unlp.edu.ar 110 Y luego se ingresan los siguientes comandos para acceder a la cuenta: user siopyre pass siopyre Los comandos que de aquí en más se pueden utilizar son: STAT: Da el número de mensajes no borrados en el buzón y su longitud total. LIST: Muestra todo los mensajes no borrados con su longitud. RETR <número>: Solicita el envío del mensaje especificando el número (no se borra del buzón). TOP <número> <líneas>: Muestra la cabecera y el número de líneas requerido del mensaje especificando el número. DELE <número>: Borra el mensaje especificando el número. RSET: Recupera los mensajes borrados (en la conexión actual). UIDL <número>: Devuelve una cadena identificatoria del mensaje persistente a través de las sesiones. Si no se especifica <número> se devuelve una lista con los números de mensajes y su cadena identificatoria de los mensajes no borrados. QUIT: Salir. c) El correo electrónico está dividido en dos partes: un encabezado y un cuerpo del mensaje, separados por una línea en blanco. El estándar de TCP/IP define el formato que los encabezados deben tener, éstos tienen texto que es posible leer, dividido en líneas que consisten en palabras clave, seguidas por puntos y un valor. Por ejemplo, el encabezado debe contener una línea que especifique el destino. La línea comienza con To: y el resto contiene la dirección del correo electrónico del recipiente. Una línea que comienza con From: contiene la dirección de correo del emisor. Opcionalmente, el emisor puede especificar una dirección a la que se envíen las réplicas. Se incluiría una línea que comienza con Reply-To: en ese caso. 8