Redes de Computadores Jorge Baier A. y Álvaro Soto Departamento de Ciencia de la Computación Escuela de Ingenierı́a Pontificia Universidad Católica de Chile [jabaier,asoto]@ing.puc.cl Sistema de Nombres de Dominios Hasta el momento hemos visto que la única forma de transferir información a un host en Internet es a través de su número IP. Sin embargo, rara vez uno se refiere a las máquinas mediante su número IP. En vez de números binarios se usan string en ASCII como por ejemplo www.google.com para nombrar un host. Para poder obtener el número IP de un host dado su nombre, se utiliza el sistema de nombres de dominios, DNS4(Domain Name System). Este servicio es prestado por ciertos servidores de Internet llamados servidores de nombres (DNS servers). 4 DNS está descrito en los RFCs 1034 y 1035. 2003 Jorge Baier Aranda, PUC 45 En términos simples, cuando una máquina quiere saber el número IP de una máquina dado su nombre, entrega el nombre a un subsistema llamado resolvedor (resolver ). Mediante una conexión TCP/IP, el resolver consulta al servidor de nombres y éste retorna el número correspondiente. 2003 Jorge Baier Aranda, PUC 46 El espacio de nombres del DNS El espacio de nombres de DNS está compuesto por todos los nombres asignados a máquinas en Internet. El espacio de nombres del DNS es un espacio jerárquico, en el cual se definien cientos de dominios. La siguiente figura muestra algunos de ellos. Genéricos com edu net asignados a países mil org cl biz us jp puc baier info nl ac aero ing co mat Top level domains (TLDs) 2003 Jorge Baier Aranda, PUC 47 Los hijos del primer nivel son los dominios del nivel superior o TLDs (Top Level Domains). Estos dominios son asignados por la ICANN (Internet Corporation for Assigned Names and Numbers) El dominio es la parte del nombre del host que va después del punto, ası́, el dominio de charlie.puc.cl, es puc.cl, que es, a su vez un subdominio de cl. Sin embargo, se acostumbra a decir para este caso que el dominio es puc.cl. Existen dos tipos de dominios TLDs: los genéricos y los asignados a paı́ses. Algunos de éstos son restringidos y otros no. 2003 Jorge Baier Aranda, PUC 48 Entre los genéricos destacan 5: Dominio .com .edu .net .org .info .biz .aero Destino Organizaciones comerciales Organizaciones educacionales Proveedores de servicios de red Organizaciones sin fines de lucro Organizaciones comerciales Organizaciones comerciales Organizaciones aeronáuticas ¿Restringido? × √ × × × √ √ El espacio de nombres se almacena en una base de datos distribuida. Un servidor de nombres no conoce todos los nombres que se usan en Internet, sino que sólo un subconjunto de éstos. Veremos más adelante cómo es posible consultar esta base de datos. 5 El dominio biz fue aprobado en mayo de 2001 2003 Jorge Baier Aranda, PUC 49 Registros de Recursos Cada dominio en Internet representa a un nodo en el árbol del espacio de nombres. Cada uno de estos nodos, a su vez, debe ser asignado a un servidor denombres primario, que almacena un conjunto de registros de recursos. También se almacenan réplicas de estos registros en servidores de nombres secundarios. Un registro de recursos contiene información que describe a un dominio. Ésta se representa a través de una tupla: [Nombre Dominio] [Clase] [Tipo] [Valor] Donde: Nombre de Dominio es el nombre del dominio. Clase: Indica la clase de información. En la práctica vale siempre IN, que corresponde a “información de Internet”. 2003 Jorge Baier Aranda, PUC 50 Tipo: Indica qué tipo de registro es. En la siguiente tabla se muestran los tipos más importantes: Tipo Descripción Valores SOA Start of Authority A MX Número IP del host Manejador de email (mail exchanger) NS Servidor de Nombres Parámetros de esta zona Número de 32 bits Prioridad y dominio que aceptará el email para el host/dominio Nombre del servidor de nombres para este dominio. Valor: Valor que corresponde al registro. Generalmente es un nombre o una dirección IP. 2003 Jorge Baier Aranda, PUC 51 Dentro de los parámetros SOA se encuentran: Refresh : Tiempo sugerido al servidor de nombres secundarios para que actualice sus registros. TTL : Si el registro es almacenado por un servidor DNS (cached) entonces este es el tiempo máximo permitido para almacenar un registro debe hacer. Otro de los registros importantes es el MX, el cual indica el número IP del servidor de nombres que maneja los correos de ese dominio. 2003 Jorge Baier Aranda, PUC 52 A modo de ejemplo, a continuación se muestra la configuración del servidor de nombres para el dominio baier.cl. ; Database file netred.cl.dns for houston.netred.cl zone. ; Zone version: 5 ; $TTL 3600 ; @ ; ; @ @ ; ; @ IN SOA houston.netred.cl. 2001051301 ; serial 1201 ; refresh 600 ; retry 604800 ; expire 3600 ; default_ttl ) Zone NS records IN IN NS NS dns.netred.cl. dns2.netred.cl. Zone MX records IN MX 10 A A A A A 127.0.0.1 200.27.104.35 200.27.104.36 200.27.104.35 200.27.104.36 ; ; ; Zone records ; localhost dns dns2 ns ns2 IN IN IN IN IN 2003 Jorge Baier Aranda, PUC ( mail.netred.cl. 53 @ www mail ftp pop IN IN IN IN IN A A A A A 200.27.104.35 200.27.104.35 200.27.104.35 200.27.104.35 200.27.104.35 En U NIX es posible usar el comando host para preguntar por la configuración de un dominio. El siguiente es un ejemplo de ejecución: $ host -t any puc.cl puc.cl. SOA ns.puc.cl. hostmaster.ns.puc.cl. 2002081301 360 60 1209600 43200 puc.cl. name server ns.puc.cl. puc.cl. name server ns2.puc.cl. puc.cl. name server ns3.puc.cl. puc.cl. mail is handled by 10 mx1.puc.cl. puc.cl. mail is handled by 10 mx2.puc.cl. 2003 Jorge Baier Aranda, PUC 54 Un ejemplo Cuando un resolver tiene una consulta por un nombre, entrega la consulta a su servidor de nombres. Por ejemplo si el servidor de nombres configurado en su máquina es polux.entelchile.net (200.72.1.254) y se consulta por el nombre www.entelchile.net, el servidor dará una respuesta autorizada (authoritative answer ) con 206.137.97.120 del servidor. Una respuesta autorizada sólo puede ser entregada por el servidor que maneja el registro y, por lo tanto, es siempre correcta. Supongamos ahora que ud. desea conectarse con el servidor www.baier.cl desde la máquina as5300-s07-037.cnt.entelchile.net que tiene configurado a polux.entelchile.net como su servidor de nombre. En este caso, la máquina que origina la consulta, pregunta a su servidor de nombres el número IP de www.baier.cl. 2003 Jorge Baier Aranda, PUC 55 Aquı́ existirán dos posibilidades: que el servidor de nombres tenga en su cache el IP correspondiente, o que no lo tenga. Si lo tiene en su caché responderá inmediatamente. Si no lo tiene deberá preguntar al dueño de la zona .cl, nic.cl. A su vez, nic.cl revisará sus tablas y consultará al dueño de la zona baier.cl (en este caso real es dns.netred.cl). De hecho, en las tablas de nic.cl aparece lo siguiente: ; Dominio baier.cl baier IN NS IN 2003 Jorge Baier Aranda, PUC dns.netred.cl. NS dns2.netred.cl. 56 Finalmente dns.netred.cl responderá con el número IP de la máquina consultada. El proceso de consulta se muestra en la siguiente figura: as5300−s07−037.cnt.entelchile.net consulta por www.baier.cl Respuesta: 200.27.104.35 polux.entelchile.net consulta por www.baier.cl Respuesta: 200.27.104.35 nic.cl consulta por www.baier.cl Respuesta: 200.27.104.35 dns.netred.cl 2003 Jorge Baier Aranda, PUC 57 Contratación de Dominios Para contratar un dominio uno se debe dirigir al dominio autorizado de la zona que interesa contratar. Por ejemplo, si se desea contratar un dominio .com se puede hacer en Network Solutions (nsi.com): 2003 Jorge Baier Aranda, PUC 58 Al contratar el dominio, no se especifica directamente la dirección IP a del dominio contratado, sino que la direccion del servidor de nombres que será dueño del dominio. En el servidor de nombres se especifican los registros de recursos. En el caso de Chile, los dominios se inscriben en nic.cl y tienen un valor de $20.000 por una suscripción bianual. En otros paı́ses como Tuvalu (dominio .tv), los nombres pueden fluctuar entre US$ 50 hasta US$ 1000 anuales. 2003 Jorge Baier Aranda, PUC 59 Correo Electrónico El correo electrónico, se ha transformado hoy en dı́a en una de las formas más usadas para comunicarse a través de Internet. En esta sección revisaremos cómo es posible que se produzca este tipo de comunicación a través de la red. Para ello, revisaremos el protocolo de aplicación para transmisión de mensajes de correo electrónico, SMTP, y otros conceptos básicos. 2003 Jorge Baier Aranda, PUC 60 Algo de Historia El uso del correo electrónico (email) se remonta hasta hace más de dos décadas, cuando en A RPANET surgieron los primeros correos electrónicos. Inicialmente, un email era simplemente un archivo de texto, en el cual la primera lı́nea correspondı́a a la dirección del receptor, y que se transmitı́a como un archivo más. En 1977, fue elaborado el primer protocolo de correo electrónico y publicado en el RFC6 733, posteriormente reemplazado por los RFCs 821 y 822, de 1982. Dos años más tarde el CCITT (Comité Consultatif International Téléphonique et Télégraphique) inventa el estándar X.400, sin embargo este estándar es muy complicado y finalmente pocos lo implementan. De esta manera los sistemas basados en el RFC 822, son los que se utilizan hasta ahora. 6 Los RFC (Request for comments) son documentos en los cuales se describen o sugieren protocolos o estándares. 2003 Jorge Baier Aranda, PUC 61 Clientes y Servidores de Correo Los clientes de correo son los programas que se utilizan para la composición, envı́o y lectura de e-mail. Este es el tipo de programas con el cual interactúa la mayor parte de los usuarios del email. Tanto en el proceso de envı́o como en el de lectura, el cliente de usuario se conecta con servidores de correo, que son las máquinas que realmente hacen el trabajo de transferir los mensajes entre máquinas. Los servicios que prestan los servidores son esencialmente de dos tipos: Envı́o de Correo: Este servicio tiene por objetivo recibir el mensaje de correo desde el cliente y transmitirlo hacia el destino. En este caso, la comunicación entre el cliente y el servidor se realiza a través del protocolo S MTP (Simple Mail Transfer Protocol) Lectura de Correo: Este servicio sirve para transmitir el correo almacenado en la casilla (mailbox), desde el servidor de correo hacia el cliente. Actualmente existen dos estándares para implementar este servicio, POP3 (Post Office Protocol) e I MAP (Interactive Mail Access Protocol) 2003 Jorge Baier Aranda, PUC 62 Direcciones Electrónicas Una dirección electrónica sirve para nombrar una casilla de correo electrónico. Se usa para dirigir los mensajes de envı́o, pero también para especificar quién es el autor del correo. El RFC 822 especifica formalmente qué es una dirección electrónica. La siguiente es una simplificación de la gramática BNF que especifica cómo es una dirección electrónica. direccion ::= usuario"@"dominio | Nombre "<"usuario"@"dominio">" Un correo electrónico dirigido a usuario@dominio se debe entender como dirigido a la casilla de nombre usuario en la máquina especificada por dominio. A modo de comparación, la siguiente es una dirección electrónica usada por el complicado sistema X.400: /C=US/SP=MASSACHUSSETS/L=CAMBRIDGE/PA=360 MEMORIAL DR./CN=KEN SMITH 2003 Jorge Baier Aranda, PUC 63 Formato de Mensajes Cuando un usuario crea un mensaje de correo, éste es introducido dentro de un sobre electrónico que es entregado al servidor de correo. El sobre electrónico contiene el texto del mensaje y los archivos adjuntos, junto con ciertos encabezados (headers) La lista de headers más usados por los servidores de correo son los que aparecen a continuación: Encabezado Significado To: Cc: Bcc: From: Received: Return-Path: Dirección de correo de los receptores primarios Dirección de correo de los receptores secundarios Dirección de correo de los copias ocultas Dirección de correo del remitente del mensaje Lı́nea agregada por los servidores de correo Puede ser usada para especificar la dirección de retorno (rebote) 2003 Jorge Baier Aranda, PUC 64 Además de los headers usados por los servidores, el RFC 822 especifica una serie de encabezados que pueden ser usados por los clientes de correo o por los mismos usuarios. Los más comunes se listan en la siguiente tabla: Encabezado Significado Date: Reply-To: Message-id: In-Reply-To: References: Keywords: Subject: Fecha y hora de envı́o Dirección electrónica de respuesta Número de identificación del mensaje Número de referencia del mensaje que se responde Otros números de referencia relevantes. Palabras definidas por el usuario Texto de referencia 2003 Jorge Baier Aranda, PUC 65 Además de estos encabezados, los usuarios o clientes de correo, pueden inventar sus propios encabezados. Ésto es legal siempre que el header comience con X-. Algunos clientes de correo utilizan estos headers para enviar información adicional. Por ejemplo, Microsot Outlook Express 6.0, usa los headers X-Priority: 1 (Highest) X-MSMail-Priority: High X-Mailer: Microsoft Outlook, Build 10.0.2627 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 al enviar un mensaje con alta prioridad. 2003 Jorge Baier Aranda, PUC 66 Cómo se ve un mensaje El siguiente es un ejemplo de un mensaje de correo real: Return-Path: <[email protected]> Received: from gus.ing.puc.cl (gus.ing.puc.cl [146.155.4.5]) by ing.puc.cl (8.9.3/8.9.3) with ESMTP id MAA05867 for <[email protected]>; Fri, 16 Aug 2002 12:05:43 -0400 (CST) Received: from puc.cl (natri.puc.cl [146.155.99.33]) by gus.ing.puc.cl (Postfix) with SMTP id F02CB7B0A for <[email protected]>; Fri, 16 Aug 2002 12:05:42 -0400 (CLT) Received: (qmail 49402 invoked from network); 16 Aug 2002 16:13:08 -0000 Received: from test5.ing.puc.cl (HELO gladys2) ([146.155.5.251]) (envelope-sender <[email protected]>) by natri-smtp.puc.cl (qmail-ldap-1.03) with SMTP for <[email protected]>; 16 Aug 2002 16:13:08 -0000 Message-ID: <[email protected]> From: "=?iso-8859-1?Q?=C1lvaro_Lay_M.?=" <[email protected]> To: "Jorge Baier Aranda" <[email protected]> Subject: RV: hoy Date: Fri, 16 Aug 2002 12:11:57 -0400 X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.2615.200 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2615.200 Status: R X-Status: N Jorge, te envio esta info.... 2003 Jorge Baier Aranda, PUC 67 MIME Una de las desventajas de la especificación del RFC 822 es que los mensajes deben ser enteramente en formato ASCII. Hoy en dı́a: • Es necesario comunicarse en otros alfabetos latinos (castellano, por ejemplo). • También en alfabetos no latinos, como Ruso o Japonés. • Es necesario transmitir adjuntar archivos binarios. Una solución a esto viene dada por MIME (Multipurpose Internet Mail Extensions) En términos sencillos, un mensaje MIME mantiene la estructura de los mensajes anteriores, pero agrega información adicional en los encabezados y cuerpo del mensaje que permite transmitir estos contenidos especiales. 2003 Jorge Baier Aranda, PUC 68 Encabezados MIME A los encabezados ya definidos, MIME agregó 5 adicionales, que se describen en la siguiente tabla: Encabezado Significado MIME-version: Content-Description: Content-Id: Content-Transfer-Encoding: Content-Type: Versión MIME (se usa 1.0) String arbitrario que describe qué hay en el mensaje Identificador único Indica cómo se codifica el mensaje Naturaleza del mensaje El valor de Content-Transfer-Encoding indica cómo se codifica el mensaje, los valores más comunes son base64, usado para mensajes binarios y quoted-printable, usado para mensajes de texto con caracteres especiales. La codificación base64 divide a un grupo de 3 bytes (24 bits) en cuatro grupos de 6 bytes, que son transmitidos como 6 caracteres ASCII legales. 2003 Jorge Baier Aranda, PUC 69 El valor de Content-Type indica el tipo de archivo binario que se está codificando. Algunos de los más importantes aparecen en la siguiente tabla: Tipo Subtipo Descripción text text image image application multipart multipart plain richtext gif jpeg octet-stream alternative digest texto sin formato texto con formato imagen formato GIF imagen formato JPEG secuencia de bytes no interpretada mismo mensaje en 2 formatos distintos cada parte es un mensaje RFC 822 (usado al adjuntar mensajes) 2003 Jorge Baier Aranda, PUC 70 ¿Cómo se ve un mensaje MIME? A continuación se muestra un mensaje MIME real, que contiene texto y dos archivos adjuntos: Return-Path: <[email protected]> Received: from gus.ing.puc.cl (gus.ing.puc.cl [146.155.4.5]) by ing.puc.cl (8.9.3/8.9.3) with ESMTP id OAA25426 for <[email protected]>; Fri, 16 Aug 2002 14:55:11 -0400 (CST) Received: from web21402.mail.yahoo.com (web21402.mail.yahoo.com [216.136.232.72]) by gus.ing.puc.cl (Postfix) with SMTP id E10F77B03 for <[email protected]>; Fri, 16 Aug 2002 14:47:43 -0400 (CLT) Message-ID: <[email protected]> Received: from [146.155.13.37] by web21402.mail.yahoo.com via HTTP; Fri, 16 Aug 2002 11:55:08 PDT Date: Fri, 16 Aug 2002 11:55:08 -0700 (PDT) From: Jorge Baier <[email protected]> Subject: Hola To: [email protected] MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-1979263679-1029524108=:36516" Status: R X-Status: N --0-1979263679-1029524108=:36516 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hola Jorge: 2003 Jorge Baier Aranda, PUC 71 Te adjunto los archivos de los que hablamos. Saludos, Jorge. __________________________________________________ Do You Yahoo!? HotJobs - Search Thousands of New Jobs http://www.hotjobs.com --0-1979263679-1029524108=:36516 Content-Type: application/octet-stream; name="om.pl" Content-Transfer-Encoding: base64 Content-Description: om.pl Content-Disposition: attachment; filename="om.pl" Oi1jb25zdWx0KHBnb2xvZykuCgolUHJpbWl0aXZlIGFjdGlvbnM6CgolICB0 [resto de codificación borrada] YzEpXSkpLgoKCgoKCgoKCgoKCgo= --0-1979263679-1029524108=:36516 Content-Type: image/jpeg; name="recorte.jpg" Content-Transfer-Encoding: base64 Content-Description: recorte.jpg Content-Disposition: inline; filename="recorte.jpg" /9j/4AAQSkZJRgABAQEASgBLAAD//gAXQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q [resto de codificación borrada] KUpSlKUpSlf/2Q== --0-1979263679-1029524108=:36516-- 2003 Jorge Baier Aranda, PUC 72 Transmisión de Mensajes Hasta el momento hemos visto cómo se arman los mensajes, pero no hemos dicho nada de cómo se transmiten a través de Internet. Para transmitir un mensaje de correo, la máquina de origen (fuente) se comunica con el servidor de correo estableciendo una conexión TCP a la puerta 25 de la máquina de destino. El protocolo que utilizan durante la conexión es SMTP (Simple Mail Transfer Protocol). Este servicio recibe el mensaje y lo copia en las casillas de texto apropiadas. SMTP está definido en el RFC 821 y es un protocolo de texto, es decir, todo los que se transmite son caracteres ASCII. Posteriormente, un nuevo protocolo, ESMTP soluciona algunos problemas de SMTP (por ejemplo, infinitos hops) e incorpora nuevas funcionalidades. En cuanto se establece una conexión la máquina de origen envı́a el mensaje HELO, seguido de su dominio. 2003 Jorge Baier Aranda, PUC 73 A continuación, se envian los comandos MAIL FROM:, seguido de la dirección electrónica de origen. Luego RCPT TO: seguido de la dirección de destino, luego, DATA, seguido del sobre electrónico (headers y mensaje) Finalmente, el mensaje se termina con un punto . y se envı́a QUIT. 2003 Jorge Baier Aranda, PUC 74 A continuación se muestra el resultado de una interacción entre un cliente y un servidor SMTP 7. $ telnet smtp.ing.puc.cl 25 C: HELO domeyko.ing.puc.cl S: 250 gus.ing.puc.cl C: MAIL FROM: <[email protected]> S: 250 Ok C: RCPT TO: <[email protected]> S: 250 Ok C: DATA S: 354 End data with <CR><LF>.<CR><LF> C: From: Alvaro Campos <[email protected]> C: To: [email protected] C: Subject: Hola C: C: Hola! C: C: Este es un mensaje falso... C: C: Jorge. 7 Las lı́neas que comienzan con C: son enviadas por el cliente y las que comienzan con S: por el servidor. 2003 Jorge Baier Aranda, PUC 75 C: C: S: C: S: . 250 Ok: queued as 933137B0D QUIT 221 Bye Cuando el mensaje es recibido por el servidor SMTP, existen dos posibilidades: • Que la casilla de destino sea manejada por el servidor. En este caso el mensaje es copiado en la casilla. • Que la casilla de destino no sea manejada por el servidor. En este caso, el servidor lo introduce en una cola y establece una conexión con el servidor de destino para enviar el correo. Este proceso se conoce como Relaying. Los servidores que interactúan en la transmisión de un mensaje desde la máquina cliente algarrobo.ing.puc.cl a [email protected], se muestran en la siguiente figura: 2003 Jorge Baier Aranda, PUC 76 Cliente algarrobo.ing.puc.cl SMTP Server smtp.ing.puc.cl SMTP Server smtp.netred.cl Sistema de Archivos Normalmente, un servidor SMTP sólo funciona como Relay para un conjunto reducido de computadores. Por ejemplo, la máquina smtp.ing.puc.cl sólo hace relay para las máquinas que están en el dominio ing.puc.cl. 2003 Jorge Baier Aranda, PUC 77 El siguiente es un ejemplo, de la respuesta que da el servidor cuando se intenta usar a mail.entelchile.net desde un dominio que está fuera de entelchile.net: > telnet mail.entelchile.net 25 Trying 164.77.62.8... Connected to mail.entelchile.net. Escape character is ’^]’. 220 mta1.entelchile.net ESMTP server ready Fri, 16 Aug 2002 19:00:26 -0400 HELO fake.entelchile.net 250 mta1.entelchile.net MAIL FROM: <[email protected]> 250 Sender <[email protected]> Ok RCPT TO: <[email protected]> 550 relaying mail to ing.puc.cl is not allowed DATA 503 No recipients specified 2003 Jorge Baier Aranda, PUC 78