11.07.2015 Views

Redes de computadores - Universitat Oberta de Catalunya

Redes de computadores - Universitat Oberta de Catalunya

Redes de computadores - Universitat Oberta de Catalunya

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Software libreJosé María Barceló OrdinasJordi Íñigo GrieraRamón Martí EscaléEnric Peig OlivéXavier Perramon TornilXP04/90786/00020<strong>Re<strong>de</strong>s</strong><strong>de</strong> <strong>computadores</strong>UFormación <strong>de</strong> Posgrado


David Megías Jiménez Jordi Mas i Hernán<strong>de</strong>z Enric Peig OlivéCoordinador Coordinador CoordinadorIngeniero en Informática por la UAB.Magíster en Técnicas Avanzadas<strong>de</strong> Automatización <strong>de</strong> Procesospor la UAB.Doctor en Informática por la UAB.Profesor <strong>de</strong> los Estudios <strong>de</strong> Informáticay Multimedia<strong>de</strong> la UOC.Ingeniero <strong>de</strong> software en la empresa<strong>de</strong> código abierto Ximian, don<strong>de</strong>trabaja en la implementación<strong>de</strong>l proyecto libre Mono. Comovoluntario, colabora en el <strong>de</strong>sarrollo<strong>de</strong>l procesador <strong>de</strong> textos Abiwordy en la ingeniería <strong>de</strong> las versionesen catalán <strong>de</strong>l proyecto Mozillay Gnome. Es también coordinadorgeneral <strong>de</strong> Softcatalà. Como consultorha trabajado para empresas comoMenta, Telépolis, Vodafone, Lotus,eresMas, Amena y Terra España.Doctor ingeniero <strong>de</strong>Telecomunicaciones por la <strong>Universitat</strong>Pompeu Fabra. Actualmente trabajaen la especificación <strong>de</strong> metadatosaplicados al comercio electrónico.Es profesor en los Estudios <strong>de</strong>Informática <strong>de</strong> la UPF.José María BarcelóOrdinasAutorDoctor ingeniero <strong>de</strong>Telecomunicaciones por laUniversidad Politécnica <strong>de</strong> Cataluña.Actualmente trabaja en la evaluación<strong>de</strong> re<strong>de</strong>s ATM y en la mo<strong>de</strong>lización <strong>de</strong>tráfico en re<strong>de</strong>s informáticas. Esprofesor <strong>de</strong>l Grupo <strong>de</strong> <strong>Re<strong>de</strong>s</strong> <strong>de</strong>Computadores en la Facultad <strong>de</strong>Informática <strong>de</strong> Barcelona.Jordi Íñigo GrieraAutorIngeniero <strong>de</strong> Telecomunicación por la<strong>Universitat</strong> Politècnica <strong>de</strong> <strong>Catalunya</strong>.Actualmente es Director <strong>de</strong> Desarrollo<strong>de</strong> Software <strong>de</strong> Safelayer SecureCommunications, S.A. Ha sidoDirector Técnico <strong>de</strong>l esCERT (Equipo <strong>de</strong> Seguridad para la Coordinación <strong>de</strong>Emergencias en <strong>Re<strong>de</strong>s</strong> Telemáticas)<strong>de</strong> la UPC. Es profesor <strong>de</strong>l Grupo<strong>de</strong> <strong>Re<strong>de</strong>s</strong> <strong>de</strong> Computadores en laFacultad <strong>de</strong> Informática <strong>de</strong> Barcelona.Ramon Martí EscaléAutorDoctor ingeniero <strong>de</strong> Telecomunicaciónpor la <strong>Universitat</strong> Politècnica <strong>de</strong><strong>Catalunya</strong>. Actualmente trabaja en laseguridad en aplicaciones distribuidas<strong>de</strong> comercio electrónico <strong>de</strong>información multimedia. Es profesor<strong>de</strong> los Estudios <strong>de</strong> Ingeniería <strong>de</strong>Telecomunicación <strong>de</strong> la <strong>Universitat</strong>Pompeu Fabra <strong>de</strong> Barcelona.Xavier Perramon TornilAutorDoctor ingeniero <strong>de</strong> Telecomunicaciónpor la <strong>Universitat</strong> Politècnica <strong>de</strong><strong>Catalunya</strong>. Actualmente trabaja enel diseño y estandarización <strong>de</strong> sistemas<strong>de</strong> documentación multimedia. Esprofesor <strong>de</strong> los Estudios <strong>de</strong> Informática<strong>de</strong> la <strong>Universitat</strong> Pompeu Fabra<strong>de</strong> Barcelona.Primera edición: marzo 2004© Fundació per a la <strong>Universitat</strong> <strong>Oberta</strong> <strong>de</strong> <strong>Catalunya</strong>Av. Tibidabo, 39-43, 08035 BarcelonaMaterial realizado por Eureca Media, SL© Autores: José María Barceló Ordinas, Jordi Íñigo Griera, Ramon Martí Escalé, Enric Peig Olivéy Xavier Perramon TornilDepósito legal: B-7.598-2004ISBN: 84-9788-117-6Se garantiza permiso para copiar, distribuir y modificar este documento según los términos <strong>de</strong> la GNU Free Documentation License,Version 1.2 o cualquiera posterior publicada por la Free Software Foundation, sin secciones invariantes ni textos <strong>de</strong> cubierta<strong>de</strong>lantera o trasera. Se dispone <strong>de</strong> una copia <strong>de</strong> la licencia en el apartado “GNU Free Documentation License” <strong>de</strong> este curso.Pue<strong>de</strong> encontrarse una versión <strong>de</strong> la última versión <strong>de</strong> este documento en http://curso-sobre.berlios.<strong>de</strong>/introsobre.


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020ÍndiceAgra<strong>de</strong>cimientos ........................................................... 9Introducción .................................................................. 11Objetivos ....................................................................... 15I. Introducción a las re<strong>de</strong>s <strong>de</strong> <strong>computadores</strong> .............. 171. Breve historia <strong>de</strong> las comunicaciones ...................... 191.1. El teléfono ........................................................... 191.2. Aparecen los primeros or<strong>de</strong>nadores ...................... 261.2.1. Los mó<strong>de</strong>ms .............................................. 271.2.2. Las re<strong>de</strong>s <strong>de</strong> datos ..................................... 281.2.3. Las re<strong>de</strong>s <strong>de</strong> área local .............................. 301.3. Arquitecturas <strong>de</strong> protocolos .................................. 301.3.1. La digitalización <strong>de</strong> la red telefónica ........... 331.3.2. La red digital <strong>de</strong> servicios integrados ........... 351.4. La banda ancha ................................................... 351.5. La telefonía móvil ................................................. 362. Arquitecturas <strong>de</strong> protocolos: el mo<strong>de</strong>lo OSI ............ 392.1. Definición ............................................................ 392.2. Los protocolos ..................................................... 402.3. Los servicios ......................................................... 422.4. Nivel físico ........................................................... 432.4.1. Nivel <strong>de</strong> enlace .......................................... 432.4.2. Los siete niveles <strong>de</strong>l mo<strong>de</strong>lo OSI ................. 432.4.3. Nivel <strong>de</strong> red ............................................... 442.4.4. Nivel <strong>de</strong> transporte ..................................... 462.4.5. Niveles <strong>de</strong> sesión, presentación y aplicación ... 46II. <strong>Re<strong>de</strong>s</strong> <strong>de</strong> área local ................................................... 493. Las re<strong>de</strong>s <strong>de</strong> área local ............................................ 514. Topologías <strong>de</strong> las LAN ............................................. 554.1. Topología en estrella ............................................ 55ANOTACIONES3


ª FUOC • XP04/90786/00020Software libre4.2. Topología en bus ................................................ 564.3. Topología en anillo ............................................. 574.4. Pseudotopología <strong>de</strong> las re<strong>de</strong>s inalámbricas ........... 585. Cableado estructurado ............................................ 616. Control <strong>de</strong> acceso al medio ..................................... 656.1. Paso <strong>de</strong> testigo .................................................... 656.2. CSMA/CD ........................................................... 66III.TCP/IP ...................................................................... 697. Estructura <strong>de</strong> protocolos en Internet ....................... 717.1. Protocolos <strong>de</strong> Internet .......................................... 737.2. Encapsulamiento ................................................. 748. El IP (Internet protocol) ............................................ 778.1. Direcciones IP ...................................................... 788.1.1. Máscaras <strong>de</strong> red ....................................... 808.1.2. Direcciones <strong>de</strong> propósito especial ............... 818.2. El formato <strong>de</strong>l paquete IP ..................................... 848.2.1. Fragmentación .......................................... 898.3. Direccionamiento y direccionadores ..................... 918.3.1. La tabla <strong>de</strong> direccionamiento ..................... 939. El ARP (address resolution protocol) ........................ 9710. El ICMP (Internet control message protocol) .......... 10110.1. Mensajes ICMP ............................................... 10110.2. El programa ping .......................................... 10310.3. El programa traceroute .............................. 10510.4. Mensaje <strong>de</strong> redireccionamiento ........................ 108ANOTACIONES11. <strong>Re<strong>de</strong>s</strong> <strong>de</strong> acceso a Internet .................................... 11111.1. Acceso telefónico: el PPP .................................. 11211.1.1.Compresión <strong>de</strong> las cabeceras ............... 11311.1.2.MTU .................................................... 11411.2. Acceso ADSL ................................................... 11611.3. Acceso LAN: el protocolo Ethernet .................... 11811.3.1.Formato <strong>de</strong> la trama Ethernet ............... 11911.3.2.Tipos <strong>de</strong> medios físicos en Ethernet ....... 12211.3.3.Direcciones LAN ................................... 1244


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002012. Protocolos <strong>de</strong>l nivel <strong>de</strong> transporte .......................... 12713. El UDP (user datagram protocol) ............................ 13114. El TCP (transmission control protocol) .................... 13514.1. El TCP proporciona fiabilidad ........................... 13514.2. Formato <strong>de</strong>l segmento TCP .............................. 13714.3. Establecimiento <strong>de</strong> la conexión ......................... 14314.4. Terminación <strong>de</strong> la conexión .............................. 14714.5. Diagrama <strong>de</strong> estados <strong>de</strong>l TCP .......................... 14914.6. Transferencia <strong>de</strong> la información ........................ 15114.6.1.Transmisión <strong>de</strong> datos interactivos ........... 15314.6.2.Transmisión <strong>de</strong> datos <strong>de</strong> gran volumen.Control <strong>de</strong> flujo por ventana <strong>de</strong>slizante....... 15414.6.3.Temporizadores y retransmisiones ......... 160IV. Aplicaciones Internet................................................ 16315. El mo<strong>de</strong>lo cliente/servidor ..................................... 16515.1. El mo<strong>de</strong>lo peer-to-peer ..................................... 16816. Servicio <strong>de</strong> nombres Internet ................................. 17116.1. El sistema <strong>de</strong> nombres <strong>de</strong> dominio .................... 17216.2. Mo<strong>de</strong>lo <strong>de</strong>l DNS .............................................. 17416.3. Base <strong>de</strong> datos DNS: los registros <strong>de</strong> recurso ...... 17816.4. Protocolo ......................................................... 18316.4.1.Mecanismos <strong>de</strong> transporte ..................... 18316.4.2.Mensajes .............................................. 18416.4.3.Representación <strong>de</strong> los registros <strong>de</strong> recurso 18716.5. Implementaciones <strong>de</strong>l DNS .............................. 19017. Servicios básicos <strong>de</strong> Internet .................................. 19317.1. Terminal virtual: el protocolo Telnet .................. 19317.2. Principios básicos <strong>de</strong>l protocolo Telnet .............. 19417.3. Comandos <strong>de</strong>l protocolo Telnet ........................ 19817.4. Implementaciones <strong>de</strong>l protocolo Telnet .............. 20017.5. Terminal virtual en GNU/Linux:el protocolo rlogin ................................................ 20117.5.1.Conceptos básicos <strong>de</strong>l protocolo rlogin .. 20217.5.2.Implementación <strong>de</strong>l protocolo rlogin ...... 20217.6. Otros servicios ................................................. 20417.6.1.Ejecución remota con autenticaciónautomática: rsh ..................................... 20417.6.2.Ejecución remota: rexec ........................ 20617.6.3.Servicios triviales ................................... 206ANOTACIONES5


ª FUOC • XP04/90786/00020Software libre18. Transferencia <strong>de</strong> ficheros ...................................... 20918.1. FTP: protocolo <strong>de</strong> transferencia <strong>de</strong> ficheros ....... 20918.1.1.El mo<strong>de</strong>lo <strong>de</strong>l FTP ................................. 21018.1.2.Conceptos básicos <strong>de</strong>l FTP .................... 21218.1.3.Funcionalidad <strong>de</strong>l FTP .......................... 21618.1.4.Implementaciones <strong>de</strong>l FTP ..................... 22718.1.5.Ejemplo <strong>de</strong> sesión FTP .......................... 22918.2. El TFTP ............................................................ 23018.2.1.Conceptos básicos <strong>de</strong>l TFTP .................. 23118.2.2.Funcionalidad <strong>de</strong>l TFTP ......................... 23218.2.3.Implementaciones <strong>de</strong>l TFTP.................... 235ANOTACIONES19. Correo electrónico Internet .................................... 23719.1. Formato <strong>de</strong> los mensajes: el RFC 822 .............. 23819.1.1.Información <strong>de</strong> la cabecera .................. 23919.1.2.Ejemplo ............................................... 24419.2. El SMTP .......................................................... 24419.2.1.Mo<strong>de</strong>lo <strong>de</strong>l SMTP ................................. 24519.2.2.Direcciones <strong>de</strong> correo ........................... 24619.2.3.Envío <strong>de</strong> correo y mensajes a terminales .. 24719.2.4.Conceptos básicos <strong>de</strong>l SMTP ................. 24719.2.5.Funcionalidad <strong>de</strong>l SMTP ........................ 24719.2.6.Códigos <strong>de</strong> respuesta ........................... 25019.2.7.Extensiones SMTP para mensajes <strong>de</strong> 8 bits . 25219.2.8.Ejemplo ............................................... 25319.3. Acceso simple a los buzones <strong>de</strong> correo: el POP3 25419.3.1.Mo<strong>de</strong>lo <strong>de</strong>l POP3 ................................. 25519.3.2.Conceptos básicos <strong>de</strong>l POP3 ................. 25619.3.3.Funcionalidad <strong>de</strong>l POP3 ....................... 25719.3.4.Ejemplo ............................................... 26119.4. Acceso complejo a los buzones <strong>de</strong> correo:el IMAP4rev1 .................................................. 26219.4.1.Mo<strong>de</strong>lo <strong>de</strong>l IMAP4 ................................ 26219.4.2.Conceptos básicos <strong>de</strong>l IMAP4 ............... 26319.4.3.Funcionalidad <strong>de</strong>l IMAP4 ...................... 26719.4.4.Ejemplo ............................................... 27319.5. Extensiones multimedia: el formato MIME ......... 27419.5.1.Nuevos campos <strong>de</strong> cabecera ................ 27519.5.2.Extensiones para texto no ASCIIen las cabeceras .................................. 28019.5.3.Mensajes multiparte ............................. 28119.5.4.Ejemplo ............................................... 28120. Servicio <strong>de</strong> noticias: el NNTP ................................. 28320.1. El mo<strong>de</strong>lo NNTP .............................................. 28320.2. Conceptos básicos <strong>de</strong>l NNTP ........................... 2876


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002020.3. Formato <strong>de</strong> los artículos ................................... 28820.4. Comandos <strong>de</strong>l NNTP ....................................... 29121. Servicio hipermedia: WWW ................................... 29921.1. Documentos hipermedia .................................. 29921.2. Marcado: el SGML ........................................... 30021.2.1.Transferencia <strong>de</strong> hipermedia: el HTTP .... 30121.2.2.Direccionamiento: i<strong>de</strong>ntificadoresuniformes <strong>de</strong> recurso (URI) .................... 30221.3. Conceptos básicos <strong>de</strong>l HTTP ............................. 30521.4. Métodos <strong>de</strong>l servicio HTTP ................................ 31521.5. Intermediarios: proxies y pasarelas ................... 31722. Mensajería instantánea .......................................... 31922.1. Programas <strong>de</strong> mensajería instantánea .............. 32022.1.1.ICQ ..................................................... 32022.1.2.AIM ...................................................... 32122.1.3.MSN Messenger .................................... 32122.1.4.Jabber .................................................. 32122.1.5.GAIM ................................................... 321Resumen ....................................................................... 323Bibliografía ................................................................... 329Anexos .......................................................................... 331GNU Free Documentation License ............................... 341ANOTACIONES7


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Agra<strong>de</strong>cimientosLos autores agra<strong>de</strong>cen a la Fundación para la <strong>Universitat</strong> <strong>Oberta</strong> <strong>de</strong><strong>Catalunya</strong> (http://www.uoc.edu) la financiación <strong>de</strong> la primera edición<strong>de</strong> esta obra, enmarcada en el Máster Internacional en SoftwareLibre ofrecido por la citada institución.ANOTACIONES9


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020IntroducciónLas re<strong>de</strong>s <strong>de</strong> or<strong>de</strong>nadores actuales son una amalgama <strong>de</strong> dispositivos,técnicas y sistemas <strong>de</strong> comunicación que han ido apareciendo <strong>de</strong>s<strong>de</strong> finales<strong>de</strong>l siglo XIX o, lo que es lo mismo, <strong>de</strong>s<strong>de</strong> la invención <strong>de</strong>l teléfono.El teléfono, que se <strong>de</strong>sarrolló exclusivamente para transmitir voz, hoy seutiliza, en muchos casos, para conectar or<strong>de</strong>nadores entre sí. Des<strong>de</strong> entonceshan aparecido las re<strong>de</strong>s locales, las conexiones <strong>de</strong> datos a largadistancia con enlaces transoceánicos o satélites, la telefonía móvil, etc.Mención especial merece la red Internet <strong>de</strong>ntro <strong>de</strong> este mundo <strong>de</strong> las comunicacionesa distancia. Nadie duda <strong>de</strong> que hoy en día constituye unared básica <strong>de</strong> comunicación entre los humanos.Este curso ofrece una visión <strong>de</strong> las re<strong>de</strong>s informáticas en general y <strong>de</strong> lared Internet en particular.En la primera parte, introduciremos las i<strong>de</strong>as y los conceptos básicos <strong>de</strong>las re<strong>de</strong>s <strong>de</strong> or<strong>de</strong>nadores. Siguiendo un hilo histórico, presentaremoslos diferentes mecanismos que se han utilizado y se utilizan para comunicarsea distancia. Presentaremos igualmente el concepto <strong>de</strong> arquitectura<strong>de</strong> protocolos, fundamental en sistemas distribuidos, y el mo<strong>de</strong>lo <strong>de</strong>referencia OSI como un ejemplo paradigmático <strong>de</strong> ello. Aunque hoy endía este mo<strong>de</strong>lo no disfruta <strong>de</strong> una gran popularidad, sus virtu<strong>de</strong>s pedagógicasestán más que <strong>de</strong>mostradas: a partir <strong>de</strong> él es fácil estudiar yenten<strong>de</strong>r otras arquitecturas, como la arquitectura Internet en torno a lacual gira todo el curso.La segunda parte está <strong>de</strong>dicada al estudio <strong>de</strong> las re<strong>de</strong>s <strong>de</strong> área local.Presentamos <strong>de</strong> forma <strong>de</strong>scriptiva los diferentes tipos <strong>de</strong> re<strong>de</strong>s que existen,las i<strong>de</strong>as básicas <strong>de</strong> su funcionamiento y la noción <strong>de</strong> cableado estructurado,clave en el gran auge que han tenido últimamente las re<strong>de</strong>s<strong>de</strong> área local.En la tercera parte se verán los fundamentos <strong>de</strong> la red Internet. Loque se conoce como red Internet es un conjunto heterogéneo <strong>de</strong> re<strong>de</strong>sinterconectadas. Precisamente, es la capacidad <strong>de</strong> homogenei-NotaANOTACIONESInternet es un apócope <strong>de</strong>internetworking (interconectandore<strong>de</strong>s).11


ª FUOC • XP04/90786/00020Software librezar lo que <strong>de</strong> hecho es heterogéneo, lo que ha catapultado la redInternet a su estatus actual.Los protocolos que distinguen la red Internet como una unidad sonel IP (Internet protocol) y el TCP (Transmission control protocol). Estosprotocolos no son los únicos, pero sí los más importantes <strong>de</strong> entre losque se necesitan para hacer funcionar la red Internet. Por este motivo,a todos en conjunto se les llama normalmente pila TCP/IP (TCP/IP stack).En concreto, en esta parte se <strong>de</strong>scribe el protocolo IP y sus más inmediatoscolaboradores (ARP y ICMP), así como los mecanismos <strong>de</strong> accesoa Internet <strong>de</strong> que disponemos: a través <strong>de</strong> una red <strong>de</strong> área localo un enlace telefónico, ya sea mediante PPP y un mó<strong>de</strong>m tradicional o,más recientemente, mediante ADSL.TCP/IP no es un estándar <strong>de</strong> iure. Ningún organismo internacional<strong>de</strong> estandarización se ha encargado <strong>de</strong> emitirlo. Por el contrario, elfuncionamiento <strong>de</strong> sus protocolos está recogido en unos documentosllamados RFC (request for comments), que son propuestas que se hanhecho sobre el funcionamiento <strong>de</strong> un protocolo concreto, o <strong>de</strong> unaparte. El proceso es simple: una vez hecha pública una propuesta, sinadie pone ninguna objección, ya se consi<strong>de</strong>ra aprobada y lista paraser implementada.NotaLas RFC se pue<strong>de</strong>n consultaren la siguiente dirección:http://www.ietf.org.A<strong>de</strong>más <strong>de</strong> consultar este material didáctico y la bibliografía recomendada,en que se explican los protocolos <strong>de</strong> una forma pedagógica,se recomienda leer alguna RFC, aunque sólo sea para hacerseuna i<strong>de</strong>a <strong>de</strong>l proceso que ha seguido la Red <strong>de</strong>s<strong>de</strong> sus iniciosANOTACIONESEn la cuarta parte, <strong>de</strong>scribiremos los protocolos <strong>de</strong> aplicación másutilizados actualmente en Internet y los programas más habitualesque los implementan, como son la conexión remota (telnet, rlogin),la transferencia <strong>de</strong> archivos (FTP), el correo electrónico (SMTP, POP,IMAP), las news (NNTP), el WWW (HTTP) y la mensajería instantánea.Todos estos programas se conocen como aplicaciones distribuidas,puesto que están formadas por distintas partes que pue<strong>de</strong>n estarejecutándose en máquinas diferentes. Esta dispersión <strong>de</strong> partes <strong>de</strong>programas obliga a <strong>de</strong>finir una manera <strong>de</strong> dialogar entre ellas.12


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Veremos pues, antes <strong>de</strong> empezar la <strong>de</strong>scripción <strong>de</strong> las diferentesaplicaciones, este concepto <strong>de</strong> programación distribuida y el mo<strong>de</strong>locliente/servidor que es el que sigue mayoritariamente.Las aplicaciones Internet permiten conocer las máquinas y los serviciosa través <strong>de</strong> nombres, y no con números que es como trabajanIP, TCP y UDP. Alguien tiene que encargarse <strong>de</strong> la asociación <strong>de</strong> losnombres con las direcciones numéricas y este alguien es el servicioDNS (Domain Name System). También trateremos este tema antes <strong>de</strong><strong>de</strong>scribir las aplicaciones.ANOTACIONES13


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020ObjetivosCon los materiales <strong>de</strong> este curso se preten<strong>de</strong> que el lector alcance losobjetivos siguientes:1. Conocer las diferentes tecnologías que se utilizan en la actualidadpara transmitir información a distancia, y compren<strong>de</strong>rcuándo y por qué aparecieron.2. Conocer el mo<strong>de</strong>lo <strong>de</strong> referencia OSI, sus utilida<strong>de</strong>s y sus limitaciones,y ser capaz <strong>de</strong> enten<strong>de</strong>r la motivación <strong>de</strong> cada uno <strong>de</strong>sus niveles.3. Conocer los principios básicos <strong>de</strong> funcionamiento <strong>de</strong> las re<strong>de</strong>s<strong>de</strong> área local tanto cableadas como inalámbricas, las topologíasposibles y las diferentes políticas <strong>de</strong> acceso al medio.4. Conocer el concepto <strong>de</strong> cableado estructurado, enten<strong>de</strong>r el papelque en él juegan los concentradores y saber diferenciar topologíafísica y topología lógica.5. Enten<strong>de</strong>r los principios <strong>de</strong> funcionamiento <strong>de</strong>l protocolo <strong>de</strong> nivel<strong>de</strong> red IP: la asignación <strong>de</strong> direcciones y el direccionamiento.6. Apren<strong>de</strong>r el funcionamiento <strong>de</strong> las re<strong>de</strong>s <strong>de</strong> acceso a Internetmás comunes: acceso LAN y acceso per red telefónica mediantePP o ADSL.7. Enten<strong>de</strong>r el funcionamiento <strong>de</strong> los protocolos <strong>de</strong> transporte y saberen qué principios se basan.8. Conocer algunas utilida<strong>de</strong>s <strong>de</strong> uso común que permiten <strong>de</strong>scubriralgunas interiorida<strong>de</strong>s <strong>de</strong> estos protocolos <strong>de</strong> red y transporte.9. Compren<strong>de</strong>r el mo<strong>de</strong>lo cliente/servidor, que sirve como base <strong>de</strong>la implementación <strong>de</strong> aplicaciones distribuidas y el mo<strong>de</strong>lo peerto-peer,complementario <strong>de</strong>l anterior.10. Compren<strong>de</strong>r el funcionamiento <strong>de</strong>l DNS, el servicio <strong>de</strong> nombres<strong>de</strong> dominio, que da soporte al resto <strong>de</strong> aplicaciones.ANOTACIONES15


I. Introducción a las re<strong>de</strong>s<strong>de</strong> <strong>computadores</strong>


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000201. Breve historia <strong>de</strong> las comunicacionesDes<strong>de</strong> que el ser humano tiene capacidad <strong>de</strong> comunicarse ha <strong>de</strong>sarrolladomecanismos y sistemas que les permiten establecer esta comunicacióna distancias superiores <strong>de</strong> las alcanzadas por suspropios medios.Al poco <strong>de</strong> aparecer los or<strong>de</strong>nadores, se sintió la necesidad <strong>de</strong> interconectarlospara que se pudiesen comunicar entre sí como lo hacemoslos humanos.En esta unidad nos planteamos repasar la historia <strong>de</strong> estos sistemas<strong>de</strong> comunicación, pensados para ser usados por los humanos y que,<strong>de</strong>spués, han ido evolucionando para interconectar or<strong>de</strong>nadores.Fijamos el inicio <strong>de</strong> este recorrido histórico en el teléfono. El teléfonono fue el primer sistema <strong>de</strong> telecomunicación, pero sí el más antiguo<strong>de</strong> los que hoy en día se utilizan habitualmente. Mucho antes se habíanutilizado sistemas ópticos que, con la luz <strong>de</strong>l sol y juegos <strong>de</strong> espejos,permitían comunicarse <strong>de</strong>s<strong>de</strong> distancias consi<strong>de</strong>rables. Conposterioridad, a mediados <strong>de</strong>l siglo XIX, se inventó el telégrafo. Estossistemas, sin embargo, han caído en <strong>de</strong>suso (excepto usos marginales),mientras que la red telefónica se mantiene como un sistema <strong>de</strong>comunicación <strong>de</strong> primer or<strong>de</strong>n.1.1. El teléfonoEn 1878, Alexan<strong>de</strong>r Graham Bell mostró su “máquina eléctrica parlante”y cómo podía mantener una conversación a distancia entredos <strong>de</strong> estos aparatos unidos por un hilo eléctrico.NotaRecientes investigaciones han hecho salir a la luz unahistoria curiosa: parece claro que el inventor <strong>de</strong>l telé-NotaPodéis encontrar la historiacompleta <strong>de</strong> este episodioen la siguiente dirección:http://www.popular-science.net/history/meucci_bell.html.ANOTACIONES19


ª FUOC • XP04/90786/00020Software librefono fue un italiano llamado Antonio Meucci, perono patentó su invento porque no tenía suficiente dineropara hacerlo. Bell se apropió <strong>de</strong>l invento y lopatentó.Al principio, los pocos teléfonos que existían se utilizaban en entornoscerrados, particulares. Servían para interconectar dos espacios. A medidaque el número <strong>de</strong> teléfonos instalados crecía, el interés por mantenermúltiples comunicaciones también lo hacía: era preciso pensar en lamanera <strong>de</strong> interconectarlos. Nacía la i<strong>de</strong>a <strong>de</strong> red <strong>de</strong> comunicaciones.Una posible manera, bastante inmediata, <strong>de</strong> interconectar todos losaparatos sería lo que se pue<strong>de</strong> observar en la figura siguiente:Figura 1.ANOTACIONESEs evi<strong>de</strong>nte que este mo<strong>de</strong>lo <strong>de</strong> conexión, “todos con todos”, es completamenteinviable: para cada aparato nuevo que se incorpora a lared, se precisa un gran número <strong>de</strong> conexiones nuevas. Para hacernosuna i<strong>de</strong>a, una red “todos con todos” <strong>de</strong> cincuenta teléfonos necesita1.225 líneas <strong>de</strong> conexión y, en cada teléfono, un dispositivoque permita cuarenta y nueve conexiones.Para solucionar este problema, aparecieron compañías que ofrecíanun servicio <strong>de</strong> commutación: hacían llegar un cable hasta cada teléfonoy conectaban los cables <strong>de</strong> los teléfonos que <strong>de</strong>seaban estableceruna comunicación. De este modo, cada aparato disponía <strong>de</strong>una sola conexión y no era necesario establecer ninguna variación enla misma para incorporar nuevos aparatos a la red.20


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Figura 2.De aquí provienen términos hoy tan comunes como abonado (el usuarioque se abona a una central), bucle <strong>de</strong> abonado (el cable que une alabonado con la central) o central <strong>de</strong> conmutación.La tarea <strong>de</strong> conmutar las conexiones, al principio, se hacía a mano.Cuando alguien quería realizar una llamada, <strong>de</strong>scolgaba y pedía a laoperadora que le conectara con quien <strong>de</strong>seaba hablar. Una vez finalizadala comunicación, la operadora <strong>de</strong>sconectaba los cables y, así, laslíneas quedaban preparadas para recibir otras llamadas.Las operadoras humanas fueron sustituidas progresivamente por ingenioselectromecánicos: las centralitas. Se incorporó a los teléfonos undisco con números para “marcar” el número <strong>de</strong>l <strong>de</strong>stinatario <strong>de</strong> lallamada. La centralita <strong>de</strong>scodificaba este número para saber entre quédos cables era preciso establecer la comunicación.Este servicio <strong>de</strong> conmutación empezó en el ámbito local: un barrio, unpueblo, una ciudad. El paso siguiente consistió en ofrecer conexiones alarga distancia, conectando centrales locales entre sí directamente, opor medio <strong>de</strong> centrales <strong>de</strong> tráfico.Figura 3. Comunicación entre dos centrales <strong>de</strong> conmutaciónEntre las dos centrales locales se establece un enlace con diferentes cablesin<strong>de</strong>pendientes, <strong>de</strong> manera que los abonados <strong>de</strong> una <strong>de</strong> éstasANOTACIONES21


ª FUOC • XP04/90786/00020Software librepue<strong>de</strong>n, a<strong>de</strong>más <strong>de</strong> conectarse entre ellos, conectar con los abonados<strong>de</strong> la otra: se elige un cable <strong>de</strong> los que forman el enlace, se conectacon el abonado local y se pi<strong>de</strong> a la otra central que conecte el enlacecon el abonado <strong>de</strong>stino, si no está ocupado con otra llamada.La conexión entre las dos centrales comporta un primer escollo importante:es preciso <strong>de</strong>cidir con cuántas líneas diferentes se llevará a cabo.Supongamos que la central A <strong>de</strong> la figura anterior proporciona servicioa cien abonados y la B, a doscientos cincuenta. Parece que, si sepreten<strong>de</strong> dar el mejor servicio posible, se necesitan cien líneas paraque todos los abonados <strong>de</strong> la central A puedan hablar <strong>de</strong> manera simultáneacon otros tantos <strong>de</strong> la central B.No obstante, la probabilidad <strong>de</strong> que todos los abonados <strong>de</strong> una centralrealicen una llamada al mismo momento es muy baja, puesto quelas llamadas telefónicas son, en general, cortas y esporádicas. Por tanto,es completamente innecesario que la conexión entre las dos centralescontemple todas las llamadas posibles: esta situación no se daránunca y tiene un coste exagerado.ANOTACIONESNotaA.K. Erlang, ingeniero danés<strong>de</strong> principios <strong>de</strong>l siglo xx, estableciólos mo<strong>de</strong>los matemáticosque se utilizan paramedir el tráfico telefónico.Se pue<strong>de</strong> encontrar muchainformación al respecto enla dirección siguiente:http://www.erlang.comUnos mo<strong>de</strong>los matemáticos bastante complejos permiten calcular elnúmero concreto <strong>de</strong> enlaces que se precisan a partir <strong>de</strong> la estadística<strong>de</strong> las llamadas que sirven las centrales (la frecuencia <strong>de</strong> aparición ysu duración).Supongamos que en el ejemplo anterior estos mo<strong>de</strong>los nos dan veinticincoenlaces. Si en un momento dado hay veinticinco llamadas encurso entre A y B y llega otra llamada, no tendrá ningún camino disponibley, por consiguiente, no se podrá establecer. Esta situación se<strong>de</strong>nomina bloqueo: el abonado a quien se quiere llamar no está ocupado;sin embargo, no se pue<strong>de</strong> encontrar un camino libre por la redpara establecer la comunicación.De esta situación se <strong>de</strong>spren<strong>de</strong>n dos i<strong>de</strong>as fundamentales en relacióncon la red telefónica:• La conmutación <strong>de</strong> circuitos requiere pasar por tres fases paracada comunicación:– Establecimiento <strong>de</strong> llamada. Cuando se solicita iniciar una conversación,es preciso averiguar si el <strong>de</strong>stinatario está disponible y,22


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020en caso afirmativo, <strong>de</strong>be buscarse un camino libre en la red, queincluye conmutadores <strong>de</strong>ntro <strong>de</strong> las centrales y enlaces entre lasmismas.– Comunicación. Una vez establecido el circuito, los interlocutoresse intercambian información.– Liberación <strong>de</strong> recursos. Acabada la comunicación, se liberan losrecursos utilizados (enlaces entre centrales y conmutadores <strong>de</strong>ntro<strong>de</strong> las centrales).• El hecho <strong>de</strong> que los recursos estén ocupados en exclusiva mientrasdura la comunicación hace que las compañías que ofrecen el serviciocobren según la duración <strong>de</strong> la llamada: se penaliza el usoextensivo <strong>de</strong> los recursos. De este modo, el usuario se apresura enacabar la comunicación y <strong>de</strong>jar los enlaces libres, disminuyendoasí la probabilidad <strong>de</strong> bloqueo.La red telefónica constituye una red <strong>de</strong> conmutación <strong>de</strong>circuitos. Para llevar a cabo una comunicación, es precisoestablecer un circuito entre los dos extremos pormedio <strong>de</strong> la red. Mientras dura la comunicación, seocupan unos recursos en exclusiva, aunque no haya intercambio<strong>de</strong> información. Las compañías cobran eluso <strong>de</strong> los recursos por tiempo <strong>de</strong> ocupación.NotaPronto, el sistema telefónico pasó a ser una cuestión nacional. Losestados <strong>de</strong>sarrollaban sus re<strong>de</strong>s según sus criterios y gustos. Secreó un organismo, el CCITT (Comité Consultivo Internacional <strong>de</strong>Telegrafía y Telefonía, Comité Consultatif International Télégraphiqueet Téléphonique), para armonizar los sistemas nacionales y permitirlas comunicaciones entre países mediante centrales <strong>de</strong> tráfico internacionales.Hemos comentado que entre las centrales existe una serie <strong>de</strong> líneasque permiten la conexión entre abonados <strong>de</strong> diferentes centrales.Al principio era realmente así: si se <strong>de</strong>cidía que entre doscentrales era preciso disponer <strong>de</strong> cincuenta enlaces, se poníancincuenta cables entre ellas. Sin embargo, con el progresivo aumentoEl CCITT es un organismo internacionalpatrocinado porlas operadoras <strong>de</strong> telefonía,<strong>de</strong>dicado a tareas <strong>de</strong> normalizaciónen el ámbito <strong>de</strong> lastelecomunicaciones. El 1 <strong>de</strong>marzo <strong>de</strong> 1993 pasó a llamarseITU-T (InternationalTelecommunication UnionStandardisation Sector).ANOTACIONES23


ª FUOC • XP04/90786/00020Software libreNotaMultiplexar significa hacerpasar diferentes comunicacionesin<strong>de</strong>pendientes por elmismo medio <strong>de</strong> transmisión.<strong>de</strong> enlaces necesarios, este sistema pronto fue totalmente inviabley fue preciso recurrir a una técnica ya conocida en radiodifusión:la multiplexación.La técnica <strong>de</strong> multiplexación que se aplicó a la telefonía fue la multiplexaciónen frecuencia: se modulan los diferentes canales <strong>de</strong> entradaa distintas frecuencias portadoras, <strong>de</strong> manera que puedanviajar por el mismo medio sin interferirse. Se aplican filtros a la recepciónque permiten separar los distintos canales multiplexados.EjemploHacemos lo mismo al escuchar la radio o al ver la televisión.Hasta nuestra antena llegan todos los canalesemitidos; con el dial y el selector <strong>de</strong> canales, respectivamente,seleccionamos el canal (la gama <strong>de</strong> frecuencias)correspondiente a la emisora que queremosrecibir. Es <strong>de</strong>cir, el dial o el selector <strong>de</strong> canales <strong>de</strong> la televisiónconstituyen los filtros que separan, en la recepción,los diferentes canales multiplexados.El número <strong>de</strong> canales diferentes que pue<strong>de</strong>n viajar por un medio multiplexado<strong>de</strong>pen<strong>de</strong> <strong>de</strong>l ancho <strong>de</strong> banda <strong>de</strong> la señal y <strong>de</strong> la capacidad <strong>de</strong>lmedio.Por lo que respecta a la capacidad <strong>de</strong>l medio, no posee la misma unpar <strong>de</strong> hilos que un cable coaxial o que una fibra óptica.ANOTACIONESEn cuanto al ancho <strong>de</strong> banda, en el caso <strong>de</strong> la voz, <strong>de</strong>bería ser<strong>de</strong> 19.980 Hz (que es un ancho <strong>de</strong> banda consi<strong>de</strong>rable) puesto queel oído humano es capaz <strong>de</strong> distinguir frecuencias entre los 20 Hz ylos 20.000 Hz. No obstante, a raíz <strong>de</strong> estudios que se llevaron a cabosobre las características <strong>de</strong> la voz humana, se llegó a la conclusión<strong>de</strong> que con mucho menos bastaba, puesto que la inteligibilidad <strong>de</strong> lavoz se concentra en una banda bastante estrecha, entre los 300 Hz ylos 3.400 Hz.A partir <strong>de</strong> esta conclusión, se tomó una <strong>de</strong>cisión que, a la larga, hacondicionado mucho el uso <strong>de</strong> la red telefónica: hacer el canal <strong>de</strong> voz<strong>de</strong> 4 kHz (entre 300 Hz y 3.400 Hz, más unas bandas laterales <strong>de</strong>guardia).24


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020NotaHaber reducido el canal <strong>de</strong> voz a 4 kHz explica porqué se escucha tan mal la música por el teléfono: nohay ni graves ni agudos, sólo hay las frecuencias <strong>de</strong>lmedio.A partir <strong>de</strong> aquí, se estandarizaron los diferentes niveles <strong>de</strong> multiplexación.El nivel básico es la agrupación <strong>de</strong> distintos canales<strong>de</strong> 4 kHz, el siguiente es una agrupación <strong>de</strong> multiplexados básicos,etc.NotaLa jerarquía que propuso la compañía americana AT&T,y que ha acabado estandarizándose, es la siguiente:Tabla 1.NombreRangoAncho<strong>de</strong> bandaCanales<strong>de</strong> vozGroup 60-108 kHz 48 kHz 12Supergroup 312-552 kHz 240 kHz 60Mastergroup 564-3.084 kHz 2,52 MHz 600Jumbogroup 0,5-17,5 MHz 17 MHz 3.600A la entrada <strong>de</strong> la central local se encuentra un filtro que eliminacualquier frecuencia por encima <strong>de</strong> los 4 kHz. La señal <strong>de</strong> salida<strong>de</strong> este último es la que se multiplexa, conmuta y lleva hasta el<strong>de</strong>stinatario.Figura 4.ANOTACIONES25


ª FUOC • XP04/90786/00020Software libreCon todo ello, ya po<strong>de</strong>mos dibujar un panorama completo <strong>de</strong> lared telefónica, tal como era hasta los años setenta:La red telefónica es analógica, ubicua, trabaja con latécnica <strong>de</strong> conmutación <strong>de</strong> circuitos, con tarifaciónpor tiempo <strong>de</strong> ocupación, con enlaces multiplexadosen frecuencia y con canales limitados a 4 kHz.1.2. Aparecen los primeros or<strong>de</strong>nadoresNotaAl <strong>de</strong>cir que eran máquinaspoco potentes, evi<strong>de</strong>ntemente,es comparádolos con losactuales. Para la época, eranunas máquinas fantásticas.La década <strong>de</strong> los sesenta vio la aparición <strong>de</strong> los primeros or<strong>de</strong>nadorescomerciales. Eran gran<strong>de</strong>s, caros y poco potentes. Sólo organismosoficiales, gran<strong>de</strong>s empresas o universida<strong>de</strong>s podíancomprarlo, y lo que es más normal es que sólo compraran uno (oalgunos, pero no uno para cada usuario, como hoy día estamosacostumbrados a ver).NotaA los terminales pasivos, quecoloquialmente se llaman terminalestontos, en inglés se lesconoce como dumb terminal(‘terminal mudo’).Por ello, estos or<strong>de</strong>nadores llevaban sistemas operativos multitareay multiusuario, para que diferentes usuarios, realizando distintostrabajos, pudieran utilizarlos simultáneamente. El acceso adichos or<strong>de</strong>nadores se llevaba a cabo por medio <strong>de</strong> terminales sinninguna capacidad <strong>de</strong> proceso, pasivos:Figura 5.ANOTACIONES26


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000201.2.1. Los mó<strong>de</strong>msNo tardó mucho en aparecer la necesidad <strong>de</strong> po<strong>de</strong>r alejar los terminales<strong>de</strong> la unidad central para conectarse, por ejemplo, <strong>de</strong>s<strong>de</strong> casao <strong>de</strong>s<strong>de</strong> una <strong>de</strong>legación al or<strong>de</strong>nador central.Para po<strong>de</strong>r realizar este acceso remoto, la primera solución que aportaronlos ingenieros informáticos <strong>de</strong> la época fue utilizar la red telefónicaque, por su ubicuidad, les ahorraba generar infraestructuras nuevas.Sólo se precisaba un aparato que adaptara los bits a la red (recordadque la red telefónica sólo <strong>de</strong>ja pasar sonidos entre unos márgenes <strong>de</strong>frecuencia). Estos aparatos son los mó<strong>de</strong>ms.NotaMó<strong>de</strong>m es un acrónimo <strong>de</strong>modulator-<strong>de</strong>modulator, quese refiere a su función: modular(generar señales audiblessegún los valores <strong>de</strong> los bits)y <strong>de</strong>modular (generar bits apartir <strong>de</strong> las señales que recibe<strong>de</strong> la red telefónica).Figura 6.Los primeros mó<strong>de</strong>ms eran <strong>de</strong> 300 bps y generaban dos tonos diferentes:uno para el 1 lógico y otro para el 0. En la actualidad,van a 56.000 bps, que es el máximo que permite la red telefónicaconvencional actual.aaaLos 56.000 bps (56 k) <strong>de</strong> velocidad <strong>de</strong> transmisión sólose pue<strong>de</strong> lograr si uno <strong>de</strong> los dos extremos tiene unaconexión especial con su centralita, (la mayoría <strong>de</strong> losproveedores <strong>de</strong> Internet la tiene). De hecho, con líneastelefónicas convencionales, la velocidad máxima es <strong>de</strong>33.600 bps.ANOTACIONES27


ª FUOC • XP04/90786/00020Software libreLos mó<strong>de</strong>ms no sólo servían para po<strong>de</strong>r alejar los terminales pasivos<strong>de</strong> los or<strong>de</strong>nadores centrales, también permitían interconectaror<strong>de</strong>nadores entre sí.Figura 7.¡Esto ya es una red <strong>de</strong> <strong>computadores</strong>!ANOTACIONESLa tecnología <strong>de</strong> conmutación <strong>de</strong> circuitos se <strong>de</strong>sarrolló en un origenpara las comunicaciones telefónicas y una <strong>de</strong> sus características fundamentalesera la ocupación en exclusiva <strong>de</strong> los recursos mientrasduraba la conexión, lo que (como ya hemos visto) justificaba la tarifaciónpor tiempo. Sin embargo, las comunicaciones informáticas noson cortas, intensas y esporádicas como las <strong>de</strong> voz. Al conectar un terminala un or<strong>de</strong>nador central por medio <strong>de</strong> dos mó<strong>de</strong>ms, no están pasandodatos todo el tiempo que dura la conexión: pue<strong>de</strong> haberlargos periodos <strong>de</strong> tiempo en los que no pase ningún bit y momentosen los que haya un intercambio <strong>de</strong> datos intenso, aunque a una velocidad<strong>de</strong> transmisión mucho más baja que la que se pue<strong>de</strong> mantenerentre el terminal y el or<strong>de</strong>nador conectados directamente. Lasfacturas telefónicas empezaron a ser astronómicas, y <strong>de</strong>sproporcionadas,respecto <strong>de</strong>l uso real <strong>de</strong> la red.1.2.2. Las re<strong>de</strong>s <strong>de</strong> datosPronto las gran<strong>de</strong>s empresas presionaron a las compañías telefónicas<strong>de</strong>l momento para que <strong>de</strong>sarrollaran re<strong>de</strong>s pensadas para transportardatos, cuyo sistema <strong>de</strong> tarifación se ajustara al tráfico <strong>de</strong> datos28


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020real y permitiera más velocidad que los escasos 300 o 1.200 bps quese lograban utilizando la red telefónica. La respuesta fueron las re<strong>de</strong>s<strong>de</strong> conmutación <strong>de</strong> paquetes.El envío <strong>de</strong> datos no necesariamente <strong>de</strong>be llevarse a cabo en tiemporeal (las transmisiones <strong>de</strong> voz, sí). Por tanto, no es preciso establecerel camino entre los dos puntos antes <strong>de</strong> empezar la transmisión ymantenerlo mientras dura el intercambio <strong>de</strong> datos. En lugar <strong>de</strong> ello,se empaquetan los bits que <strong>de</strong>ben transmitirse y se dan a la centralmás próxima para que los envíe cuando pueda a la siguiente, y asísucesivamente hasta que lleguen al <strong>de</strong>stino. Si cuando un paquetellega a una central todos los enlaces con la siguiente están ocupados,no pasa nada, lo hace esperar poniéndolo en una cola para enviarlocuando haya un enlace disponible.La transmisión por paquetes tiene la ventaja <strong>de</strong> quesólo ocupa los recursos cuando en realidad se utilizan,no siempre. Sin embargo, como contrapartida, espreciso soportar el retardo que pueda producirse entreque los paquetes salen <strong>de</strong>l origen y llegan a su <strong>de</strong>stino,que es variable, puesto que las esperas en las colasson aleatorias, <strong>de</strong>pen<strong>de</strong>n <strong>de</strong>l estado <strong>de</strong> la red. Pero,como hemos dicho, en comunicación <strong>de</strong> datos esteretardo es hasta cierto punto tolerable. Por lo querespecta a la cuestión económica, no tiene sentidoque se cobre por tiempo <strong>de</strong> conexión: en las re<strong>de</strong>s <strong>de</strong>datos se paga por bits transmitidos.Existe otro peligro: los paquetes pue<strong>de</strong>n per<strong>de</strong>rse. Conviene tenerpresente que las colas son limitadas y, si llega un paquete cuandouna ya está llena, no se podrá guardar y se per<strong>de</strong>rá. Es preciso prevermecanismos que eviten dichas pérdidas y regulen el flujo <strong>de</strong> informaciónentre los nodos <strong>de</strong> conmutación.Las compañías telefónicas <strong>de</strong>sarrollaron re<strong>de</strong>s <strong>de</strong> este tipo, y elCCITT emitió un estándar, el X.25, que es el que se ha adoptado hastahace muy poco.NotaEn España, la red <strong>de</strong> datosse llamaba Iberpac.ANOTACIONESEn la actualidad, para comunicaciones<strong>de</strong> datos seutiliza Frame Relay, la evoluciónnatural <strong>de</strong> X.25.29


ª FUOC • XP04/90786/00020Software libre1.2.3. Las re<strong>de</strong>s <strong>de</strong> área localCuando empezó a ser habitual disponer <strong>de</strong> más <strong>de</strong> un or<strong>de</strong>nadoren la misma instalación, apareció la necesidad <strong>de</strong> interconectarlospara po<strong>de</strong>r compartir los diferentes recursos: dispositivos caros,tales como impresoras <strong>de</strong> calidad, un disco duro que almacenaralos datos <strong>de</strong> la empresa, un equipo <strong>de</strong> cinta para realizar copias<strong>de</strong> seguridad, etc.NotaCon frecuencia se utiliza lasigla inglesa LAN (localarea network) para i<strong>de</strong>ntificarlas re<strong>de</strong>s <strong>de</strong> área local,y la sigla WAN (wi<strong>de</strong> areanetwork) para i<strong>de</strong>ntificar lasre<strong>de</strong>s <strong>de</strong> gran alcance.El diseño <strong>de</strong> las re<strong>de</strong>s <strong>de</strong> área local siguió caminos completamentediferentes <strong>de</strong> los que se siguieron para las re<strong>de</strong>s <strong>de</strong> gran alcance. Enlas re<strong>de</strong>s <strong>de</strong> área local se necesita, habitualmente, establecer comunicaciones“muchos a uno” y “uno a muchos”, lo que es difícil <strong>de</strong> conseguircon las re<strong>de</strong>s <strong>de</strong> conmutación, pensadas para interconectardos estaciones. Para este tipo <strong>de</strong> re<strong>de</strong>s es más a<strong>de</strong>cuada la difusióncon medio compartido, en que los paquetes que salen <strong>de</strong> una estaciónllegan a todo el resto simultáneamente. En la recepción, las estacioneslos aceptan o ignoran <strong>de</strong>pendiendo <strong>de</strong> si son <strong>de</strong>stinatarias<strong>de</strong>los mismos o no.Difusión con medio compartidoSe habla <strong>de</strong> difusión porque los paquetes se difun<strong>de</strong>npor todos lados, y <strong>de</strong> medio compartido porque esta últimase lleva a cabo sobre un medio común que las estacionescomparten.1.3. Arquitecturas <strong>de</strong> protocolosANOTACIONESDe la década <strong>de</strong> los sesenta datan también los primeros estándares<strong>de</strong> arquitecturas <strong>de</strong> protocolos. Conviene tener presente queel intercambio <strong>de</strong> información entre or<strong>de</strong>nadores tiene toda unaserie <strong>de</strong> implicaciones, entre las que se encuentran las siguientes:• Aspectos eléctricos: los cables, los conectores, las señales, etc.• La manera <strong>de</strong> agrupar los bits para formar paquetes y la <strong>de</strong> controlarque no se produzcan errores <strong>de</strong> transmisión.30


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• La i<strong>de</strong>ntificación <strong>de</strong> los or<strong>de</strong>nadores <strong>de</strong>ntro <strong>de</strong> la red y la manera<strong>de</strong> conseguir que la información que genera un or<strong>de</strong>nador lleguea quien se preten<strong>de</strong>.Atacar todos estos aspectos <strong>de</strong> una manera global no es viable: <strong>de</strong>masiadascosas y <strong>de</strong>masiado diferentes entre sí. Por ello, ya <strong>de</strong>s<strong>de</strong> el principio,se <strong>de</strong>sarrollaron mo<strong>de</strong>los estructurados en niveles: en cada nivelse lleva a cabo una tarea y la cooperación <strong>de</strong> todos los niveles proporcionala conectividad <strong>de</strong>seada por los usuarios.Conviene consi<strong>de</strong>rar que, en la época que nos ocupa, la informática estabaen manos <strong>de</strong> muy pocos fabricantes e imperaba la filosofía <strong>de</strong>l serviciointegral: cada fabricante lo proporcionaba todo (or<strong>de</strong>nadores,cables, periféricos, sistema operativo y software). Por tanto, cuandouna empresa se quería informatizar, elegía una marca y quedabavinculada a la misma para toda la vida.NotaHablamos <strong>de</strong> empresas como IBM (International BusinessMachines) o DEC (Digital Equipment Corporation).Cuando estas empresaas se propusieron ofrecer conectivida<strong>de</strong>ntre sus equipos, local o remota, tambiénlo hicieron aplicando la filosofía <strong>de</strong> la separación porniveles: IBM <strong>de</strong>sarrolló la arquitectura SNA (systemnetwork arquitecture) y DEC, la DNA (DEC networkarquitecture). Eran dos mo<strong>de</strong>los completos, estructuradosen niveles, pero incompatibles entre sí, según lafilosofía <strong>de</strong> la informática propietaria.En la década <strong>de</strong> los setenta el panorama cambió radicalmente, sobretodo a causa <strong>de</strong> tres acontecimientos:• La propuesta <strong>de</strong>l protocolo Ethernet para re<strong>de</strong>s locales.• La aparición <strong>de</strong>l sistema operativo Unix, que no estaba vinculadoa ninguna marca comercial, compatible con todas las plataformas<strong>de</strong> hardware existentes.• La invención <strong>de</strong> los protocolos TCP/IP, embrión <strong>de</strong> la actual Internet.Se había allanado el camino para la aparición <strong>de</strong> los sistemas abiertos:no era preciso vincularse a ninguna marca para tenerlo todo. ElNotaANOTACIONESTCP/IP son las siglas <strong>de</strong>transmission control protocol/Internet protocol (protocolo<strong>de</strong> control <strong>de</strong> transmisión/protocolo <strong>de</strong> Internet).31


ª FUOC • XP04/90786/00020Software librehardware podía ser <strong>de</strong> un proveedor, el sistema operativo <strong>de</strong> otro,las aplicaciones <strong>de</strong> otro y los protocolos, públicos.TCP/IP nació a partir <strong>de</strong> un encargo <strong>de</strong> la DARPA a la comunidadcientífica americana para obtener una red mundial que fuera reconfigurablecon facilidad y <strong>de</strong> forma automática en caso <strong>de</strong> <strong>de</strong>strucción<strong>de</strong> algún nodo o <strong>de</strong> algún enlace.La pila TCP/IP era una jerarquía <strong>de</strong> protocolos que ofrecía conectividady, a pesar <strong>de</strong> tener poco que ver con las que ya existían, constituíauna opción más en el mercado. Ante una oferta tan gran<strong>de</strong> ydispar <strong>de</strong> protocolos, la ISO (Organización Internacional <strong>de</strong> Estandarización,International Organization for Standardization) y elCCITT propusieron un nuevo mo<strong>de</strong>lo que intentaba reunir <strong>de</strong> algúnmodo todo lo que ya se había propuesto y que pretendía ser completo,racional y muy bien estructurado (la TCP/IP tiene fama <strong>de</strong> ser unapila <strong>de</strong> protocolos anárquica), con la intención, por tanto, <strong>de</strong> que seconvirtiera en un mo<strong>de</strong>lo <strong>de</strong> referencia. Es la conocida como pila <strong>de</strong>protocolos OSI (open systems interconnection).Internet, que nació y creció en las universida<strong>de</strong>s, seempezó a popularizar en la década <strong>de</strong> los noventa,a medida que quienes conocían la Red la iban “enseñando”,y su eclosión se produjo cuando saltó almundo <strong>de</strong> la empresa, en todas sus vertientes: comoescaparate <strong>de</strong> productos o como canalizador <strong>de</strong> contactoscomerciales.ANOTACIONESSin embargo, el origen universitario <strong>de</strong> la Red ha marcado su evoluciónen muchos sentidos. Por ejemplo, el mo<strong>de</strong>lo cliente/servidor<strong>de</strong> aplicaciones distribuidas. Es un mo<strong>de</strong>lo sencillo y, al mismotiempo, potente, y casi todas las aplicaciones que se utilizan en Internetlo siguen. El Telnet, o apertura <strong>de</strong> sesión remota, la transferencia<strong>de</strong> ficheros (FTP), el correo electrónico y, sobre todo, elWWW (World Wi<strong>de</strong> Web) constituyen ejemplos claros <strong>de</strong> aplicacionesque siguen este mo<strong>de</strong>lo. Las dos primeras han caído unpoco en <strong>de</strong>suso, pero tanto el correo como el WWW son las ac-32


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020tuales estrellas en Internet. Tímidamente, aparecen nuevas propuestas<strong>de</strong> aplicaciones; sin embargo, el WWW, que nació comoun servicio <strong>de</strong> páginas estáticas enlazadas con hiperenlaces, seestá convirtiendo en la interfaz <strong>de</strong> usuario <strong>de</strong> toda la Red, puestoque en la actualidad se utiliza para servir páginas dinámicas (secrean en el momento en que se sirven), e, incluso, código que seejecuta en el or<strong>de</strong>nador cliente (applets).1.4. La digitalización <strong>de</strong> la red telefónicaEn este momento tenemos dos re<strong>de</strong>s completamente in<strong>de</strong>pendientesentre sí, pero <strong>de</strong> alguna manera superpuestas:• Una red analógica, con conmutación <strong>de</strong> circuitos, pensada para voz.• Una red digital, con conmutación <strong>de</strong> paquetes, pensada para datos.La red telefónica, tal como la hemos <strong>de</strong>scrito hasta ahora, es completamenteanalógica: la señal electromagnética que viaja <strong>de</strong>s<strong>de</strong>un teléfono hasta otro es analógica (varía continuamente y encualquier momento pue<strong>de</strong> adoptar cualquier valor) y los circuitoselectrónicos que componen la red también lo son.Los enlaces entre centrales <strong>de</strong> la red telefónica se llevaban a cabocon señales analógicas con muchos canales multiplexados en frecuenciay, en ocasiones, <strong>de</strong>bían recorrer gran<strong>de</strong>s distancias. Laatenuación <strong>de</strong> la señal inherente a la distancia que era preciso recorrer<strong>de</strong>bía corregirse por medio <strong>de</strong> repetidores que la amplificaban,lo que aumentaba el ruido presente en la línea. A menudo, la señal recibidaera <strong>de</strong> una calidad muy baja porque la transmisión analógicano permite eliminar el ruido y las interferencias en la recepción.No hay manera <strong>de</strong> saber con exactitud qué se ha enviado <strong>de</strong>s<strong>de</strong> elorigen y qué es ruido añadido.En 1972, se hicieron públicos los primeros resultados <strong>de</strong>l tratamientodigital <strong>de</strong> la señal aplicado a audio, básicamente orientadoa su almacenamiento. El CD estaba viendo la luz. Convertir unsonido (una magnitud física que pue<strong>de</strong> adoptar cualquier valor encualquier momento) en una serie <strong>de</strong> 0 y 1 (dos únicos valores, conocidos)permitía corregir con facilidad cualquier ruido añadido.ANOTACIONES33


ª FUOC • XP04/90786/00020Software libreFigura 8.En el caso <strong>de</strong> la señal analógica, viendo la señal recibida, no se pue<strong>de</strong> <strong>de</strong>ducir cuál hasido la señal emitida. En cambio, en el caso <strong>de</strong> la señal digital, como se conocen los valoresenviados, se establece un umbral en el punto medio entre los dos valores y se <strong>de</strong>ci<strong>de</strong>que todo lo que esté por encima correspon<strong>de</strong> a un 1 y todo lo que esté por <strong>de</strong>bajo, a un 0.Si el ruido que se ha añadido es superior a la diferencia entre el valor original y el umbral,se produce un error <strong>de</strong> recepción: se <strong>de</strong>ci<strong>de</strong> que se había enviado el valor equivocado.Las técnicas para luchar contra este tipo <strong>de</strong> errores se verán más a<strong>de</strong>lante.El <strong>de</strong>scubrimiento <strong>de</strong>l procesado digital <strong>de</strong> la señal, así como susaplicaciones en los campos <strong>de</strong>l sonido y la imagen, ha constituido unhito capital en el mundo <strong>de</strong> las comunicaciones. Básicamente, hapermitido reducir drásticamente el efecto <strong>de</strong>l ruido, lo que ha posibilitado,por un lado, incrementar la calidad <strong>de</strong> recepción <strong>de</strong> las señalesy, por el otro, aumentar la velocidad <strong>de</strong> transmisión con losmismos medios.Las compañías telefónicas empezaron a sustituir los enlaces internos(entre centrales) por señales digitales, pero manteniendo el bucle <strong>de</strong>abonado (línea y terminal) analógico. La digitalización <strong>de</strong> la señal<strong>de</strong> sonido se lleva a cabo <strong>de</strong>ntro <strong>de</strong> la central local, <strong>de</strong>spués <strong>de</strong>lfiltro <strong>de</strong> 4 kHz, y se vuelve a pasar a analógica en la central correspondienteal otro extremo <strong>de</strong> la comunicación. La digitalización ha hechocambiar sustancialmente los procesos <strong>de</strong> commutación: ahora <strong>de</strong>be trabajarsecon bits y, por tanto, las centrales electromecánicas <strong>de</strong>ben sustituirsepor or<strong>de</strong>nadores.ANOTACIONESLa digitalización <strong>de</strong> la parte interna <strong>de</strong> la red <strong>de</strong> vozhizo que, <strong>de</strong> algún modo, las dos re<strong>de</strong>s, la telefónica yla <strong>de</strong> datos, confluyeran: los enlaces digitales entrecentrales se utilizaban indistintamente para paquetes<strong>de</strong> datos y para transmisiones <strong>de</strong> voz.34


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000201.4.1. La red digital <strong>de</strong> servicios integradosUna vez digitalizada la red telefónica, el paso siguiente <strong>de</strong>bía serllevar la transmisión <strong>de</strong> bits hasta las casas. Ello permitía, por unlado, ofrecer a los usuarios en su casa la transmisión <strong>de</strong> datosa<strong>de</strong>más <strong>de</strong> la tradicional <strong>de</strong> voz y, por otro, ofrecer a los abonadosun abanico <strong>de</strong> nuevos servicios asociados a una comunicaciónenteramente digital <strong>de</strong> extremo a extremo. Este servicio <strong>de</strong>transmisión digital por medio <strong>de</strong> la red telefónica se conoce comored digital <strong>de</strong> servicios integrados (RDSI). Ofrece dos canales in<strong>de</strong>pendientes<strong>de</strong> 64 kbps, que permiten hablar y conectarse a Internetsimultáneamente, o, con el hardware a<strong>de</strong>cuado, aprovechar los doscanales juntos para navegar a 128 kbps.NotaLa red digital <strong>de</strong> servicios integrados(RDSI) correspon<strong>de</strong>a las siglas en inglés ISDN(integrated services digitalnetwork).1.5. La banda anchaEl uso <strong>de</strong> la red telefónica para transmitir datos tiene una limitación importantepor lo que respecta al máximo <strong>de</strong> bits por segundo permitidosy las re<strong>de</strong>s específicas <strong>de</strong> datos son muy caras para el uso doméstico.Des<strong>de</strong> la década <strong>de</strong> los noventa, se han estudiado maneras <strong>de</strong> llevarhasta las casas o las empresas un buen caudal <strong>de</strong> bits por segundo(banda ancha) a un precio razonable, <strong>de</strong> manera que las nuevas aplicacionesmultimedia se puedan explotar al máximo.Para conseguir esta banda ancha, se han seguido dos caminos completamentediferentes:• Se han promovido cableados nuevos con fibra óptica que permitaneste gran caudal, con frecuencia implementados por empresas conafán competidor contra los monopolios dominantes. Estas re<strong>de</strong>s seaprovechan para proporcionar un servicio integral: televisión, teléfonoy datos.• Las compañías telefónicas <strong>de</strong> toda la vida han querido sacar partido<strong>de</strong>l cableado que ya tienen hecho y, por ello, se han <strong>de</strong>sarrollado lastecnologías ADSL, que permiten la convivencia en el bucle <strong>de</strong> abonado<strong>de</strong> la señal telefónica y una señal <strong>de</strong> datos que pue<strong>de</strong> llegar alos 8 Mbps.ANOTACIONES35


ª FUOC • XP04/90786/00020Software libreNotaLa frontera entre banda estrecha y banda ancha noestá muy clara. Los 128 kbps <strong>de</strong> la RDSI se consi<strong>de</strong>ranbanda estrecha y, hay quien califica <strong>de</strong> banda anchaa los 256 kbps <strong>de</strong> la ADSL básica.Realmente, se consi<strong>de</strong>ra banda ancha a partir <strong>de</strong> 1 Mbps.1.6. La telefonía móvilLa telefonía móvil, todo un fenómeno sociológico <strong>de</strong> finales <strong>de</strong>l sigloxx, ha vivido una evolución fulgurante: en menos <strong>de</strong> veinte años,ha pasado <strong>de</strong> la nada a constituir una tecnología <strong>de</strong> uso diario paramás <strong>de</strong> un 70% <strong>de</strong> la población.Des<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong> sistema <strong>de</strong> comunicación, <strong>de</strong>bemos verlos móviles como una extensión <strong>de</strong> la red telefónica convencional.Figura 9.ANOTACIONESEl sistema GSM, que constituye el actual estándar europeo, permiteel acceso a la red <strong>de</strong> voz, cambiando el bucle <strong>de</strong> abonado: en lugar<strong>de</strong> ser un cable, es un enlace radioeléctrico entre una antena y el móvil.Se trata, por tanto, <strong>de</strong> una red <strong>de</strong> conmutación <strong>de</strong> circuitos y secontinúa fijando la tarifa por tiempo <strong>de</strong> conexión.El estándar GPRS permite el transporte <strong>de</strong> bits, pagando por tráficoen lugar <strong>de</strong> por tiempo. Por tanto, es aproximadamente el clónico <strong>de</strong>las re<strong>de</strong>s <strong>de</strong> datos con hilos.36


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020El estándar UMTS, en la actualidad todavía en la fase previa a su lanzamientocomercial, permite transferencias <strong>de</strong>l or<strong>de</strong>n <strong>de</strong> megabitspor segundo, necesarias para disponer <strong>de</strong> aplicaciones multimediaen el móvil. Sin embargo, requiere nuevas antenas y terminales.ANOTACIONES37


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000202. Arquitecturas <strong>de</strong> protocolos: el mo<strong>de</strong>lo OSIComo ya hemos comentado, cuando el CCITT y la ISO propusieronla torre OSI, en el mercado había muchas arquitecturas <strong>de</strong> protocolos,unas propietarias, otras abiertas, pero todas diferentes. La torreOSI pretendía ser un mo<strong>de</strong>lo básico <strong>de</strong> referencia, un marco para el<strong>de</strong>sarrollo <strong>de</strong> estándares que permitieran la interoperabilidad completa.Diferentes razones han hecho que este mo<strong>de</strong>lo, así como lasnormas que <strong>de</strong>l mismo se <strong>de</strong>rivan, no hayan tenido la repercusión quese esperaba, entre las que <strong>de</strong>stacan las siguientes:• La complejidad <strong>de</strong>l mo<strong>de</strong>lo, innecesaria en muchos casos.• La complejidad <strong>de</strong> las normas <strong>de</strong>sarrolladas a partir <strong>de</strong>l mo<strong>de</strong>lo.• El impulso <strong>de</strong>l mo<strong>de</strong>lo Internet y la simplicidad <strong>de</strong> sus estándares.A pesar <strong>de</strong> que el mo<strong>de</strong>lo OSI no se haya impuesto en los <strong>de</strong>sarrollos,es muy útil como referencia para explicar qué <strong>de</strong>be hacerse y cómo.El hecho <strong>de</strong> que sea tan completo y cartesiano lo hace muyinteresante para la pedagogía <strong>de</strong> los conceptos básicos <strong>de</strong> re<strong>de</strong>s, ylas arquitecturas que en realidad se utilizan se explican estableciendouna relación constante con el mo<strong>de</strong>lo OSI. Por ello, en este apartadoexplicamos los siete niveles <strong>de</strong> la torre OSI. A partir <strong>de</strong>l módulo siguiente,sin embargo, nos centraremos en la arquitectura TCP/IP, laque constituye la Red Internet.2.1. DefiniciónEl mo<strong>de</strong>lo básico <strong>de</strong> referencia OSI, o simplementemo<strong>de</strong>lo OSI, afronta el problema <strong>de</strong> las comunicaciones<strong>de</strong> datos y las re<strong>de</strong>s informáticas dividiéndolo enniveles. Cada participante <strong>de</strong> la comunicación incorporacomo mínimo uno <strong>de</strong> los mismos, y los equipos terminaleslos incorporan todos.ANOTACIONES39


ª FUOC • XP04/90786/00020Software libreFigura 10.Los niveles <strong>de</strong> la torre se comunican en dos direcciones:• Horizontal. La comunicación horizontal sólo se da entre niveles homónimos.Se podría pensar –y <strong>de</strong> hecho es así– que todo el nivelconstituye un único sistema distribuido que tiene un representante encada uno <strong>de</strong> los equipos. Un protocolo <strong>de</strong> nivel i (en el que i es eli<strong>de</strong>ntificador <strong>de</strong>l nivel correspondiente) especifica el formato, el significadoy la temporización <strong>de</strong> la información que circula entre losmiembros <strong>de</strong> este sistema distribuido.ANOTACIONES• Vertical. La comunicación vertical sólo se da entre niveles adyacentes<strong>de</strong> un mismo sistema. Este tipo <strong>de</strong> comunicación posee un caráctertotalmente local; es <strong>de</strong>cir, pue<strong>de</strong> materializarse por mecanismos <strong>de</strong>software (llamadas a liberías, comunicación entre procesos, etc.). Demanera genérica, <strong>de</strong>nominaremos estos mecanismos servicio <strong>de</strong> niveli (en el que i es el i<strong>de</strong>ntificador <strong>de</strong>l nivel que proporciona el servicio,e i + 1, el nivel que lo utiliza).2.2. Los protocolosCon los protocolos se preten<strong>de</strong> la intercomunicación <strong>de</strong> entida<strong>de</strong>s situadasen diferentes máquinas. Enten<strong>de</strong>mos por entidad un sistemaelectrónico y/o informático, ubicado <strong>de</strong>ntro <strong>de</strong> un nivel <strong>de</strong>l mo<strong>de</strong>lo OSI,40


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020que, en combinación con las otras entida<strong>de</strong>s <strong>de</strong>l mismo nivel situadasen otros sistemas, forma un todo (un sistema distribuido).Por tanto, la especificación <strong>de</strong>l protocolo que utilizamos <strong>de</strong>be llevarsea cabo en un estándar claramente <strong>de</strong>finido que permita a <strong>de</strong>sarrolladoresque no trabajan juntos implementarlo <strong>de</strong> manera totalmenteidéntica.La recepción <strong>de</strong> una secuencia <strong>de</strong> bits en un momento inesperado o<strong>de</strong> una longitud incorrecta, o en una disposición imprevista, pue<strong>de</strong>hacer que la entidad <strong>de</strong>stinataria no reaccione correctamente y <strong>de</strong>je<strong>de</strong> inmediato el nivel (las dos entida<strong>de</strong>s que lo forman) en una situacióninestable.Evi<strong>de</strong>ntemente, esta situción no se pue<strong>de</strong> permitir. Por ello, la implementación<strong>de</strong>l protocolo <strong>de</strong>be ser extremamente esmerada y, porconsiguiente, también la especificación <strong>de</strong>l estándar.En un sistema encontramos tantos protocolos como niveleslo formen. Los sistemas a los que se conecte directamente<strong>de</strong>berán tener la misma especificación quelos estándares para todos los niveles que implemente elprotocolo.Figura 11.ANOTACIONES41


ª FUOC • XP04/90786/00020Software libre2.3. Los serviciosNotaEn terminología OSI se suele<strong>de</strong>cir que los servicios nose especifican, sino que se<strong>de</strong>scriben.La especificación <strong>de</strong> un servicio es siempre menos estricta que la <strong>de</strong>un protocolo. Por servicio enten<strong>de</strong>mos la comunicación que se produce<strong>de</strong>ntro <strong>de</strong> una misma máquina y, por consiguiente, <strong>de</strong>ntro <strong>de</strong>un único ámbito <strong>de</strong> responsabilidad. La funcionalidad <strong>de</strong> las interfaces<strong>de</strong> cada uno <strong>de</strong> los niveles (y, por tanto, <strong>de</strong> las entida<strong>de</strong>s que laimplementan), la <strong>de</strong>terminarán los estándares que utilicen; sin embargo,su especificación precisa no es relevante para los estándaresinvolucrados. Cada sistema individual pue<strong>de</strong> materializarlas <strong>de</strong> unamanera u otra según convenga.Sea como sea, la cantidad <strong>de</strong> papel que ocupa la <strong>de</strong>scripción <strong>de</strong> unservicio siempre será muy inferior a la que ocupa la especificación <strong>de</strong>un protocolo.Figura 12.ANOTACIONESActividadComentad las diferencias existentes entre protocolo yservicio.42


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000202.4. Los siete niveles <strong>de</strong>l mo<strong>de</strong>lo OSI2.4.1. Nivel físicoEl nivel físico se encarga <strong>de</strong> las tareas <strong>de</strong> transmisión física <strong>de</strong> las señaleseléctricas (o electromagnéticas) entre los diferentes sistemas.Las limitaciones <strong>de</strong>l nivel físico (equipos <strong>de</strong> transmisión y recepción,medios <strong>de</strong> transmisión, amplificadores, etc.) imponen otras al resto<strong>de</strong>l sistema: por un lado, limitan la velocidad <strong>de</strong> transmisión (en bitspor segundo) y, por otro, hacen aparecer una probabilidad <strong>de</strong>error, el porcentaje <strong>de</strong> bits erróneos que llegan a <strong>de</strong>stino.La primera limitación es casi insalvable partiendo <strong>de</strong> un medio <strong>de</strong>transmisión dado, puesto que los parámetros físicos <strong>de</strong> este últimoimponen un límite superior no superable por medio <strong>de</strong> una mejoratecnológica. Los medios <strong>de</strong> transmisión poseen una capacidad <strong>de</strong>transmisión acotada y la electrónica que utilizamos para llevar acabo las transmisiones pue<strong>de</strong> mejorar la velocidad <strong>de</strong> transmisión,pero no superar este límite. Esta limitación viene dada por el ancho<strong>de</strong> banda, o anchura <strong>de</strong>l espectro eléctrico, que pue<strong>de</strong> atravesar elmedio <strong>de</strong> transmisión (doblar el ancho <strong>de</strong> banda significa que sepue<strong>de</strong> doblar la velocidad <strong>de</strong> transmisión) y por la imposibilidadpráctica <strong>de</strong> recibir la señal libre <strong>de</strong> cualquier interferencia.NotaEn el nivel físico somos incapaces<strong>de</strong> corregir errores.Asumimos una probabilidad<strong>de</strong> error y encargamos al nivelsuperior su corrección.2.4.2. Nivel <strong>de</strong> enlaceEl nivel <strong>de</strong> enlace es el primero <strong>de</strong> la torre OSI que se basa en software,algoritmos y protocolos. Su misión principal es dar fiabilidad a latransmisión <strong>de</strong> las señales eléctricas o electromagnéticas que proporcionael nivel físico, lo que se pue<strong>de</strong> conseguir si las cotas <strong>de</strong> errorson inferiores al 1%. Se aña<strong>de</strong>n bits adicionales a los que forman elmensaje para po<strong>de</strong>r <strong>de</strong>tectar errores <strong>de</strong> transmisión y pedir su retransmisión.Para ello, es preciso conferir una estructura a los bits: seagrupan en pequeños bloques <strong>de</strong>nominados tramas, que contienenlos bits <strong>de</strong> mensaje, los bits añadidos para <strong>de</strong>tectar errores y diferentescampos <strong>de</strong> control, tales como el número <strong>de</strong> trama.El transmisor calcula estos bits adicionales a partir <strong>de</strong>l resto por medio<strong>de</strong> una operación que el receptor conoce y aplica igualmente. SiNotaEl hecho <strong>de</strong> que las tramassean pequeños bloques <strong>de</strong>bits minimiza la probabilidad<strong>de</strong> que haya muchosbits erróneos <strong>de</strong>ntro <strong>de</strong> losbloques.ANOTACIONES43


ª FUOC • XP04/90786/00020Software libreel receptor <strong>de</strong>tecta una discrepancia entre los bits adicionales (redundantes)y los que ha calculado a partir <strong>de</strong>l resto, <strong>de</strong>tecta que el bloquees erróneo y pedirá su retransmisión.La adición <strong>de</strong> los bits redundantes y su comparación enrecepción se <strong>de</strong>nomina <strong>de</strong>tección <strong>de</strong> errores. Los procedimientos<strong>de</strong> corrección a partir <strong>de</strong> dicha <strong>de</strong>tecciónse conocen como control <strong>de</strong> errores.A<strong>de</strong>más <strong>de</strong>l control <strong>de</strong> errores, el nivel <strong>de</strong> enlace lleva a cabo otratarea importante: el control <strong>de</strong> flujo.El receptor <strong>de</strong>be procesar las tramas a medida que las recibe. En algunoscasos, este proceso comporta un gasto <strong>de</strong> tiempo mínimo, teniendoen cuenta la velocidad <strong>de</strong> transmisión (por ejemplo, guardarlos datos en disco); sin embargo, pue<strong>de</strong> haber casos en que este procesosea costoso. En esta situación, el receptor necesita un mecanismoque notifique al transmisor que <strong>de</strong>be <strong>de</strong>tener momentáneamentela transmisión con el objetivo <strong>de</strong> disponer <strong>de</strong>l tiempo necesario parallevar a cabo esta tarea.El nivel <strong>de</strong> enlace no sólo sirve para controlar líneas punto a punto,sino también para controlar líneas compartidas por diferentes terminales(re<strong>de</strong>s <strong>de</strong> área local).2.4.3. Nivel <strong>de</strong> redANOTACIONESEl nivel <strong>de</strong> red es el que permite que pueda haber más <strong>de</strong> dos máquinasinvolucradas en las inerconexiones. Si sólo se tuviese el nivel<strong>de</strong> enlace, esto no sería posible. El nivel <strong>de</strong> enlace se ocupa <strong>de</strong> quelos bits lleguen <strong>de</strong> una lado a otro, por lo tanto, sólo permite interconectardos máquinas. Para po<strong>de</strong>r interconectar más <strong>de</strong> dos máquinas,necesitamos i<strong>de</strong>ntificarlas y conectarlas <strong>de</strong> alguna manera. Éstaes la tarea <strong>de</strong>l nivel <strong>de</strong> red.Ya hemos visto que las re<strong>de</strong>s <strong>de</strong> conmutación <strong>de</strong> paquetes constituyenel tipo <strong>de</strong> red más eficiente para transmitir datos <strong>de</strong>s<strong>de</strong> diferentes44


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020puntos <strong>de</strong> vista: uso <strong>de</strong> recursos, coste, capacidad <strong>de</strong> mantener distintasconexiones simultáneas, etc. El mo<strong>de</strong>lo OSI, por tanto, sólo habla<strong>de</strong> re<strong>de</strong>s <strong>de</strong> conmutación <strong>de</strong> paquetes.En el nivel <strong>de</strong> red se distingue entre estaciones terminales y nodos <strong>de</strong>conmutación:Figura 13.La palabra red proviene <strong>de</strong> esta imagen: los enlacesson los cor<strong>de</strong>les que unen los nudos o sistemas.Los nodos <strong>de</strong> conmutación disponen <strong>de</strong> diferentes enlaces haciaotros nodos o hacia terminales, y son los que permiten que los paquetesviajen por la red <strong>de</strong>s<strong>de</strong> una estación terminal a otra.Existen dos tipos <strong>de</strong> re<strong>de</strong>s <strong>de</strong> conmutación <strong>de</strong> paquetes:• <strong>Re<strong>de</strong>s</strong> que funcionan en modo datagrama. Podríamos <strong>de</strong>cir queeste tipo <strong>de</strong> re<strong>de</strong>s son las básicas, puesto que incorporan la funcionalidadmínima para que un grupo <strong>de</strong> nodos y <strong>de</strong> terminales interconectadospuedan hacer pasar información <strong>de</strong> un punto a otro.El problema <strong>de</strong> las re<strong>de</strong>s en modo datagrama radica en la dificultad<strong>de</strong> garantizar la entrega correcta y completa <strong>de</strong> la información,puesto que los diferentes paquetes que forman la transmisión nomantienen un vínculo conocido por la red. Los paquetes pue<strong>de</strong>nllegar fuera <strong>de</strong> or<strong>de</strong>n, duplicados, o incluso se pue<strong>de</strong>n per<strong>de</strong>r sinANOTACIONES45


ª FUOC • XP04/90786/00020Software libreque la red pueda hacer gran cosa al respecto. Se <strong>de</strong>ja al terminalreceptor la responsabilidad <strong>de</strong> restaurar los posibles daños quehaya tenido el paquete durante la transmisión.• <strong>Re<strong>de</strong>s</strong> que funcionan en modo circuito virtual. Estas re<strong>de</strong>s pue<strong>de</strong>ngarantizar que la entrega <strong>de</strong> los paquetes sea correcta y completa,y lo hacen aportando el concepto <strong>de</strong> conexión propio <strong>de</strong> lasre<strong>de</strong>s <strong>de</strong> conmutación <strong>de</strong> circuitos. Es el circuito virtual. Este últimopermite agrupar los paquetes relacionados <strong>de</strong> manera que el receptorlos recibe correctamente sin problemas <strong>de</strong> or<strong>de</strong>n, duplicacióno pérdida.La asignación <strong>de</strong> direcciones es uno <strong>de</strong> los conceptos básicos <strong>de</strong>l nivel<strong>de</strong> red. Le permite, como sistema distribuido pero único, <strong>de</strong>cidir cuál <strong>de</strong>los múltiples terminales es el <strong>de</strong>stinatario final <strong>de</strong> cada paquete.El direccionamiento constituye el procedimiento que permite a estesistema distribuido conducir la información por los diferentes nodos<strong>de</strong> origen a <strong>de</strong>stino, minimizando el trayecto y el tiempo <strong>de</strong> tránsito,optimizando recursos, etc.2.4.4. Nivel <strong>de</strong> transporteEl nivel <strong>de</strong> transporte permite una conexión fiable sobre cualquiertipo <strong>de</strong> red (fiable o no). En las re<strong>de</strong>s <strong>de</strong> conmutación <strong>de</strong> paquetesen modo datagrama es don<strong>de</strong> este nivel revela su importancia, puestoque es el responsable <strong>de</strong> controlar las posibles <strong>de</strong>ficiencias <strong>de</strong> lastransmisiones.ANOTACIONESLa función principal <strong>de</strong> este nivel consiste en asegurar la calidad <strong>de</strong>transmisión entre los terminales que utilizan la red, lo que implica recuperarerrores, or<strong>de</strong>nar correctamente la información, ajustar la velocidad<strong>de</strong> transmisión <strong>de</strong> la información (control <strong>de</strong> flujo), etc.2.4.5. Niveles <strong>de</strong> sesión, presentación y aplicaciónEstos tres niveles se suelen explicar <strong>de</strong> manera conjunta, puesto queexisten pocos ejemplos prácticos <strong>de</strong> protocolos <strong>de</strong> sesión y <strong>de</strong> presentación.A<strong>de</strong>más, la arquitectura Internet <strong>de</strong>lega todos los trabajos46


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020por encima <strong>de</strong> transporte a la aplicación. No obstante, en el mo<strong>de</strong>loOSI están <strong>de</strong>finidos como tres niveles diferentes e in<strong>de</strong>pendientes, conatribuciones propias.El nivel <strong>de</strong> sesión es, en teoría, el encargado <strong>de</strong> gestionar las conexiones<strong>de</strong> larga duración, la recuperación <strong>de</strong> caídas <strong>de</strong> red <strong>de</strong> maneratransparente y los protocolos <strong>de</strong> sincronía entre aplicaciones.El nivel <strong>de</strong> presentación se encarga <strong>de</strong> conseguir que las diferentesplataformas (sistemas operativos, procesadores, etc.) se puedan enten<strong>de</strong>ral conectarse por medio <strong>de</strong> una misma red. Dicho <strong>de</strong> otramanera, soluciona el problema <strong>de</strong> la hetereogeneidad <strong>de</strong>finiendouna manera universal <strong>de</strong> codificar la información. Dicha codificaciónpue<strong>de</strong> tener propieda<strong>de</strong>s <strong>de</strong> eficiencia (por medio <strong>de</strong> la compresión,por ejemplo), propieda<strong>de</strong>s <strong>de</strong> confi<strong>de</strong>ncialidad (por medio <strong>de</strong> la criptografía),etc.En el nivel <strong>de</strong> aplicación resi<strong>de</strong>n los programas. En este nivel po<strong>de</strong>mosencontrar servidores, clientes que acce<strong>de</strong>n a estos últimos, aplicacionesque trabajan según un mo<strong>de</strong>lo simétrico (peer-to-peer), etc.ActividadAsignad los diferentes niveles <strong>de</strong> las re<strong>de</strong>s que conocéisa las funciones explicadas en este apartado.ANOTACIONES47


II. <strong>Re<strong>de</strong>s</strong> <strong>de</strong> área local


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000203. Las re<strong>de</strong>s <strong>de</strong> área localUna red <strong>de</strong> área local es un sistema que permite la interconexión <strong>de</strong>or<strong>de</strong>nadores que están próximos físicamente. Enten<strong>de</strong>mos por próximotodo lo que no sea cruzar una vía pública: una habitación, unedificio, un campus universitario, etc.En el momento en que una red <strong>de</strong>be cruzar una calle, o una vía públicaen general, es preciso que una compañía <strong>de</strong> telecomunicaciones establezcala comunicación, puesto que son las únicas autorizadas para pasarlíneas por zonas públicas.Una <strong>de</strong>finición más precisa <strong>de</strong> red <strong>de</strong> área local, prescin<strong>de</strong><strong>de</strong> la distancia entre las estaciones y especifica que sucarácter distintivo resi<strong>de</strong> en que los mecanismos <strong>de</strong> enlaceentre estaciones <strong>de</strong>ben estar completamente bajo el control<strong>de</strong> la persona o entidad que establece dicha red.Como comentábamos en la primera unidad, el objetivo que se perseguíacuando se propusieron las primeras re<strong>de</strong>s <strong>de</strong> área local era compartirrecursos entre diferentes or<strong>de</strong>nadores próximos (un sistema <strong>de</strong>almacenamiento masivo, una impresora o un dispositivo <strong>de</strong> conexiónhacia el exterior, por ejemplo). Para este tipo <strong>de</strong> comunicaciones se propusouna filosofía <strong>de</strong> diseño basada en la difusión <strong>de</strong> tramas con mediocompartido, <strong>de</strong> manera que cuando una estación pone una trama en elmedio, el resto <strong>de</strong> estaciones puedan recibirla. Los receptores reales <strong>de</strong>la trama se la quedan y el resto, la ignora.NotaLas primeras re<strong>de</strong>s <strong>de</strong> área local sólo permitían que uno <strong>de</strong>los or<strong>de</strong>nadores <strong>de</strong> la red (el servidor) ofreciera recursos alresto, que sólo podían actuar como clientes <strong>de</strong> este servidor,sin capacidad <strong>de</strong> ofrecer nada. De un tiempo a esta parte,el software <strong>de</strong> red que elaboran empresas como Novell,Microsoft o Apple permite que todas las estaciones puedanactuar como servidores y clientes al mismo tiempo.ANOTACIONES51


ª FUOC • XP04/90786/00020Software libreÚltimamente y como veremos más a<strong>de</strong>lante, se han aplicado técnicas<strong>de</strong> conmutación a las re<strong>de</strong>s <strong>de</strong> área local, para conseguir mejorar surendimiento.Otra mejora importante ha sido la aparición <strong>de</strong> las re<strong>de</strong>s <strong>de</strong> área localinalámbricas (wireless LAN), en las que el enlace entre estaciones no selleva a cabo por medio <strong>de</strong> cables, sino por medio <strong>de</strong> enlaces radioeléctricos.Las ventajas <strong>de</strong> este tipo <strong>de</strong> enlaces, en cuanto a movilidad y facilidad<strong>de</strong> instalación, son evi<strong>de</strong>ntes.En una red es imprescindible i<strong>de</strong>ntificar los or<strong>de</strong>nadores que formanparte <strong>de</strong> la misma. Cuando un or<strong>de</strong>nador genera una trama para otro,a<strong>de</strong>más <strong>de</strong> los datos que le quiere enviar, le pone el i<strong>de</strong>ntificador <strong>de</strong>lor<strong>de</strong>nador (u or<strong>de</strong>nadores) <strong>de</strong>stino y el suyo, para que quien reciba latrama pueda saber quién se la ha enviado.Para construir una red local, se precisan básicamente dos cosas:hardware (tarjetas, cables, conectores) y un sofware que sea consciente<strong>de</strong> que existen diferentes máquinas conectadas y ofrezca los servicios necesariospara que las aplicaciones puedan aprovecharlo. Lo más lógicoes que este software se integre en el sistema operativo y ofrezca a las aplicacionesla visión <strong>de</strong> la red como un recurso propio más. Estos recursos<strong>de</strong> hardware y software necesarios pue<strong>de</strong>n ser analizados <strong>de</strong>s<strong>de</strong> el punto<strong>de</strong> vista <strong>de</strong> la torre OSI, como se explicaba en la unidad anterior:Figura 14.ANOTACIONESNotaLos niveles red, transporte,sesión y presentación tienensentido en re<strong>de</strong>s <strong>de</strong> área extensa,como veremos en lasunida<strong>de</strong>s siguientes.Como se pue<strong>de</strong> ver en la figura anterior, los niveles necesarios para implementaruna red <strong>de</strong> área local son los dos inferiores (físico y enlace) yel superior (aplicación). A nivel <strong>de</strong> usuario no somos conscientes <strong>de</strong> estasubdivisión porque, como hemos dicho, el código que implementa losservicios asociados a los niveles está integrado en el sistema operativo<strong>de</strong> las estaciones.52


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020El nivel físico correspon<strong>de</strong> al hardware: a la tarjeta <strong>de</strong> red, a las señaleselectromagnéticas que viajan por el medio <strong>de</strong> transmisión, a los dispositivosque generan estas señales a partir <strong>de</strong> bits, etc.El nivel <strong>de</strong> enlace, como ya sabemos, proporciona fiabilidad en elintercambio <strong>de</strong> tramas entre las estaciones: básicamente control <strong>de</strong>errores y control <strong>de</strong> flujo. Pero, por el hecho <strong>de</strong> usar un medio compartido,será necesario establecer mecanismos para que todas lasestaciones puedan usarlo cuando lo precisen, pero sin molestarse.Si dos estaciones ponen tramas en el medio <strong>de</strong> transmisión <strong>de</strong> formasimultánea, éstas se mezclarán <strong>de</strong> manera que se convertiránen algo ininteligible. Esta situación se conoce como colisión <strong>de</strong> tramasy necesitamos mecanismos para controlar el acceso al mediocompartido <strong>de</strong> manera que no se produzcan, o que si se producen,la red pueda recuperarse y seguir funcionando.La inclusión <strong>de</strong> estos mecanismos en la torre OSI se podía llevar a caboañadiendo un nivel más a la torre o, cómo al final sucedió, incluyéndolosen el nivel <strong>de</strong> enlace. Así, en contextos <strong>de</strong> área local, el nivel <strong>de</strong> enlaceincluye dos subniveles:• MAC (medium access control o control <strong>de</strong> acceso al medio), quese encarga própiamente <strong>de</strong> la política <strong>de</strong> acceso al medio• LLC (logical link control o control <strong>de</strong>l enlace lógico), que se encarga<strong>de</strong> los servicios típicos <strong>de</strong> enlace: control <strong>de</strong> errores ycontrol <strong>de</strong> flujo.Figura 15.ANOTACIONES53


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000204. Topologías <strong>de</strong> las LANLo primero que caracteriza una red local es la manera en que seconectan las estaciones; es <strong>de</strong>cir, la forma que adopta el mediocompartido entre las mismas. Básicamente existen tres topologíasposibles:• Topología en estrella.• Topología en bus.• Topología en anillo.4.1. Topología en estrellaLa topología en estrella consiste en conectar cada or<strong>de</strong>nador a unpunto central, que pue<strong>de</strong> ser tan sencillo como una simple unión física<strong>de</strong> los cables.Cuando un or<strong>de</strong>nador pone una trama en la red, ésta aparece <strong>de</strong>inmediato en las entradas <strong>de</strong>l resto <strong>de</strong> or<strong>de</strong>nadores.Figura 16.Aunque se han <strong>de</strong>finido estándares para este tipo <strong>de</strong> re<strong>de</strong>s, en la actualidadya casi no existen, puesto que no aportan ninguna ventajasobre el resto y sí muchos inconvenientes.ANOTACIONES55


ª FUOC • XP04/90786/00020Software libre4.2. Topología en busLa topología en bus consiste en un cable al que se unen todas las estaciones<strong>de</strong> la red.Figura 17.Todos los or<strong>de</strong>nadores están pendientes <strong>de</strong> si hay actividad en el cable.En el momento en que un or<strong>de</strong>nador pone una trama, todos losor<strong>de</strong>nadores la cogen y miran si son el <strong>de</strong>stinatario <strong>de</strong> la misma. Sies así, se la quedan, en caso contrario, la <strong>de</strong>scartan.Las primeras re<strong>de</strong>s en bus utilizaban un cable coaxial grueso, conectorestipo BNC, y los or<strong>de</strong>nadors se conectaban al mismo conun dispositivo <strong>de</strong>nominado transceptor (transceiver), que era exterior.Con posterioridad, apareció una nueva versión, con un cablemás fino (thin-ethernet) y con unos transceptores más pequeños,<strong>de</strong> manera que se podían integrar en el adaptador <strong>de</strong> red y así nose veían.ANOTACIONESNotaLos caprichos <strong>de</strong> la electrónica exigen que el cableesté “tapado” en los dos extremos, para que los bits nose “pierdan”. Ello se lleva a cabo con una resistencia<strong>de</strong> carga.Cuando un or<strong>de</strong>nador pone una trama en el cable, éstarecorre el cable por completo en los dos sentidos hastalos extremos, don<strong>de</strong> es absorbida por los tapones.56


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000204.3. Topología en anilloLa topología en anillo consiste en conectar cada or<strong>de</strong>nador a dosmás, <strong>de</strong> manera que se forme un anillo. Cuando un or<strong>de</strong>nadorquiere enviar una trama a otro, ésta <strong>de</strong>be pasar por todos los or<strong>de</strong>nadorsque haya entre ellos: la circulación por el anillo es unidireccional.Figura 18.El dispositivo que conecta el or<strong>de</strong>nador al anillo es el repetidor, uncircuito con tres conexiones:Figura 19.• Conexión <strong>de</strong> entrada <strong>de</strong> tramas <strong>de</strong>s<strong>de</strong> el anillo al or<strong>de</strong>nador (A).• Conexión <strong>de</strong> salida <strong>de</strong> tramas <strong>de</strong>s<strong>de</strong> el or<strong>de</strong>nador al anillo (B).ANOTACIONES57


ª FUOC • XP04/90786/00020Software libre• Conexión bidireccional, por la que pasan todas las tramas queentran y salen <strong>de</strong>l or<strong>de</strong>nador (C).El repetidor tiene tres modos <strong>de</strong> trabajo:• Modo escucha: el repetidor toma las tramas que le llegan por A ylas pone simultáneamente en B y C, para que continúen por elanillo y para que el or<strong>de</strong>nador reciba una copia <strong>de</strong> las mismas yla analice. Si es el <strong>de</strong>stinatario <strong>de</strong> la trama, se la queda y, en casocontrario, la <strong>de</strong>scarta.• Modo transmisión: el or<strong>de</strong>nador envía información a la red. Poneuna trama en C, <strong>de</strong> manera que cruza el repetidor y sale por Bhacia el or<strong>de</strong>nador siguiente <strong>de</strong>l anillo.• Modo cortocircuito: las tramas que llegan por A se ponen directamenteen B sin proporcionar una copia <strong>de</strong> las mismas al or<strong>de</strong>nador.Este modo sirve para que el anillo continúe funcionando si elor<strong>de</strong>nador correspondiente no está activo.4.4. Pseudotopología <strong>de</strong> las re<strong>de</strong>s inalámbricasHablar <strong>de</strong> topología en una red inalámbrica parece fuera <strong>de</strong> lugar,porque no ‘vemos’ ningún medio <strong>de</strong> transmisión. Pero en realidad el“éter” por don<strong>de</strong> viajan las ondas se consi<strong>de</strong>ra un medio <strong>de</strong> transmisión,y si lo comparamos con las tres topologías <strong>de</strong>scritas, vemos quese pue<strong>de</strong> comparar a la topología en bus.NotaANOTACIONESDe hecho, las ondas electromagnéticas no necesitanningún soporte físico para ser transmitidas. Se propaganen el vacío. Pero hasta que esto no fue <strong>de</strong>mostrado,los científicos utilizaban el término “éter” para<strong>de</strong>signar algo que se imaginaban que tenía que existirpero eran incapaces <strong>de</strong> ver.En un anillo o en una estrella en realidad existen ‘n’ medios in<strong>de</strong>pendientesque conectan una estación a otra (o al punto central), mien-58


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020tras que en un bus tenemos un sólo medio (un cable) al que seconectan todas las estaciones, <strong>de</strong> la misma manera que en una redinalámbrica tenemos un solo medio (el aire) don<strong>de</strong> las estacionesponen sus tramas.Figura 20.La topología, como veremos más a<strong>de</strong>lante, condiciona los mecanismos<strong>de</strong> acceso al medio que se pue<strong>de</strong>n usar en una red local. En elcaso <strong>de</strong> las re<strong>de</strong>s inalámbricas esto es particularmente <strong>de</strong>terminante.ANOTACIONES59


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000205. Cableado estructuradoLas topologías en bus y en anillo comportan un serio problema <strong>de</strong>cableado a la hora <strong>de</strong> implementarlas. Aunque es relativamentesencillo montar una red en bus o en anillo, es muy complicadomantenerla y ampliarla: cuando falla un cable o una conexión, lared entera <strong>de</strong>ja <strong>de</strong> funcionar, y no es sencillo localizar el puntoexacto don<strong>de</strong> se encuentra el fallo. Es preciso comprobar la re<strong>de</strong>ntera, lo que en numerosas ocasiones es complicado, puesto quelos cables pue<strong>de</strong>n pasar por falsos techos o conducciones <strong>de</strong> difícilacceso.Este problema ha hecho pensar en un nuevo diseño <strong>de</strong> red más controlable:el cableado estructurado.El cableado estructurado consiste en hacer una preinstalación <strong>de</strong> redsimilar a la <strong>de</strong> las re<strong>de</strong>s telefónicas. A cada punto <strong>de</strong> trabajo se hacenllegar dos líneas: una para el teléfono y otra para los datos. Todoslos cables llegan a una habitación, don<strong>de</strong> se establecen lasconexiones: los cables <strong>de</strong> teléfono se direccionan hacia la centralitay los <strong>de</strong> los datos, hacia un dispositivo que permite la interconexiónen red local.En 1991 se publicó el EIA/TIA 568 sobre cableado <strong>de</strong> telecomunicacionespara edificios comerciales. El propósito <strong>de</strong> dicho estándar es:• Ser universal, tanto en servicios soportados como en fabricantescompatibles.• Ser base para el <strong>de</strong>sarrollo <strong>de</strong> ottros estándares <strong>de</strong> comunicaciones(voz, imagen, LAN, WAN).• Definir parámetros que permitan <strong>de</strong>finir y establecer el cableado<strong>de</strong>l edificio incluso antes que nadie lo ocupe. Se concibe elcableado como un servicio más <strong>de</strong>l edificio (luz, agua, gas… ydatos).NotaEIA/TIA:Electronic Industries Association/Telecommunication IndustryAssociation.ANOTACIONES61


ª FUOC • XP04/90786/00020Software libreEl estándar especifica las señales a usar, así como los aspectos mecánicos<strong>de</strong> los cables, los conectores, los armarios, etc.Por norma general, se realiza un cableado a dos niveles:• Cableado horizontal: en cada planta (si es preciso cablear varias)se ponen cables <strong>de</strong>s<strong>de</strong> un armario hasta los puntos terminales.• Cableado vertical: <strong>de</strong>s<strong>de</strong> cada armario <strong>de</strong> planta se ponen cableshasta una habitación <strong>de</strong>l edificio don<strong>de</strong> se encuentran losdispositivos <strong>de</strong> red, los direccionadores (routers) hacia el exterior,la centralita telefónica, etc.NotaHablando con propiedaddiremos que una red tienetopología física en estrella ytopología lógica en bus.En cada planta necesitamos crear una red local en el punto don<strong>de</strong>confluyen los cables que provienen <strong>de</strong> cada una <strong>de</strong> las estaciones.Parece que una topología en estrella sería la más a<strong>de</strong>cuada, perocomo hemos comentado, tal como se había concebido, era la queofrecía menos prestaciones. La solución es combinar las ventajas <strong>de</strong>la topología física en estrella con el funcionamiento <strong>de</strong> los buses olos anillos. O sea, usar para interconectar las estaciones un dispositivo,alojado en el armario <strong>de</strong> planta, que se comporte como un buso como un anillo. En el caso <strong>de</strong>l bus (la topología más utilizada actualmente),este dispositivo se conoce como concentrador o, en inglés,hub.ANOTACIONESLectura complementariaUna buena aproximación alfuncionamiento <strong>de</strong> los concentradoresy los conmutadoresla encontraréis en:A.S. Tanenbaum (2003).<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>.Méjico: Pearson Educación.Una topología así, don<strong>de</strong> el elemento central es un dispositivo activoque está simulando un dispositivo pasivo, llevó al <strong>de</strong>sarrollo <strong>de</strong>las LAN conmutadas. El razonamiento es el siguiente: cuando elhub recibe una trama, para comportarse como un bus tiene que reenviarlahacia el resto <strong>de</strong> estaciones. Pero, el hub tiene capacidad<strong>de</strong> proceso: pue<strong>de</strong> analizar la trama y, en particular, pue<strong>de</strong> averiguarcual es su <strong>de</strong>stinatario. Entonces, si el hub conoce los i<strong>de</strong>ntificadores<strong>de</strong> las diferentes estaciones que tiene conectadas, pue<strong>de</strong>enviar la trama únicamente a su <strong>de</strong>stinatario, y así disminuir el número<strong>de</strong> tramas en la red, y, por tanto, aumentar la eficiencia. Losdispositivos que se comportan así se <strong>de</strong>nominan conmutadores (eninglés, switch).Por lo que se refiere al medio físico, se usan tanto pares <strong>de</strong> cobretrenzados como fibra óptica, aunque en mucha mayor medida los62


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020primeros por su menor coste para similares prestaciones. Se han especificadocategorías <strong>de</strong> cables, cada cual con unas capacida<strong>de</strong>s yunos requisitos mínimos a cumplir. Hoy en día el más usado es el cablecategoría 5e, que pemite un ancho <strong>de</strong> banda <strong>de</strong> 100 MHz, el requeridopara las LAN <strong>de</strong> alta velocidad, como Fast Ethernet y GigabitEthernet.NotaHablaremos <strong>de</strong> FastEthernety Gigabit Ethernet en elapartado siguiente.Los costes <strong>de</strong> instalación <strong>de</strong> un sistema <strong>de</strong> cableado estructuradoson muy altos; pero su mantenimiento esmuy simple y barato.Si falla un cable, sólo falla una estación <strong>de</strong> trabajo, no toda la red,y, si falla toda la red, es que se ha estropeado el concentrador. Tantoun caso como el otro son muy rápidos <strong>de</strong> solucionar.ActividadLos que tengáis acceso a una instalación con cableadoestructurado, estudiadla: observad las conexiones, loscables, los armarios <strong>de</strong> planta, los conmutadores, etc.ANOTACIONES63


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000206. Control <strong>de</strong> acceso al medioDado que cualquier or<strong>de</strong>nador <strong>de</strong> la red pue<strong>de</strong> poner tramas al mediocompartido, es preciso establecer mecanismos <strong>de</strong> control que reguleneste acceso <strong>de</strong> manera eficiente, justa y fiable.El control <strong>de</strong> acceso al medio (MAC) es un mecanismoque <strong>de</strong>ci<strong>de</strong> qué estación tiene acceso al medio <strong>de</strong>transmisión para emitir una trama <strong>de</strong> información.En general, los protocolos <strong>de</strong> acceso al medio se pue<strong>de</strong>n clasificaren tres gran<strong>de</strong>s grupos:• Control <strong>de</strong> acceso al medio estático• Control <strong>de</strong> acceso al medio dinámico (centralizado o distribuido)• Control <strong>de</strong> acceso al medio aleatorioLectura complementariaCada uno <strong>de</strong> estos tipos <strong>de</strong> accesos tiene ventajas e inconvenientes, yse apli-can a re<strong>de</strong>s muy diferentes. De hecho, las políticas <strong>de</strong> accesoal medio están muy vinculadas a la topología utilizada. De este modo,en una topología en anillo, la manera más natural <strong>de</strong> controlar el accesoes por paso <strong>de</strong> testigo (token passing), que es un ejemplo <strong>de</strong> controldinámico distribuido. En la topología en bus, también se pue<strong>de</strong>utilizar este sistema; sin embargo, está mucho más generalizado el uso<strong>de</strong> la técnica CSMA/CD, que es <strong>de</strong> tipo aleatorio. En las re<strong>de</strong>s inalámbricasse usa una política <strong>de</strong> acceso al medio que es una combinación<strong>de</strong> control estático y aleatorio.En esta unidad vamos a <strong>de</strong>scribir las dos políticas más comuneshoy en día en las re<strong>de</strong>s cableadas: el paso <strong>de</strong> testigo y CSMA/CD.6.1. Paso <strong>de</strong> testigoComo <strong>de</strong>cíamos, la política <strong>de</strong> paso <strong>de</strong> testigo es la más apropiadapara las re<strong>de</strong>s en anillo. Así pues, para <strong>de</strong>scribir su funcionamientoPodéis encontrar la <strong>de</strong>finición<strong>de</strong> todos los tipos <strong>de</strong>control <strong>de</strong> acceso al medioen:A.S. Tanenbaum (2003).<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>.Méjico: Pearson Educación.NotaCSMA es la sigla <strong>de</strong> CarrierSense Multiple Access (accesomúltiple por <strong>de</strong>tección <strong>de</strong>portadora) y CD es la sigla<strong>de</strong> Collision Detection (<strong>de</strong>tección<strong>de</strong> colisiones).ANOTACIONES65


ª FUOC • XP04/90786/00020Software libreasumiremos que estamos en una red <strong>de</strong> esta topología. En inglés estasre<strong>de</strong>s se <strong>de</strong>nominan token-passing ring, literalmente “anillo conpaso <strong>de</strong> testigo”.El funcionamiento <strong>de</strong> la política <strong>de</strong> paso <strong>de</strong> testigo es el siguiente:Se <strong>de</strong>fine una trama especial, el testigo. Cuando una estación lorecibe, tiene permiso para poner una trama propia en la red. Unavez esta trama ha dado toda la vuelta, y <strong>de</strong>spués <strong>de</strong> que sus <strong>de</strong>stinatariosse hayan quedado una copia <strong>de</strong> la misma, la estaciónque la ha puesto la quita y libera el testigo que llegará a la estaciónsiguiente <strong>de</strong>l anillo. Esta estación repite el procedimiento:saca el testigo <strong>de</strong> la red y pone una trama suya o, si no tiene nadapara enviar, pasa el testigo a la estación siguiente. Las estacionesque tengan información para transmitir <strong>de</strong>ben esperar a tener eltestigo para ponerla en la red.Este mecanismo <strong>de</strong> control <strong>de</strong>l medio permite con la misma facilidadla emisión <strong>de</strong> tramas tanto a una sola estación como a muchas.La trama recorre todo el anillo, por tanto todos los repetidores laven pasar. Cada uno comprueba si en el campo “<strong>de</strong>stinatario” <strong>de</strong>la cabecera <strong>de</strong> la trama aparece su i<strong>de</strong>ntificador. En caso afirmativo,se queda una copia y la retransmite hacia la siguiente estación.En caso contrario la retransmite sin quedarse copia.NotaLas velocida<strong>de</strong>s <strong>de</strong> trabajo <strong>de</strong> las re<strong>de</strong>s en anillo con testigo estánnormalizadas: 4, 16 y 100 Mbps. Si se utiliza fibra óptica como medio<strong>de</strong> transmisión, la red, que se <strong>de</strong>nomina FDDI (fiber distributeddata interface), pue<strong>de</strong> superar los 100 Mbps.ANOTACIONESIEEE es la sigla <strong>de</strong>l Institut ofElectric and Electronic Engineers(Instituto <strong>de</strong> ingenieroseléctricos y electrónicos).Las re<strong>de</strong>s <strong>de</strong> paso <strong>de</strong> testigo fueron inventadas por IBM. Con posterioridad,el IEEE elaboró el estándar 802.5, que recogía toda la informaciónexistente sobre las mismas.6.2. CSMA/CDComo ya hemos comentado, CSMA/CD es una política <strong>de</strong> acceso almedio <strong>de</strong> tipo aleatorio, lo cual quiere <strong>de</strong>cir básicamente que las estacionesno acce<strong>de</strong>n al medio <strong>de</strong> una forma prefijada sino cuandoquieren. De esta forma se consigue aumentar la eficiencia <strong>de</strong> la red66


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020con respecto a los sistemas <strong>de</strong> control estáticos. Obviamente hará faltacontrolar el caso en que dos estaciones quieran transmitir a la vez.NotaLos mecanismos <strong>de</strong> control <strong>de</strong>l tipo estático se basanen repartir el acceso al medio entre las estaciones <strong>de</strong>forma fija. Si cuando a una estación le toca acce<strong>de</strong>r almedio no tiene nada que transmitir, el lapso <strong>de</strong> tiempoasignado no pue<strong>de</strong> ser aprovechado por otra y el medioqueda <strong>de</strong>socupado.De políticas <strong>de</strong> acceso al medio <strong>de</strong> tipo aleatorio hay varias, pero las"comercialmente útiles" son dos, CSMA/CD y CSMA/CA. La primera esla más indicada para re<strong>de</strong>s con topología en bus (ya sea con un busreal, cableado, como con un hub, en un entorno <strong>de</strong> cableado estructurado).La segunda es la que se usa en las re<strong>de</strong>s inalámbricas Wi-Fi, quecomo hemos comentado, tienen una topología asimilable a un bus.Veamos en primer lugar como funciona CSMA, para luego <strong>de</strong>scribirla funcionalidad adicional <strong>de</strong> la <strong>de</strong>tección <strong>de</strong> colisiones (CD).La política <strong>de</strong> acceso CSMA (acceso múltiple por <strong>de</strong>tección <strong>de</strong> portadora)funciona <strong>de</strong> la manera siguiente:Los or<strong>de</strong>nadores escuchan constantemente el medio (miran si hay portadora).Cuando tienen una trama para transmitir, si <strong>de</strong>tectan que nohay actividad en el medio, la ponen y, en caso contrario, esperan y siguenescuchando hasta que el medio queda libre, entonces transmitensu trama. Si no tienen nada para transmitir, cuando <strong>de</strong>tectan unatrama en el medio, la toman y la procesan.Este algoritmo presenta un inconveniente claro: existe la posibilidad<strong>de</strong> que dos estaciones quieran enviar una trama en el mismomomento. Ambas escuchan el medio, no <strong>de</strong>tectan actividad y emitensimultáneamente. Entonces se produce una colisión: las señaleselectromagnéticas se mezclan y el resultado es algo ininteligible.El control <strong>de</strong> errores que se efectúa en el subnivel LLC será el encargado<strong>de</strong> <strong>de</strong>tectar dicha circunstancia y solicitar la retransmisión<strong>de</strong> las tramas que se han corrompido.Po<strong>de</strong>mos mejorar la política CSMA añadiéndole un procedimientoadicional: cuando una estación ya ha empezado a transmitir, si-ANOTACIONES67


ª FUOC • XP04/90786/00020Software libregue escuchando el medio para <strong>de</strong>tectar si se produce una colisión, encuyo caso <strong>de</strong>ja <strong>de</strong> transmitir inmediatamente, para reducir así el tiempo<strong>de</strong> colisión, y espera un tiempo aleatorio (es una manera <strong>de</strong> evitaruna nueva colisión) para volver a empezar el proceso. Esta variante recibeel nombre <strong>de</strong> CSMA/CD, por la <strong>de</strong>tección <strong>de</strong> las colisiones.Este modo <strong>de</strong> trabajo marca la existencia <strong>de</strong> un parámetro muy importanteen las re<strong>de</strong>s CSMA/CD, que es la longitud mínima <strong>de</strong> trama.Una trama en una red local CSMA/CD ha <strong>de</strong> ser suficientemente largapara que una colisión sea <strong>de</strong>tectada antes <strong>de</strong> que finalice su transmisión.Esta longitud mínima <strong>de</strong> trama es función únicamente <strong>de</strong> la velocidad<strong>de</strong> transmisión <strong>de</strong> las señales en el medio. Este parámetro, asu vez, marca otro, también muy importante en el diseño <strong>de</strong> re<strong>de</strong>s,como es el diámetro <strong>de</strong> la red, o distancia entre las estaciones másalejadas.La red Ethernet es una topología en bus que utiliza la política <strong>de</strong> accesoal medio CSMA/CD y fija como longitud mínima <strong>de</strong> trama 512 bits. Lainventó Xerox, junto con Intel y Digital, y el IEEE la elevó a la categoría<strong>de</strong> estándar: IEEE-802.3.La red Ethernet trabaja a 10 Mbps. Con posterioridad, apareció laFastEthernet, que trabaja a 100 Mbps, y, más tar<strong>de</strong>, la GigabitEthernet que, como su nombre indica, trabaja a 1 Gbps.ActividadANOTACIONESQue una red vaya a 10 Mbps no quiere <strong>de</strong>cir que todaslas conexiones se realicen a esta velocidad. Si tenéis accesoa una red <strong>de</strong> área local, por un lado, averiguad aqué velocidad funciona y por otro, haced una transferencia<strong>de</strong> información entre dos estaciones y medid lavelocidad real a la que se ha realizado (el cociente entreel número <strong>de</strong> bytes transmitidos, multiplicado por ocho,y dividido por el tiempo que ha durado la transmisión,en segundos). Cuánto más gran<strong>de</strong> sea el fichero quetransmitáis, mejor. Podéis hacer la prueba bajo diferentescondiciones <strong>de</strong> trabajo, como por ejemplo con pocasestaciones activas, con muchas transmisiones simultáneas,etc. Comparad los valores obtenidos con la velocidadnominal <strong>de</strong> la red.68


III. TCP/IP


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000207. Estructura <strong>de</strong> protocolos en InternetEl mo<strong>de</strong>lo Internet gira en torno a los protocolos TCP/IP. IP es un protocoloque proporciona mecanismos <strong>de</strong> interconexión entre re<strong>de</strong>s <strong>de</strong>área local y TCP proporciona mecanismos <strong>de</strong> control <strong>de</strong> flujo y erroresentre los extremos <strong>de</strong> la comunicación.No se trata <strong>de</strong> una arquitectura <strong>de</strong> niveles formal como la torre OSI,que ya hemos visto en la unidad 1. De hecho, podríamos consi<strong>de</strong>rarque el mo<strong>de</strong>lo <strong>de</strong> la red Internet consta sólo <strong>de</strong> cuatro partes o niveles;es <strong>de</strong>cir, todo lo que hay por <strong>de</strong>bajo <strong>de</strong>l IP, el IP, el TCP y todolo que hay por encima <strong>de</strong>l TCP:1) Por <strong>de</strong>bajo <strong>de</strong> IP. A este nivel, en el entorno Internet, se le llamanivel <strong>de</strong> red local o, simplemente, nivel <strong>de</strong> red. Por norma general,está formado por una red LAN, o WAN (<strong>de</strong> conexión punto a punto)homogénea. Todos los equipos conectados a Internet implementandicho nivel.2) Nivel IP o nivel Internet (nivel <strong>de</strong> Internetworking). Este nivelconfiere unidad a todos los miembros <strong>de</strong> la red y, por consiguiente,es el que permite que todos se puedan interconectar,con in<strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong> si se conectan a la misma por medio <strong>de</strong>línea telefónica, ISDN o una LAN Ethernet. El direccionamientoy la asignación <strong>de</strong> direcciones constituyen sus principales funciones.Todos los equipos conectados a Internet implementaneste nivel.3) Nivel TCP o nivel <strong>de</strong> transporte. Este nivel confiere fiabilidad ala red. El control <strong>de</strong> flujo y <strong>de</strong> errores se lleva a cabo principalmente<strong>de</strong>ntro <strong>de</strong> este nivel, que sólo es implementado por losequipos usuarios <strong>de</strong> la red Internet o por los terminales <strong>de</strong> Internet.Los equipos <strong>de</strong> conmutación (direccionadores o routers) no lonecesitan.ANOTACIONES71


ª FUOC • XP04/90786/00020Software libre4) Por encima <strong>de</strong> TCP. Nivel <strong>de</strong> aplicación: Este nivel correspon<strong>de</strong>a las aplicaciones que utilizan Internet: clientes y servidores <strong>de</strong>WWW, correo electrónico, FTP, etc. Por ello se le <strong>de</strong>nomina nivel<strong>de</strong> aplicación. Sólo es implementado por los equipos usuarios <strong>de</strong>la red Internet o los terminales <strong>de</strong> Internet. Los equipos <strong>de</strong> conmutaciónno lo utilizan.Figura 21.Es importante <strong>de</strong>stacar que sólo los equipos terminales implementantodos los niveles; los equipos intermedios únicamente implementanel nivel <strong>de</strong> red y el nivel IP.Figura 22.ANOTACIONESInternet se situa “encima” <strong>de</strong> las re<strong>de</strong>s locales ya existentes. Nore<strong>de</strong>fine el concepto ni propone protocolos <strong>de</strong> red local nuevos.72


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000207.1. Protocolos <strong>de</strong> InternetEn los niveles intermedios existen otros protocolos complementarios,a<strong>de</strong>más <strong>de</strong> TCP e IP. La figura siguiente sería un mapa bastante completo<strong>de</strong> los protocolos que se usa en Internet:Figura 23.Como ya hemos comentado, el concepto nivel no existe en Internet.Este concepto se utiliza en otros mo<strong>de</strong>los <strong>de</strong> red, como la OSI. Noobstante, como es un concepto útil, lo utilizaremos para plantear elestudio <strong>de</strong> los diferentes protocolos <strong>de</strong> la manera siguiente:a) En primer lugar, <strong>de</strong>scribiremos el IP y los protocolos que colaborancon él: ARP e ICMP.b) Después, estudiaremos ciertos aspectos básicos <strong>de</strong>l nivel <strong>de</strong> redpara las diferentes posibilida<strong>de</strong>s <strong>de</strong> conexión a Internet actuales:las LAN Ethernet y los accesos por línea punto a punto con el protocoloPPP o con ADSL.Dejaremos para unida<strong>de</strong>s posteriores el estudio <strong>de</strong>l nivel <strong>de</strong> transportey <strong>de</strong>l nivel <strong>de</strong> aplicación.ANOTACIONES73


ª FUOC • XP04/90786/00020Software libre7.2. EncapsulamientoEn cualquier arquitectura <strong>de</strong> niveles (sea más o menos formal) en queexista una comunicación vertical <strong>de</strong>ntro <strong>de</strong> cada máquina, los datosque se generan en el nivel superior (aplicación) atraviesan el resto <strong>de</strong>niveles para “salir” <strong>de</strong> la máquina por el nivel físico.Cada uno <strong>de</strong> estos protocolos funciona con unas estructuras fundamentalesque genéricamente se conocen como PDU (protocol data units). Sinembargo, en cada nivel se utilizan nombres diferentes para <strong>de</strong>nominarlo que, <strong>de</strong> hecho, tiene funciones equivalentes. En el conjunto <strong>de</strong> protocolosInternet tenemos las siguientes PDU:• Las PDU Ethernet o PPP se <strong>de</strong>nominan tramas.• Las PDU <strong>de</strong>l nivel <strong>de</strong> interconexión (IP o ARP) se suelen <strong>de</strong>nominarpaquetes, aunque las PDU ICMP se suelen <strong>de</strong>nominar mensajes, seguramenteporque viajan en paquetes IP.• En el nivel <strong>de</strong> transporte, se habla <strong>de</strong> segmentos en TCP, y <strong>de</strong> datagramasen UDP.• En niveles superiores que utilizan UDP, por norma general se utilizala palabra PDU (SNMP-PDU, por ejemplo). En el caso <strong>de</strong>l TCP, el servicioque proporciona a las aplicaciones es el flujo <strong>de</strong> bytes sin estructura(byte stream). Por tanto, el concepto PDU <strong>de</strong>ja <strong>de</strong> tenersentido en el nivel superior a TCP.ANOTACIONESEl resultado <strong>de</strong> los diferentes encapsulamientos en cada nivel esque, cuando el nivel superior <strong>de</strong>ci<strong>de</strong> transmitir cierta información,se provoca una cascada <strong>de</strong> PDU que va <strong>de</strong>scendiendo hasta el nivelinferior, que finalmente es el que transmite físicamente los bits queresultan <strong>de</strong>l mismo.NotaPara calcular la longitud <strong>de</strong> trama necesaria paratransmitir un byte <strong>de</strong> información, veremos, a modo<strong>de</strong> ejemplo, la emulación <strong>de</strong> terminal que efectúa elprograma telnet y el protocolo que lleva el mismonombre.74


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Imaginemos que pulsamos una tecla sobre la ventana<strong>de</strong>l programa telnet. Esta acción llega en forma <strong>de</strong>un byte único al nivel TCP, que encapsula dicho byteen un segmento TCP. Este segmento tendrá una cabecera<strong>de</strong> 20 bytes y un contenido que será el byte correspondientea la tecla pulsada. Estos 21 bytes setransportarán <strong>de</strong>ntro <strong>de</strong> un paquete IP que, generalmente,formará un paquete con 20 bytes <strong>de</strong> cabeceramás el contenido ya mencionado <strong>de</strong> 21 bytes. Estepaquete <strong>de</strong> 41 bytes irá, a su vez, <strong>de</strong>ntro <strong>de</strong> una tramaque lo transportará por su soporte físico <strong>de</strong> transmisión.Si el soporte <strong>de</strong> transmisión es una líneatelefónica con un mó<strong>de</strong>m y utilizamos PPP, el resultadopue<strong>de</strong> ser que le añadamos 8 bytes más.De todo ello resulta una trama <strong>de</strong> 49 bytes (8 + 20 ++ 20 + 1) <strong>de</strong> longitud para transmitir uno solo. La figurasiguiente muestra esta estructura:Figura 24.ANOTACIONES75


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000208. El IP (Internet protocol)IP y TCP son un par <strong>de</strong> protocolos bien compenetrados. ElIP es un protocolo <strong>de</strong> interconexión <strong>de</strong> red orientado a datagrama.Por tanto, no dispone <strong>de</strong>l concepto <strong>de</strong> circuitovirtual, <strong>de</strong> manera que no es capaz <strong>de</strong> recuperar tramasperdidas, ni <strong>de</strong> garantizar que las tramas se entregaránen el or<strong>de</strong>n correcto –puesto que los paquetes pue<strong>de</strong>n seguircaminos diferentes y, por tanto, sufrir retardos diferentes–,ni que el ritmo <strong>de</strong> recepción sea el a<strong>de</strong>cuadopara que el receptor procese convenientemente los datos.El IP es <strong>de</strong>l tipo best effort (podríamos traducirlo como ‘con la mejor intención’,o ‘quien hace lo que pue<strong>de</strong> no está obligado a más’).Evi<strong>de</strong>ntemente, cuando utilizamos una red, no siempre po<strong>de</strong>mosconformarnos con conseguir que la información llegue si la red pue<strong>de</strong>.Aquí interviene el TCP, que es responsable <strong>de</strong> conseguir que la informaciónllegue en las condiciones <strong>de</strong> fiabilidad <strong>de</strong>seadas.NotaHay <strong>de</strong>tractores acérrimos, así como <strong>de</strong>fensores incondicionales<strong>de</strong> la filosofía best effort, aplicada a las re<strong>de</strong>s y,seguramente, ambos grupos tienen una parte <strong>de</strong> razón. Lared X.25 es un ejemplo casi opuesto a esta filosofía queproporciona a sus usuarios unos niveles <strong>de</strong> fiabilidad y flexibilidadrazonablemente elevados, gracias a la utilización<strong>de</strong> la conmutación <strong>de</strong> paquetes con circuitos virtuales.De hecho, la historia da la razón a los <strong>de</strong>fensores <strong>de</strong> lafilosofía best effort, puesto que el X.25 actualmente seconsi<strong>de</strong>ra una tecnología casi obsoleta, mientras que elIP está <strong>de</strong> moda. Las razones <strong>de</strong>ben buscarse, comosiempre, en el coste. La filosofía IP permite implementarre<strong>de</strong>s con un coste mínimo: pensad que el TCP sólo precisaimplementarse en los terminales <strong>de</strong> la red, y no enlosnodos <strong>de</strong> conmutación. Por tanto, los nodos <strong>de</strong> conmutaciónIP son mucho más simples que los <strong>de</strong> X.25.Lectura complementariaUna buena <strong>de</strong>scripción <strong>de</strong>los algoritmos <strong>de</strong> direccionamientousado en Internetse pue<strong>de</strong> encontrar en:W.R. Stevens (1994). TCP/IPIllustrated. Vol. 1 The protocols.Wilmintong: Addison-Wesley.ANOTACIONES77


ª FUOC • XP04/90786/00020Software libre8.1. Direcciones IPLas direcciones IP son únicas para cada máquina. Para ser precisos,cada dirección es única para cada una <strong>de</strong> las interfaces <strong>de</strong> redIP <strong>de</strong> cada máquina. Si una máquina dispone <strong>de</strong> más <strong>de</strong> una interfaz<strong>de</strong> red, necesitará una dirección IP para cada una.Las direcciones IP tienen una longitud <strong>de</strong> 32 bits (4 bytes).NotaÉl único objetivo <strong>de</strong> esta notaciónes la legibilidad humana.No se pue<strong>de</strong> per<strong>de</strong>rnunca <strong>de</strong> vista que una direcciónIP son 32 bits.Para representar una dirección, se suele escribir los 4 bytes en <strong>de</strong>cimaly separados por puntos. Por ejemplo:212.45.10.89La numeración en IP sigue una filosofía jerárquica. Cada dirección estáformada por dos partes. Una correspon<strong>de</strong> a la red don<strong>de</strong> está la estacióny la otra, a la propia estación.Para conseguir que no haya ninguna dirección igual, Internet dispone<strong>de</strong> una organización <strong>de</strong>nominada Internet Network InformationCenter o InterNIC que se <strong>de</strong>dica a esta tarea. En la actualidad, estaentidad <strong>de</strong>lega la responsabilidad <strong>de</strong> la asignación <strong>de</strong> direccionesa entida<strong>de</strong>s regionales. Las direcciones se asignan por grupos o re<strong>de</strong>s,no individualmente.Los tipos <strong>de</strong> re<strong>de</strong>s que tienen cabida en Internet se distinguen por la cantidad<strong>de</strong> estaciones que pue<strong>de</strong>n soportar, y son los siguientes:ANOTACIONES1) Las re<strong>de</strong>s <strong>de</strong> clase A reservan el primer byte como i<strong>de</strong>ntificador<strong>de</strong> red y los tres restantes como i<strong>de</strong>ntificadores <strong>de</strong> estación. El primerbit <strong>de</strong>l primer byte vale 0, por tanto, en Internet sólo pue<strong>de</strong>haber 128 re<strong>de</strong>s <strong>de</strong> clase A (con 2 24 estaciones cada una comomáximo). Hace mucho tiempo que ya no queda ninguna paraasignar.2) Las re<strong>de</strong>s <strong>de</strong> clase B tienen 16 bits para cada campo; los dos primerosbytes <strong>de</strong>l i<strong>de</strong>ntificador <strong>de</strong> red valen 1 0, por tanto, hay16.384 (2 14 ) re<strong>de</strong>s <strong>de</strong>, como mucho, 65.536 estaciones. De claseB no queda ninguna para asignar.78


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000203) Las re<strong>de</strong>s <strong>de</strong> clase C reservan 24 bits para el i<strong>de</strong>ntificador <strong>de</strong> red(con los tres primeros bits 1 1 0) y los 8 restantes son para el i<strong>de</strong>ntificador<strong>de</strong> estación.Una vez que se conoce una dirección, es fácil saber si correspon<strong>de</strong> auna red <strong>de</strong> clase A, B o C, como se pue<strong>de</strong> ver en la figura siguiente:Figura 25.La clase A está pensada para gran<strong>de</strong>s empresas o corporaciones,con muchos terminales por i<strong>de</strong>ntificar; la clase B, para corporacionesmedianas; la clase C, para entornos mucho más pequeños;la clase D está <strong>de</strong>stinada al tráfico multicast IP, y la clase E,<strong>de</strong> momento, no tienen ningún uso concreto. La dirección comentadacon anterioridad (212.45.10.89) es <strong>de</strong> clase C.Classless Inter-Domain Routing (CIDR)NotaEl espacio <strong>de</strong> direcciones se está agotando a marchasforzadas y, si bien existen técnicas relacionadas con la seguridadque ayudan a mitigar este problema (como elNAT, network address translation) el hecho <strong>de</strong> utilizar elconcepto <strong>de</strong> “clase” ha agravado el problema: algunascorporaciones que han reservado una red clase A o B ysólo han aprovechado una pequeña parte <strong>de</strong> la misma,han <strong>de</strong>jado sin un buen trozo <strong>de</strong>l espacio <strong>de</strong> direccionesal resto <strong>de</strong> Internet.ANOTACIONES79


ª FUOC • XP04/90786/00020Software libreHoy día, en lugar <strong>de</strong> proporcionar re<strong>de</strong>s clase C (<strong>de</strong>las otras ya no quedan) lo que se hace es dar gruposmayores (técnicamente, se podrían dar más pequeñas,pero no se hace) limitados por máscaras intermediasentre la clase B y la C. Por ejemplo, si alguien quiereuna red <strong>de</strong> un millar <strong>de</strong> direcciones necesita cuatro re<strong>de</strong>s<strong>de</strong> clase C. En lugar <strong>de</strong> proporcionarle estas cuatrore<strong>de</strong>s in<strong>de</strong>pendientes, se le da una máscara <strong>de</strong> 22 bits:quedan 10 para direcciones <strong>de</strong> terminal, lo que permite1.024 terminales.8.1.1. Máscaras <strong>de</strong> redCuando un administrador <strong>de</strong> sistemas recibe el encargo <strong>de</strong> gestionarun conjunto <strong>de</strong> direcciones, es posible que necesite configurarinternamente diferentes LAN con este conjunto. Por ello, elmecanismo para distinguir distintas re<strong>de</strong>s (LAN) entre sí no se pue<strong>de</strong> basarexclusivamente en los bits i<strong>de</strong>ntificadores <strong>de</strong> clase que hemos comentadocon anterioridad.La máscara <strong>de</strong> red constituye el mecanismo que nos permitiráconseguir más flexibilidad. Por medio <strong>de</strong> una máscara <strong>de</strong> 32 bits,<strong>de</strong>finiremos los bits que i<strong>de</strong>ntifican la red (bits en 1) y los que i<strong>de</strong>ntificanla estación (bits en 0). Por norma general, los bits 1 y los 0son consecutivos, pero no necesariamente.ANOTACIONESA continuación, <strong>de</strong>finimos <strong>de</strong> nuevo el concepto i<strong>de</strong>ntificador <strong>de</strong>red, adaptándolo a la máscara: el i<strong>de</strong>ntificador <strong>de</strong> red es la porción<strong>de</strong> dirección IP que encaja con los bits 1 <strong>de</strong> la máscara.El concepto máscara es capital para la comprensión <strong>de</strong>l funcionamiento<strong>de</strong> las re<strong>de</strong>s IP, permite a una estación <strong>de</strong>cidir si el <strong>de</strong>stino alque <strong>de</strong>be transmitir un paquete se encuentra <strong>de</strong>ntro <strong>de</strong> la misma red<strong>de</strong> área local que este último o si, por el contrario, se encuentra enuna LAN remota y, por tanto, <strong>de</strong>be <strong>de</strong>legar su transmisión a algúnequipo <strong>de</strong> su misma LAN (el direccionador) para que se encargue <strong>de</strong>hacer llegar el paquete a su <strong>de</strong>stino.80


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Todas las estaciones <strong>de</strong> una misma red <strong>de</strong> área local<strong>de</strong>ben utilizar el mismo i<strong>de</strong>ntificador <strong>de</strong> red y es precisoque todas las estaciones posean la misma máscara.NotaSi tenemos dos estaciones con las direcciones147.83.153.100 y 147.83.153.200, po<strong>de</strong>mos <strong>de</strong>ducirque están interconectadas directamente (por una LAN) sila máscara <strong>de</strong> su red es 255.255.255.0, así como <strong>de</strong>duciríamosque no están conectadas con la misma LAN si lamáscara fuese, por ejemplo, 255.255.255.128.NotaUna notación alternativa es proporcionar el número<strong>de</strong> bits 1 <strong>de</strong> la máscara. Así pues, la máscara255.255.255.0 es una máscara <strong>de</strong> 24 bits y la255.255.255.128 es una máscara <strong>de</strong> 25 bits.En ocasiones, po<strong>de</strong>mos ver una dirección con el añadido<strong>de</strong> la máscara; por ejemplo:147.83.153.100/24.Sin embargo, esta notación sólo es útil para máscarascon 1 consecutivos.Cuando la máscara no coinci<strong>de</strong> exactamente con la estructura <strong>de</strong>clases <strong>de</strong>finida, entonces se habla <strong>de</strong> subnetting, porque estamoscreando subre<strong>de</strong>s <strong>de</strong>ntro <strong>de</strong> una red.8.1.2. Direcciones <strong>de</strong> propósito especialExisten diferentes direcciones especiales. Nosotros expondremos acontinuación sólo las más importantes:• Dirección <strong>de</strong> red. Las direcciones <strong>de</strong> red se expresan con la direcciónque tendría cualquier estación suya y con todos los bits <strong>de</strong>lEjemploLa máscara 212.45.10.0/27. Permite 6 subre<strong>de</strong>s distintas<strong>de</strong>ntro <strong>de</strong> la red <strong>de</strong>clase C 212.45.10.0.ANOTACIONES81


ª FUOC • XP04/90786/00020Software librei<strong>de</strong>ntificador <strong>de</strong> estación a cero. Por ejemplo, la red en que se encuentrala estación 147.83.153.100/24 es la 147.83.153.0/24 yla red en que se encuentra la estación 147.83.153.200/25 es la147.83.153.128/25.• Dirección 0.0.0.0. Esta dirección señala al mismo or<strong>de</strong>nador quela envía. Tiene dos funciones básicas:– Aparecer como dirección origen en paquetes IP generados por estacionessin dirección IP asignada. Normalmente sólo aparece mientrasla estación intenta averiguar su dirección mediante protocoloscomo RARP (reverse address resolution protocol), BOOTP (bootstrapprotocol) o DHCP (dynamic host configuration protocol).– Servir al software <strong>de</strong> gestión <strong>de</strong> direccionamiento para indicar laruta por <strong>de</strong>fecto.EjemploLa dirección 127.03.87 esequivalente a la dirección127.0.0.1.• Dirección 127.0.0.1 (loopback). Esta dirección no es válida paralos paquetes IP. El software <strong>de</strong> red la utiliza para transmitir paquetesa la máquina local (<strong>de</strong> hecho, los paquetes no son enviados,sino que son entregados al <strong>de</strong>stino por el mismo sistema operativo).En realidad, los tres bytes <strong>de</strong>l i<strong>de</strong>ntificador <strong>de</strong> estación sonirrelevantes. Esta dirección sólo tiene interés para programar aplicaciones;los sistemas <strong>de</strong> red no verán nunca que ningún paqueteviaje por la red con esta dirección como origen o <strong>de</strong>stino.ANOTACIONES• Dirección 255.255.255.255 (broadcast). Esta dirección sólo esválida como dirección <strong>de</strong> <strong>de</strong>stino <strong>de</strong> un paquete. Se utiliza paratransmitir paquetes a todas las estaciones localizadas <strong>de</strong>ntro <strong>de</strong>la misma LAN que la máquina <strong>de</strong> origen. Existe una versiónequivalente, que es el broadcast dirigido. En este segundo caso,el paquete es recibido por todas las máquinas <strong>de</strong> una LAN especificadapor el i<strong>de</strong>ntificador <strong>de</strong> red. El i<strong>de</strong>ntificador <strong>de</strong> estación<strong>de</strong>be ser todo 1.Por lo tanto, para enviar un broadcast a la red 147.83.153.0con la máscara 255.255.255.0 (o 147.83.153.0/24) po<strong>de</strong>mos utilizarla dirección 255.255.255.255 si estamos <strong>de</strong>ntro <strong>de</strong> la red147.83.153.0, o bien la 147.83.153.255 si estamos en una es-82


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020tación remota. El primer caso, lo llamaremos broadcast local, yel segundo, broadcast remoto.• Todas las direcciones <strong>de</strong> estos rangos:– 10.0.0.0/8– De la 172.16.0.0/16 a la 172.31.0.0/16.– De la 192.168.0.0/24 a la 192.168.255.0/24.Estas direcciones, que correspon<strong>de</strong>n respectivamente a re<strong>de</strong>s <strong>de</strong>clase A, B y C, no son asignadas por Internet, ni nunca lo serán.Se utilizan en re<strong>de</strong>s que trabajan con los protocolos TCP/IP perono está previsto que se conecten directamente a Internet y, encaso <strong>de</strong> que se conectaran, estarían parcialmente ocultas porproxies o firewalls, que se encargan <strong>de</strong> reducir su dirección a otraque esté en los rangos <strong>de</strong> direcciones públicas.Por tanto, en las re<strong>de</strong>s <strong>de</strong> clase A, B y C no tenemos 2 8 , 2 16 o 2 24 estacionesposibles, respectivamente, sinó 2 8 − 2, 2 16 − 2 y 2 24 − 2. Las direccionesque tienen todos los bits correspondientes a la estación a 0 ylas que los tienen todos a 1 no son direcciones válidas para estaciones.Activida<strong>de</strong>s• Indicad a qué clase pertenecen, cuál sería la dirección<strong>de</strong> red y la dirección <strong>de</strong> broadcast remoto <strong>de</strong>cada una <strong>de</strong> las direcciones IP siguientes:– 169.5.10.10 / 16– 124.127.122.123 / 8– 199.134.167.175 / 27– 201.201.202.202 / 24– 129.11.189.15 / 20• Una empresa quiere montar una red <strong>de</strong> or<strong>de</strong>nadoresen un entorno TCP/IP. Para ello, ha <strong>de</strong>cididousar direcciones reservadas para intranet. Concretamentela red 192.168.206.0, pero sólo necesitaespacio <strong>de</strong> direcciones para diez estaciones, y seplantean hacer una segmentación <strong>de</strong> la red.– ¿Cuál sería la máscara más restrictiva para este escenario?– ¿Cuál sería el rango <strong>de</strong> subre<strong>de</strong>s posibles?ANOTACIONES83


ª FUOC • XP04/90786/00020Software libre– Suponiendo que la dirección IP <strong>de</strong> una estación es192.168.206.100, ¿cuáles serían las direcciones<strong>de</strong>l resto <strong>de</strong> estaciones?8.2. El formato <strong>de</strong>l paquete IPFigura 26.A continuación <strong>de</strong>scribiremos los campos que componen el paquete IP:ANOTACIONES• Versión: siempre vale cuatro (0100), para los paquetes <strong>de</strong> la versiónactual (IPv4).Figura 27.84


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• Longitud <strong>de</strong> la cabecera: da la longitud <strong>de</strong> la cabecera en palabras<strong>de</strong> 32 bits (4 bytes). Por tanto, el número <strong>de</strong> bytes <strong>de</strong> la cabeceratiene que ser múltiplo <strong>de</strong> 4. Asimismo, limita la longitud <strong>de</strong> la cabeceraa 60 bytes (15 · 4), puesto que 15 es el máximo que se pue<strong>de</strong>expresar con cuatro dígitos binarios. Si no hay campo <strong>de</strong> opciones,la cabecera tiene 20 bytes; por tanto, el campo en este casovaldría 5 (5 · 4 bytes = 20 bytes).Figura 28.• Tipo <strong>de</strong> servicio: este campo se encuentra dividido en varios subcampos.Permite pedir un trato especial para el paquete y raramentese implementa.Figura 29.NotaEl campo Tipo <strong>de</strong> serviciopermite <strong>de</strong>finir dos variables:• El nivel <strong>de</strong> prioridad(<strong>de</strong>l 1 al 8).• El tipo <strong>de</strong> calidad aplicableal contenido (retardobajo, velocidad alta, fiabilidadalta, coste bajo,etc.).• Longitud total <strong>de</strong>l paquete: da la longitud total <strong>de</strong>l paquete (cabeceraincluida) en bytes. Como este campo es <strong>de</strong> 16 bits, un paqueteIP no pue<strong>de</strong> tener más <strong>de</strong> 65.535 bytes (2 16 − 1).Figura 30.ANOTACIONES85


ª FUOC • XP04/90786/00020Software libre• I<strong>de</strong>ntificación <strong>de</strong>l paquete: contiene un i<strong>de</strong>ntificador que es diferentepara cada paquete que genera la estación.Figura 31.NotaPodéis ver la fragmentación<strong>de</strong> paquetes en el apartado8.2.1 <strong>de</strong> esta unidad.• Indicadores (flags) y Posición <strong>de</strong> este fragmento: estos campospermiten gestionar la fragmentación <strong>de</strong> paquetes.Figura 32.ANOTACIONES• Tiempo <strong>de</strong> vida o TTL (Time To Live): indica el número máximo<strong>de</strong> direccionadores que pue<strong>de</strong> cruzar el paquete. Se utilizapara evitar que un paquete pueda quedar dando vueltas in<strong>de</strong>finidamente<strong>de</strong>ntro <strong>de</strong> la red en caso <strong>de</strong> que haya algún problemaal entregarlo. Cada direccionador disminuye el campo en uno;cuando uno <strong>de</strong> ellos <strong>de</strong>tecta un paquete con TTL = 1, lo elimina yenvía a quien lo ha emitido un mensaje <strong>de</strong> error por medio <strong>de</strong>un mensaje ICMP.86


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Figura 33.• Protocolo: i<strong>de</strong>ntifica el tipo <strong>de</strong> protocolo que transporta el paquete.Los valores más comunes <strong>de</strong> los diferentes tipos <strong>de</strong> protocolosson los siguientes:TCP 6UDP 17ICMP 1Figura 34.• Checksum: realiza el control <strong>de</strong> errores en la cabecera. El campo<strong>de</strong> datos no queda protegido por ningún checksum; es responsabilidad<strong>de</strong> los usuarios <strong>de</strong>l IP (TCP, UDP, etc.) el control <strong>de</strong> los posibleserrores en su contenido.NotaPodéis ver una implementaciónen lenguaje C <strong>de</strong>l algoritmochecksum en el anexo 1.Figura 35.ANOTACIONES87


ª FUOC • XP04/90786/00020Software libreNotaEl checksum (o comprobación por adición) es básicamentela suma aritmética <strong>de</strong> los bytes <strong>de</strong> la cabeceraagrupados <strong>de</strong> dos en dos (si el resultado necesita más<strong>de</strong> 16 bits, se suman los bits sobrantes al mismo resultado).Este algoritmo, si bien es fácil y rápido <strong>de</strong> calcular, nose caracteriza por poseer unas gran<strong>de</strong>s cualida<strong>de</strong>spara la <strong>de</strong>tección <strong>de</strong> errores. Ello, sumado al hecho <strong>de</strong>que el contenido <strong>de</strong>l IP no tiene checksum y a otros factores(tales como que muchos sistemas no calculan elchecksum <strong>de</strong> los paquetes UDP), <strong>de</strong>muestra que en elmundo <strong>de</strong> Internet no existe un interés especial por la<strong>de</strong>tección <strong>de</strong> errores. Con frecuencia, éste ha sido unargumento en el que se han basado los <strong>de</strong>tractores <strong>de</strong>lprotocolo IP para atacarlo.La <strong>de</strong>tección <strong>de</strong> errores <strong>de</strong>ntro <strong>de</strong>l campo <strong>de</strong> informaciónes responsabilidad <strong>de</strong> quien entra la información.Los usuarios más habituales <strong>de</strong>l IP son los protocolosTCP, UDP e ICMP, y todos protegen la información conun campo adicional <strong>de</strong> checksum.ActividadBuscad errores posibles que pasarían inadvertidos alalgoritmo checksum.• Dirección <strong>de</strong> origen IP: i<strong>de</strong>ntifica la máquina que ha generado elpaquete.ANOTACIONESFigura 36.88


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• Dirección <strong>de</strong> <strong>de</strong>stino IP: i<strong>de</strong>ntifica la máquina a la que va <strong>de</strong>stinadoel paquete.Figura 37.• Opciones: existen diferentes servicios asignados a este campo,pero por lo general no se utilizan. Comentarems algunos <strong>de</strong> losmismos cuando hablemos <strong>de</strong>l ICMP. Sea como sea, la longitudtotal está limitada a 40 bytes (15 · 4 − 20).Figura 38.8.2.1. FragmentaciónLos paquetes IP van siempre insertados en tramas <strong>de</strong> nivel <strong>de</strong> enlaceo MAC. Unos ejemplos que ya hemos visto, son los protocolos PPP yEthernet.La mayoría <strong>de</strong> protocolos <strong>de</strong> nivel <strong>de</strong> enlace fijan una longitud máxima<strong>de</strong> datos a transmitir en una trama. Esta longitud se conoce como MTU(maximum transfer unit) y está <strong>de</strong>terminada por diferentes factores segúnel caso. En el caso <strong>de</strong> Ethernet, la MTU vale 1.500 bytes.Cuando una estación transmite un paquete IP, conoce la MTU <strong>de</strong> su interfaz<strong>de</strong> red, y está restringida a transmitir paquetes IP cuya longitud seainferior o igual a esta MTU. Si el paquete pasa por un direccionador conectadoa una red con una MTU inferior al tamaño <strong>de</strong>l paquete, es pre-ANOTACIONES89


ª FUOC • XP04/90786/00020Software libreciso fragmentarlo. Los fragmentos resultantes <strong>de</strong> la operación sonpaquetes normales, pero con las características siguientes:• Todos los fragmentos que provienen <strong>de</strong> un paquete fragmentadotienen el mismo i<strong>de</strong>ntificador <strong>de</strong> paquete en las respectivas cabecerasIP.• Todos los fragmentos indican con el campo Posición <strong>de</strong> este fragmentoa qué byte correspon<strong>de</strong> el primer byte <strong>de</strong> datos <strong>de</strong>l fragmento<strong>de</strong>ntro <strong>de</strong>l paquete original. El primer fragmento tiene uncero en este campo.• La parte <strong>de</strong> datos <strong>de</strong> cada fragmento contiene un número <strong>de</strong>bytes múltiplo <strong>de</strong> 8. El último fragmento no tiene porque cumplireste requisito.• El bit + <strong>de</strong>l campo Indicadores es 1 en todos los fragmentos a excepción<strong>de</strong>l último, que, por ello se suele <strong>de</strong>nominar hay más.• El resto <strong>de</strong> los campos <strong>de</strong> la cabecera se copia íntegramente <strong>de</strong>lpaquete original a los fragmentos que resultan <strong>de</strong> la fragmentación,excepto el indicador <strong>de</strong> longitud <strong>de</strong>l paquete y el checksum,que se <strong>de</strong>ben calcular <strong>de</strong> nuevo.Figura 39.ANOTACIONESEn principio, podríamos suponer que, cuando los fragmentos vuelvena una red con una MTU suficiente, el direccionador que los recibelos reunifica. Sin embargo, no se hace así, en primer lugarporque la ley no escrita <strong>de</strong> Internet según la cual el direccionador<strong>de</strong>be llevar a cabo el mínimo trabajo necesario no se cumpliría. Ensegundo lugar (y más importante), porque nadie garantiza que todoslos fragmentos sigan el mismo camino. La única estación capaz<strong>de</strong> recomponer los fragmentos es la <strong>de</strong> <strong>de</strong>stino.90


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020La estación <strong>de</strong> <strong>de</strong>stino, cuando recibe un fragmento, reserva suficientememoria para alojar el mayor paquete IP posible (65.535 bytes),puesto que no tiene manera <strong>de</strong> saber cuál es el tamaño <strong>de</strong>l paqueteoriginal. A partir <strong>de</strong> aquí, pone en marcha un temporizador* y empiezaa recolectar los fragmentos según su i<strong>de</strong>ntificador. Cuando sehan recibido todos los fragmentos, se entrega el paquete a la aplicación(protocolo) correspondiente. En caso <strong>de</strong> que el temporizadorsalte, se <strong>de</strong>scartan todos los fragmentos llegados hasta aquel momento.El nivel superior (TCP) es el responsable <strong>de</strong> pedir una retransmisióncuando convenga, puesto que el IP no dispone <strong>de</strong> ningúnmecanismo para pedirla.NotaEste temporizador permite<strong>de</strong>tectar la pérdida <strong>de</strong> unfragmento por el camino y,por tanto, la pérdida <strong>de</strong> lamemoria reservada.NotaDentro <strong>de</strong>l campo Indicadores hay dos bits más que nohemos comentado: uno no se utiliza y el otro, el DF(Don’t Fragment), especifica que el paquete no <strong>de</strong>befragmentarse. Si fuera preciso fragmentarlo, el paquetesería <strong>de</strong>scartado y se enviaría un mensaje ICMP indicandoel error a la estación originadora <strong>de</strong>l paquete. Usualmente,se activa el bit DF sólo cuando la fragmentaciónno es <strong>de</strong>seable como, por ejemplo, cuando enviamospaquetes a estaciones con la pila TCP/IP implementadaen ROM, puesto que entonces se implementa sólo unamínima parte <strong>de</strong> la funcionalidad <strong>de</strong> TCP/IP.ActividadSe <strong>de</strong>be transmitir un datagrama <strong>de</strong> 4.480 bytes y necesitaser fragmentado porque pasará por una redEthernet que admite un máximo <strong>de</strong> 1.500 bytes <strong>de</strong> datos.Indicad los valores <strong>de</strong>l campo Longitud <strong>de</strong>l paquete, <strong>de</strong>lcampo Posición <strong>de</strong> este fragmento y <strong>de</strong>l bit + (MF), paracada uno <strong>de</strong> los paquetes IP que se generen.8.3. Direccionamiento y direccionadoresLas atribuciones principales <strong>de</strong> los direccionadores son interconectardos o más subre<strong>de</strong>s IP y encargarse <strong>de</strong> direccionar el tráfico <strong>de</strong>stinadoa estaciones remotas.ANOTACIONES91


ª FUOC • XP04/90786/00020Software libreCada direccionador <strong>de</strong> la red Internet <strong>de</strong>be ser capaz <strong>de</strong> <strong>de</strong>cidir (en unafracción <strong>de</strong> segundo) a dón<strong>de</strong> <strong>de</strong>be dirigir un paquete basándose exclusivamenteen la dirección <strong>de</strong> <strong>de</strong>stino, y en el conocimiento que tiene <strong>de</strong>la red y <strong>de</strong> su posición (la <strong>de</strong>l direccionador) <strong>de</strong>ntro <strong>de</strong> Internet. De hecho,cada direccionador no <strong>de</strong>ci<strong>de</strong> la ruta entera <strong>de</strong>l paquete, sino sóloel trozo <strong>de</strong> ruta en que participa: el salto (hop) siguiente. Entre el origeny el <strong>de</strong>stino tenemos un número variable <strong>de</strong> saltos, y en cada uno <strong>de</strong>ellos participan un par <strong>de</strong> direccionadores (el emisor y el receptor <strong>de</strong>lpaquete) a excepción <strong>de</strong>l primero y el último, en que participan las estacionesemisora y receptora, respectivamente. Las conexiones entre direccionadores,o bien entre direccionador y estación terminal, lascomponen LAN o enlaces punto a punto.Figura 40.En la figura anterior, po<strong>de</strong>mos ver un paquete IP que cruza tres re<strong>de</strong>s <strong>de</strong>área local. En cada una el paquete va encapsulado <strong>de</strong>ntro <strong>de</strong> una trama<strong>de</strong> un tipo a<strong>de</strong>cuado a la subred que cruza (en la figura podrían ser tresLAN Ethernet). Las direcciones <strong>de</strong> origen y <strong>de</strong> <strong>de</strong>stino <strong>de</strong>l nivel LAN encada tramo son diferentes. En cambio, la dirección <strong>de</strong> origen y la <strong>de</strong><strong>de</strong>stino <strong>de</strong> cada paquete IP no varían. La situación plantea dos problemasy, para resolverlos, es preciso efectuar los pasos siguientes:ANOTACIONESNotaPodéis ver el ARP en la unidad9.• Averiguar cuál es la correspon<strong>de</strong>ncia entre direcciones IP y MAC (sóloen los casos en que el enlace entre los direccionadores sea unaLAN). Ello nos permitirá enviar los paquetes IP a un direccionador apesar <strong>de</strong> que el paquete IP no tenga su dirección. El mapeado IP-MAC se efectúa <strong>de</strong> manera automática por medio <strong>de</strong>l ARP.• Decidir en cada momento cuál es el direccionador siguiente (elsalto siguiente).92


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000208.3.1. La tabla <strong>de</strong> direccionamientoEl direccionamiento se lleva a cabo a partir <strong>de</strong> tablas <strong>de</strong> direccionamientoque disponen <strong>de</strong> información limitada, pero suficiente para permitir lainterconexión <strong>de</strong> todas las subre<strong>de</strong>s que componen Internet. Cada equipoconectado a una red IP necesita una tabla <strong>de</strong> direccionamiento.NotaEstas tablas se introducen <strong>de</strong>ntro <strong>de</strong>l direccionadorpor medio <strong>de</strong> un terminal que se conecta al mismo directamente(consola). Asimismo, existen protocolosque permiten que las tablas se actualicen automáticamentecuando se <strong>de</strong>tectan cambios <strong>de</strong> topología. Losmás utilizados son el RIP (routing information protocol)y el OSPF (open shortest path first).El direccionador <strong>de</strong>ci<strong>de</strong> la ruta <strong>de</strong> los paquetes consultando su tabla<strong>de</strong> direccionamiento. Las estaciones terminales también necesitanuna tabla <strong>de</strong> direccionamiento, aunque sólo sea para po<strong>de</strong>r <strong>de</strong>scubrirsi se están comunicando con una estación local <strong>de</strong> la LAN (y, porconsiguiente, se pue<strong>de</strong>n comunicar directamente con la misma) o siel paquete IP <strong>de</strong>be ir a una estación remota (conectada a otra LAN)y, por tanto, <strong>de</strong>ben <strong>de</strong>jarlo en manos <strong>de</strong>l direccionador.Tabla <strong>de</strong> direccionamiento <strong>de</strong> una estacióncon una única interfazEmpezamos estudiando la tabla <strong>de</strong> direccionamiento <strong>de</strong> una estaciónconectada a una LAN (dirección 147.83.153.103/24) con una únicatarjeta Ethernet. Por norma general, una tabla <strong>de</strong> direccionamiento disponetambién <strong>de</strong> información sobre las “cualida<strong>de</strong>s” <strong>de</strong> cada una <strong>de</strong> lasrutas <strong>de</strong>scritas, que no aparecen en el ejemplo:Tabla 2.Tabla <strong>de</strong> direccionamiento <strong>de</strong> la estaciónDirección Máscara Direccionador Interfaz1 147.83.153.103 255.255.255.255 127.0.0.1 Loopback2 127.0.0.0 255.0.0.0 127.0.0.1 Loopback3 147.83.153.0 255.255.255.0 147.83.153.103 ether04 255.255.255.255 255.255.255.255 147.83.153.103 ether05 0.0.0.0 0.0.0.0 147.83.153.5 ether0ANOTACIONES93


ª FUOC • XP04/90786/00020Software libreNotaEl comando route permiteconsultar y modificar la tabla<strong>de</strong> direccionamiento <strong>de</strong>una estación. Este comandoestá presente, con estenombre, en la mayoría <strong>de</strong>sistemas operaitvos, incluidoslos GNU/Linux (y, engeneral, todos los sistemasUnix).Ésta es una tabla típica que po<strong>de</strong>mos encontrar en una estación conectadaa Internet. Las filas <strong>de</strong> la tabla o reglas se consultan no en el or<strong>de</strong>nen que el comando route nos las presenta, sino en or<strong>de</strong>n <strong>de</strong> máscara<strong>de</strong>creciente (en primer lugar, las entradas con 32 bits, etc.). De las entradasque forman la tabla es preciso señalar lo siguiente:• La primera entrada y la segunda permiten transmitir paquetesIP a las direcciones 147.83.153.103 y a todas las direccionesque empiecen por 127 (fijaos en la máscara <strong>de</strong> las dos entradas).En ambos casos los paquetes se envían a la interfaz virtualloopback (la interfaz con que se conoce el or<strong>de</strong>nador local<strong>de</strong>s<strong>de</strong> el mismo or<strong>de</strong>nador local). Ninguno <strong>de</strong> los paquetesque se direccione con alguna <strong>de</strong> estas dos reglas saldrá a lared: será cortocircuitado directamente por el sistema operativoy se entregará al proceso <strong>de</strong> <strong>de</strong>stino sin que nunca llegue aninguna tarjeta <strong>de</strong> comunicaciones.NotaUna interfaz es una tarjeta <strong>de</strong> conexión física a la red.Ejemplos <strong>de</strong> interfaz serían una tarjeta Ethernet (porejemplo, la Ether0) o un puerto serie al que conectamosun mó<strong>de</strong>m. Loopback, como ya se ha comentado,es un caso especial <strong>de</strong> interfazPara saber qué interfaces hay disponibles en un sistemaGNU/Linux, se dispone <strong>de</strong>l comando ifconfig.• La tercera entrada será adoptada por todos los paquetes <strong>de</strong>stinadosa la red local. El campo Direccionador es el mismo que ladirección local, lo que significa que no se <strong>de</strong>legará su transmisióna ningún direccionador.ANOTACIONES• La cuarta entrada tiene una importancia relativa. Nos indicaque los broadcasts IP se restringirán a la red local.• La quinta entrada (0.0.0.0/0) permite a la estación comunicarsecon estaciones remotas. Notad que la máscara no tiene ningúnbit en 1. Ésta es la ruta por <strong>de</strong>fecto. El direccionador establecidopara acce<strong>de</strong>r a estaciones remotas queda i<strong>de</strong>ntificado en la tablacon la dirección 147.83.153.5.94


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Toda esta información se calcula a partir <strong>de</strong> tres datos que se introducenen la configuración <strong>de</strong> red:1) La dirección local (en el ejemplo: 147.83.153.103).2) La máscara <strong>de</strong> la LAN local (en el ejemplo: 255.255.255.0).3) La dirección <strong>de</strong>l direccionador (en el ejemplo: 147.83.153.5).En casos más complejos (más <strong>de</strong> una interfaz <strong>de</strong> acceso a Internet,más <strong>de</strong> un direccionador en la red local, etc.), la información <strong>de</strong>berámodificarse con el comando route. Asimismo, existen otros mecanismosque no requieren la intervención humana y que permiten <strong>de</strong>scubrirdireccionadores que no se han configurado previamente pormedio <strong>de</strong>l protocolo ICMP.ActividadObservad la tabla <strong>de</strong> direccionamiento <strong>de</strong> vuestro or<strong>de</strong>nadorpor medio <strong>de</strong>l comando route. Consultad laayuda disponible en el sistema operativo (en GNU/Linuxhaced man route).En un direccionador, las tablas <strong>de</strong> direccionamiento tienen más entradasque las <strong>de</strong> una estación; sin embargo, el funcionamiento es elmismo que hemos visto en el caso anterior. Observad una que conectala red 147.83.153.0/24 con el exterior por medio <strong>de</strong> la red147.83.30.0/24:Tabla 3.Tabla <strong>de</strong> direccionamiento <strong>de</strong>l direccionadorDirección Máscara Direccionador Interfaz1 147.83.153.5 255.255.255.255 127.0.0.1 Loopback2 147.83.30.2 255.255.255.255 127.0.0.1 Loopback3 127.0.0.0 255.0.0.0 127.0.0.1 Loopback4 147.83.153.0 255.255.255.0 147.83.153.5 ether15 147.83.30.0 255.255.255.0 147.83.30.2 ether06 255.255.255.255 255.255.255.255 147.83.153.5 ether17 0.0.0.0 0.0.0.0 147.83.30.1 ether0ANOTACIONES95


ª FUOC • XP04/90786/00020Software librePrácticamente no observamos nada nuevo. Simplemente se han duplicadolas entradas específicas <strong>de</strong> interfaz. El direccionador también tieneuna entrada por <strong>de</strong>fecto. En este caso, todo el tráfico no <strong>de</strong>stinado a lasdos re<strong>de</strong>s a que está directamente conectado se direcciona hacia otrodireccionador situado en la red 147.83.30.0 (el 147.83.30.1).ActividadPensad si todos los direccionadores <strong>de</strong> Internet poseenuna ruta por <strong>de</strong>fecto y razonadlo. Imaginad qué suce<strong>de</strong>cuando enviamos un paquete a una estación <strong>de</strong> unared inexistente (por ejemplo, a la estación 10.0.1.1).ANOTACIONES96


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000209. El ARP (address resolution protocol)Al <strong>de</strong>scribir el funcionamiento <strong>de</strong> los direccionadores hemos vistoque necesitan saber la dirección MAC correspondiente a una direcciónIP. El ARP es el encargado <strong>de</strong> llevar a cabo la resolución automática<strong>de</strong>l mapeado entre direcciones MAC.Cuando efectuamos la transmisión <strong>de</strong> un paquete entre dos estacioneslocales <strong>de</strong> una misma LAN, lo hacemos indicando a la aplicacióncorrespondiente sólo la dirección IP. Por ejemplo, si <strong>de</strong>s<strong>de</strong>147.83.153.103 queremos conectarnos a 147.83.153.100, haremoslo siguiente:Notatelnet es una aplicación<strong>de</strong> uso común para el acesoa servidores remotos. La veremosen la unidad 17.$ telnet 147.83.153.100Aplicando la máscara <strong>de</strong> red a la dirección IP solicitada, la estación<strong>de</strong>duce que se encuentra en su misma subred. Por tanto, no hace falta<strong>de</strong>legar en ningún direccionador. Para po<strong>de</strong>r enviarle las tramas enlas que <strong>de</strong>ben ir los paquetes IP que genera la aplicación telnet, necesitaconocer su dirección MAC.Para ello, emite una petición ARP. Se trata <strong>de</strong> un paquete encapsuladodirectamente sobre una trama Ethernet (con tipo = 0x0806). Como dirección<strong>de</strong> <strong>de</strong>stino lleva la dirección broadcast (FF:FF:FF:FF:FF:FF) paraque llegue a todas las estaciones <strong>de</strong> la LAN, y como contenido, la direcciónIP para la cuál se <strong>de</strong>sa conocer la dirección MAC. La estación quereconoce su IP en la petición ARP respon<strong>de</strong> con una respuesta ARP dirigidaal origen <strong>de</strong> la petición con su dirección MAC. De hecho, el contenido<strong>de</strong> la respuesta ARP es irrelevante, lo único importante es ladirección MAC <strong>de</strong> origen <strong>de</strong> la trama.Lo mismo suce<strong>de</strong> cuando la estación <strong>de</strong>duce que la IP solicitada por algunaaplicación correspon<strong>de</strong> a una estación remota, o sea, <strong>de</strong> fuera <strong>de</strong>su LAN. En este caso, las tramas se <strong>de</strong>ben enviar al direccionador paraque se encargue <strong>de</strong> sacarlas <strong>de</strong> la LAN hacia su <strong>de</strong>stino. Para ello, laestación origen <strong>de</strong>be averiguar la dirección MAC <strong>de</strong>l direccionador.NotaNo mostraremos el formato<strong>de</strong> los paquetes ARP, porqueno van a aportarnosmucha más información.Podéis encontrar el formatoy los usos alternativos <strong>de</strong>lARP en:D. E. Comer (1995).Internet-working with TCP/IP(volumen 1: “Principles,Protocols, and Architecture”).Hertfordshire: Prentice HallANOTACIONES97


ª FUOC • XP04/90786/00020Software libreNotaEn rigor, para cada tramacon paquete IP a generar,se tendría que hacer unapetición ARP.Es fácil <strong>de</strong>ducir que,en el funcionamiento normal <strong>de</strong> una estación,. laspeticiones ARP pue<strong>de</strong>n ser muy habituales. Para evitarlo, cada estacióndispone <strong>de</strong> una tabla las parejas ya obtenidas, <strong>de</strong> forma que si una direcciónIP ya se encuentra es dicha tabla, no hace falta enviar ningunapetición ARP. Dicha tabla se <strong>de</strong>nomina caché ARP, y tiene el siguienteaspecto:Tabla 4.Tabla caché ARPDirección IP Dirección MAC Interfaz1 147.83.153.103 08:00:00:10:97:00 ether02 147.83.153.5 00:0c:aa:00:0f:e0 ether0Cada fila correspon<strong>de</strong> a un mapeo IP-MAC y la interfaz para la cual seha solicitado.NotaEn GNU/Linux, arp -a sirvepara mostrar la tabla.Podéis consultar las páginas<strong>de</strong>l manual para el resto <strong>de</strong>opciones.Esta tabla se va llenando automáticamente a medida que se realizannuevas peticiones, pero también se pue<strong>de</strong> manipular con el comandoarp. Con él se pue<strong>de</strong> consultar, añadir o borrar entradas.La tabla ARP se <strong>de</strong>nomina caché porque, <strong>de</strong> hecho, actúa como unamemoria auxiliar que evita la consulta <strong>de</strong> la información a la LAN mientrasse tenga una copia local <strong>de</strong> la misma. Pue<strong>de</strong> parecer que la consultaARP no <strong>de</strong>bería ser <strong>de</strong>masiado frecuente, puesto que al cabo <strong>de</strong> ciertotiempo toda la información se encontraría <strong>de</strong>ntro <strong>de</strong> la caché. Convienesaber, sin embargo, que las entradas caducan al cabo <strong>de</strong> un periodo <strong>de</strong>tiempo relativamente breve (entre uno y unos cuantos minutos, según elsistema).ActividadANOTACIONESImaginad qué podría suce<strong>de</strong>r si las entradas <strong>de</strong> la cachéARP no caducaran. Os pue<strong>de</strong> servir <strong>de</strong> ayuda pensaren la reconfiguración <strong>de</strong> direcciones.Algunos usos alternativos <strong>de</strong> interés <strong>de</strong>l ARP son los siguientes:• ARP innecesario (gratuitous-ARP): se utiliza cuando una estaciónarranca para saber si hay alguna otra estación que está utilizandosu misma dirección IP. Por medio <strong>de</strong> una petición ARP, pue<strong>de</strong> pre-98


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020guntar quién tiene su dirección IP (un conflicto <strong>de</strong> este tipo podría<strong>de</strong>jar las dos estaciones “fuera <strong>de</strong> combate”).• ARP subsidiario (proxy-ARP): se utiliza en situaciones en las queun direccionador divi<strong>de</strong> una subred sin que las estaciones ni el direccionadorque los conecta a Internet modifiquen su máscara.Esta técnica, a pesar <strong>de</strong> no ser <strong>de</strong>masiado ortodoxa, se aplica confrecuencia cuando el direccionador <strong>de</strong> una red privada se conectaa Internet por medio <strong>de</strong> una red ajena (un proveedor <strong>de</strong> Internet,por ejemplo).ActividadConsultad la caché ARP <strong>de</strong> algún sistema que tengáisal alcance (Unix o MS) por medio <strong>de</strong> arp -a. Comprobadqué opciones tiene disponibles.ANOTACIONES99


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002010. El ICMP (Internet control message protocol)La cuestión <strong>de</strong> si el ICMP es un protocolo, o si más bien es una herramientaque utiliza el protocolo IP para notificar errores genera muchapolémica. Lo cierto es que el ICMP constituye el mecanismo básicopara la gestión <strong>de</strong> las diferentes inci<strong>de</strong>ncias que pue<strong>de</strong>n ocurrir en unared IP.10.1. Mensajes ICMPLos mensajes ICMP viajan <strong>de</strong>ntro <strong>de</strong> paquetes IP (al contrario <strong>de</strong> loque sucedía con los paquetes ARP), en el campo <strong>de</strong> datos con el campoProtocolo igual a 1. El formato <strong>de</strong>l mensaje presentado en la figurasiguiente nos facilitará el estudio <strong>de</strong> los diferentes usos <strong>de</strong>lpaquete ICMP:Figura 41.Existen trece tipos <strong>de</strong> mensajes ICMP en uso en la actualidad, y alre<strong>de</strong>dor<strong>de</strong> una treintena <strong>de</strong> subtipos i<strong>de</strong>ntificados con el campoCódigo.ANOTACIONES101


ª FUOC • XP04/90786/00020Software libreTabla 5.Tipo Código Descripción Clase0 0 Respuesta <strong>de</strong> eco (echo reply) Petición8 0 Petición <strong>de</strong> eco (echo request) Petición3 0-15Destino inalcanzable (unreachable <strong>de</strong>stination)Los diferentes códigos permiten <strong>de</strong>finir si loque no se pue<strong>de</strong> alcanzar es la subred (0, 6, 9,11), la estación (1, 7, 10, 12), el protocolo (2),o el puerto (3) y los motivosError4 0 Petición <strong>de</strong> control <strong>de</strong> flujo (source quench) Error5 0-3 Redireccionamiento Error9 0 Publicación <strong>de</strong> rutas Petición10 0 Petición <strong>de</strong> rutas Petición11 0-1 El tiempo <strong>de</strong> vida ha expirado (time excee<strong>de</strong>d) Error12 0-1 Cabecera IP incorrecta Error13 0 Petición <strong>de</strong> hora Petición14 0Respuesta <strong>de</strong> hora (en milisegundos <strong>de</strong>s<strong>de</strong> lamedianoche)Petición17 0 Petición <strong>de</strong> la máscara <strong>de</strong> la subred Petición18 0 Respuesta <strong>de</strong> la máscara <strong>de</strong> la subred PeticiónLa última columna nos permite distinguir mensajes ICMP <strong>de</strong> notificación<strong>de</strong> error <strong>de</strong> mensajes que son parte <strong>de</strong> una petición (la peticióno la respuesta). Esta distinción es importante, puesto que los mensajes<strong>de</strong> error ICMP no pue<strong>de</strong>n generar otros mensajes <strong>de</strong> error ICMP.En particular, no se generan mensajes <strong>de</strong> error en respuesta a los paqueteso mensajes siguientes:ANOTACIONES• Los mensajes <strong>de</strong> error ICMP.• Un paquete IP <strong>de</strong>stinado a una dirección broadcast (sea unbroadcast IP o un broadcast MAC).• Un fragmento que no sea el primero.• Una dirección <strong>de</strong> origen que no i<strong>de</strong>ntifique una única estación.Por ejemplo, la dirección <strong>de</strong> origen válida 0.0.0.0 o la dirección<strong>de</strong> origen no válida 255.255.255.255.102


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020En cualquiera <strong>de</strong> las situaciones que acabamos <strong>de</strong> <strong>de</strong>scribirse pue<strong>de</strong>n provocar respuestas en cascada quepodrían afectar gravemente a la red.ParchesNotaDesgraciadamente, no todas las implementacionesTCP/IP han tenido en cuenta las excepciones existentesen la generación <strong>de</strong> mensajes <strong>de</strong> error, y algunos usuarios<strong>de</strong>saprensivos han explotado estos problemas parabloquear sistemas y re<strong>de</strong>s remotas. Asimismo, <strong>de</strong> vez encuando se <strong>de</strong>scubren nuevas excepciones que pue<strong>de</strong>nafectar a nuestros sistemas.Los fabricantes <strong>de</strong> sistemas operativos publican regularmenteparches (patch) que permiten solucionarlos problemas (las vulnerabilida<strong>de</strong>s) que se han <strong>de</strong>scubierto<strong>de</strong>s<strong>de</strong> la fecha <strong>de</strong> publicación <strong>de</strong> la últimaversión.10.2. El programa pingEl programa ping permite <strong>de</strong>scubrir si una estación se encuentra activao no, simplemente efectuando lo siguiente:$ ping El programa ping envía un mensaje ICMP <strong>de</strong>l tipo 8 (petición <strong>de</strong>eco) con el <strong>de</strong>stino indicado. El receptor <strong>de</strong> la petición <strong>de</strong>be respon<strong>de</strong>rcon una respuesta <strong>de</strong> eco (ICMP tipo 0), y, cuando el ping la recibe,indica en pantalla que la estación remota está activa.Evi<strong>de</strong>ntemente, el programa <strong>de</strong>bería llamarse ping-pong.ANOTACIONES103


ª FUOC • XP04/90786/00020Software libreFigura 42.ActividadPracticad el uso <strong>de</strong>l programa ping. Comprobad quéretardos máximos se dan en Internet. Hacedlo a diferenteshoras <strong>de</strong>l día.Con el ping tenemos otras opciones disponibles. En particular, laopción <strong>de</strong> memorización <strong>de</strong> rutas (record route o RR; ping -R, enGNU/Linux), que no se refleja en ninguno <strong>de</strong> los campos <strong>de</strong>l mensajeICMP, sino que se encuentra <strong>de</strong>ntro <strong>de</strong> la misma cabecera IP, enel campo <strong>de</strong> opciones.ANOTACIONESLas diferentes opciones que seencuentran disponibles en lacabecera se i<strong>de</strong>ntifican por medio<strong>de</strong>l primer byte <strong>de</strong>l campo<strong>de</strong> opciones <strong>de</strong> la cabecera IP(figura 43).Si el originador, por ejemplo, quiereactivar la opción RR, el primerbyte <strong>de</strong>be ser 7. Sea como sea, entodas las opciones el primer byteindica el tipo, y el segundo, la longitu<strong>de</strong>n bytes <strong>de</strong> la opción.Figura 43.104


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020En este caso siempre se pi<strong>de</strong> el máximo posible, que es 39 bytes,puesto que el campo siguiente tiene un byte (puntero), al que sigueuna ca<strong>de</strong>na <strong>de</strong> campos <strong>de</strong> 4 bytes (que son las direcciones IP encontradas).El campo Puntero se inicializa a 4, y <strong>de</strong>ntro <strong>de</strong> los 4 bytes siguientesse guarda la dirección <strong>de</strong> la estación en que ejecutamos elping.Cada direccionador <strong>de</strong>be mirar <strong>de</strong>ntro <strong>de</strong> los paquetes IP (ICMP ono) para ver si tienen la opción RR activada. Si un direccionador encuentraun paquete con esta opción activada, modifica la posiciónapuntada por el puntero con su dirección (por norma general, la dirección<strong>de</strong> salida <strong>de</strong>l direccionador) e incrementa el valor <strong>de</strong>l punteroen cuatro unida<strong>de</strong>s. Cuando vuelve el mensaje <strong>de</strong> respuesta <strong>de</strong>eco, se ha añadido una lista con todos los saltos que ha tenido querealizar el paquete (tanto <strong>de</strong> ida, como <strong>de</strong> vuelta).El campo <strong>de</strong> opciones tiene limitaciones <strong>de</strong> tamaño: sólo dispone <strong>de</strong>36 bytes (39 − 3) para guardar direcciones IP. Como cada direcciónocupa 4 bytes, sólo hay espacio para nueve direcciones IP. Si a ellole añadimos que no todos los direccionadores comprueban si hayopciones <strong>de</strong>ntro <strong>de</strong> los paquetes IP, o no actualizan la opción RR,hace poco útil este tipo <strong>de</strong> ping en el mundo real.ActividadComprobad la ruta a diferentes <strong>de</strong>stinos por medio <strong>de</strong>un ping con la opción <strong>de</strong> memorización <strong>de</strong> rutas. Valoradsi la comprobación <strong>de</strong> esta opción está muy extendida.10.3. El programa tracerouteEl programa traceroute permite encontrar las rutas entre unorigen y un <strong>de</strong>stino sin ninguna <strong>de</strong> las limitaciones <strong>de</strong>l ping -R. Utilizaun mecanismo bastante ingenioso basado en mensajes genéricosICMP (y no los específicos petición <strong>de</strong> eco y respuesta <strong>de</strong> eco<strong>de</strong>l ping).ANOTACIONES105


ª FUOC • XP04/90786/00020Software libreEl funcionamiento se basa en la explotación <strong>de</strong> dos mensajesICMP:1) Tiempo <strong>de</strong> vida agotado (time-excee<strong>de</strong>d): cuando un direccionadorrecibe un paquete, aparte <strong>de</strong> las tareas primordiales<strong>de</strong> direccionamiento, <strong>de</strong>be reducir en una unidad el valor <strong>de</strong>lcampo TTL <strong>de</strong> la cabecera IP.En caso <strong>de</strong> que el valor (<strong>de</strong>spués <strong>de</strong> la reducción) sea cero, elpaquete <strong>de</strong>be eliminarse. Sin embargo, esta eliminación no essilenciosa, sino que el direccionador responsable envía unanotificación <strong>de</strong> la misma al originador <strong>de</strong>l paquete por medio<strong>de</strong> un mensaje ICMP tipo 11 y código 0 (tiempo <strong>de</strong> vida agotado).Este paquete ICMP contiene la cabecera <strong>de</strong>l paquete IP que seha eliminado y los primeros 8 bytes <strong>de</strong> su contenido (seguramentela cabecera UDP o los primeros bytes <strong>de</strong> la cabeceraTCP).Figura 44.ANOTACIONES2) Puerto inalcanzable (unreachable-port): cuando una estación recibeun datagrama UDP o un segmento TCP <strong>de</strong>stinado a un puertoque la máquina no escucha, respon<strong>de</strong> con un mensaje <strong>de</strong> error<strong>de</strong> puerto inalcanzable (tipo 3 con código 3).106


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Figura 45.El programa traceroute simplemente <strong>de</strong>be enviar paquetes al<strong>de</strong>stino con TTL secuencialmente ascen<strong>de</strong>ntes: el paquete (con in<strong>de</strong>pen<strong>de</strong>ncia<strong>de</strong>l tipo que sea) que tenga el TTL = 1 será rechazado porel primer direccionador, el que tenga TTL = 2 lo será por el segundo,y así consecutivamente. Cada uno <strong>de</strong> los direccionadores <strong>de</strong>volveráun mensaje ICMP “tiempo <strong>de</strong> vida agotado”, una pista <strong>de</strong>l todo suficientepara que el originador averigüe el camino que han seguidotodos los paquetes.Cuando el mensaje llega al <strong>de</strong>stino, <strong>de</strong>be <strong>de</strong>volver algún mensajepara saber que la secuencia ha finalizado. Por norma general,el mensaje será “puerto inalcanzable” si el mensaje enviado eraun datagrama UDP a un puerto no usado, o bien una respuesta<strong>de</strong> eco si lo que se ha enviado son paquetes ICMP <strong>de</strong> petición <strong>de</strong>eco.Activida<strong>de</strong>sUtilizad el programa traceroute para <strong>de</strong>scubrir loscaminos que siguen diversos paquetes hasta diferentes<strong>de</strong>stinos.Probad qué suce<strong>de</strong> si nos conectamos a un puerto noservido. Por ejemplo, conectaos al puerto TCP 1234(podéis hacerlo con Telnet localhost 1234).ANOTACIONES107


ª FUOC • XP04/90786/00020Software libre10.4. Mensaje <strong>de</strong> redireccionamientoEs normal que los sistemas se conecten a Internet sólo configurandosu dirección IP, la máscara <strong>de</strong> la LAN y el direccionador que gestionala comunicación remota. Cuando hay más <strong>de</strong> un direccionador en laLAN local, pue<strong>de</strong> darse el caso <strong>de</strong> que para algunas rutas sea mejorusar otro direccionador y no el que tenemos configurado.A este efecto, los direccionadores disponen <strong>de</strong>l mensaje ICMP <strong>de</strong> redireccionamiento(redirect), que actúa <strong>de</strong> la manera siguiente:1) La estación envía un paquete al direccionador que tiene configurado(A). El direccionador A <strong>de</strong>scubre que la mejor ruta pasa porutilizar el direccionador B.2) El direccionador A direcciona el paquete hacia el direccionador B.3) Notifica a la estación que modifique su tabla <strong>de</strong> direccionamiento.Figura 46.ANOTACIONESNotad que, normalmente, el direccionador continúa direccionandolos paquetes (paso 2). Aunque la estación no hiciera caso <strong>de</strong>l mensajeICMP <strong>de</strong> redireccionamiento (paso 3), continuaría teniendo conectividadcon el exterior; sin embargo, si le hace caso, mejorará elrendimiento <strong>de</strong>l sistema.108


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Cuando una estación obe<strong>de</strong>ce a un ICMP <strong>de</strong> redireccionamiento, sutabla <strong>de</strong> direccionamiento queda convenientemente actualizada. Elcomando route pue<strong>de</strong> proporcionarnos alguna pista <strong>de</strong> si este fenómenotiene lugar.ANOTACIONES109


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002011. <strong>Re<strong>de</strong>s</strong> <strong>de</strong> acceso a InternetLas re<strong>de</strong>s <strong>de</strong> acceso a Internet más habituales son la red telefónica(por mó<strong>de</strong>m) que se utiliza, sobre todo, en el ámbito doméstico, elADSL (asymetric digital subscriber line, línea <strong>de</strong> abonado digital doméstica)que, aunque utiliza la infraestructura <strong>de</strong> acceso <strong>de</strong> la red telefónica,no se pue<strong>de</strong> <strong>de</strong>cir que vaya sobre la línea telefónica, y laEthernet.1) En accesos por medio <strong>de</strong> la red telefónica y, en general, en accesospor medio <strong>de</strong> re<strong>de</strong>s conmutadas (incluyendo el acceso porla RDSI), se suele utilizar el PPP (point-to-point-protocol).NotaSi bien durante mucho tiempo se han utilizado el SLIP(serial line Internet protocol) y el (compressed SLIP), enla actualidad se han <strong>de</strong>jado prácticamente <strong>de</strong> ladoen favor <strong>de</strong>l PPP, que tiene más flexibilidad (permitegestionar automáticamente ciertos parámetros IP ymultiplexar, <strong>de</strong>ntro <strong>de</strong> la misma conexión, diferentesprotocolos <strong>de</strong> interconexión, aparte <strong>de</strong>l IP) y es más fiable(dispone <strong>de</strong> CRC en cada trama).2) En LAN, el protocolo que se utiliza en más <strong>de</strong>l 90% <strong>de</strong> los casoses la Ethernet. Nosotros nos centraremos sólo en los <strong>de</strong>talles <strong>de</strong>las direcciones <strong>de</strong> dicho protocolo, puesto que es lo único queafecta a la manera <strong>de</strong> funcionar <strong>de</strong>l IP.Casi todos los protocolos <strong>de</strong> LAN que componen el 10% restante(IEEE802.3 CSMA/CD, IEEE802.5 Token Ring, etc.) utilizanuna estructura <strong>de</strong> direcciones idéntica a la <strong>de</strong> Ethernet. De hecho,podríamos hablar <strong>de</strong> compatibilidad, puesto que la asignación<strong>de</strong> direcciones se hace globalmente para todas las LANmencionadas y la gestiona el IEEE (Institute of Electric and ElectronicEngineers).ANOTACIONES111


ª FUOC • XP04/90786/00020Software libre11.1. Acceso telefónico: el PPPEl PPP es fundamentalmente un protocolo <strong>de</strong>rivado <strong>de</strong>l HDLC(high-level data link protocol ) para conexiones balanceadas(HDLC-ABM, HDLC-asynchronous balanced mo<strong>de</strong>). El formato <strong>de</strong>la trama PPP se representa en la figura siguiente:Figura 47.Los campos Indicador (flag), Dirección y Control están fijados en los valores<strong>de</strong> la figura anterior. El campo Dirección tiene el valor 11111111,que es el <strong>de</strong> difusión o broadcast en la mayoría <strong>de</strong> los protocolos (porejemplo, en todos los HDLC). Ello significa que este campo (como el <strong>de</strong>control) no se utiliza. Su utilización en el PPP sólo se pue<strong>de</strong> justificar porel posible uso <strong>de</strong> tarjetas HDLC genéricas para conexiones PPP. Comocualquier protocolo HDLC, <strong>de</strong>be aplicar el mecanismo <strong>de</strong> transparencia<strong>de</strong> inserción <strong>de</strong> ceros (bit stuffing).NotaANOTACIONESEl PPP especifica una variante orientada a carácter (losprotocolos <strong>de</strong> la familia HDLC están orientados a bit),que es la que más se utiliza en enlaces por medio <strong>de</strong>mó<strong>de</strong>m (un contraejemplo serían las conexiones mediantela RDSI).Lo importante es lo que transportan las tramas PPP. El mismo estándar<strong>de</strong>fine la multiplexación <strong>de</strong> diferentes protocolos, que se distinguiránpor medio <strong>de</strong>l campo Tipo. Los que nos interesan son lossiguientes:• LCP (link control protocol): es el protocolo encargado <strong>de</strong> realizarel test <strong>de</strong>l enlace, el control <strong>de</strong> la conexión y la gestión <strong>de</strong>l enlace.112


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• Protocolos <strong>de</strong> red: son tramas que encapsulan paquetes <strong>de</strong> nivelsuperior, como pue<strong>de</strong> ser IP. Pero también pue<strong>de</strong>n transportarNETBEUI, AppleTalk, Decnet, etc.• NCP (network control protocol): es el protocolo que se utilizapara tareas <strong>de</strong> gestión <strong>de</strong> los protocolos <strong>de</strong> red que transportael enlace. En el caso <strong>de</strong>l IP, permite que uno <strong>de</strong> los terminalesasigne la dirección <strong>de</strong> Internet al otro y configure los diferentesparámetros <strong>de</strong> la red (direccionador, máscara, etc.)Figura 48.11.1.1. Compresión <strong>de</strong> las cabecerasComo ya hemos visto, la pirámi<strong>de</strong> <strong>de</strong> PDU provoca ineficiencias enla transmisión, sobre todo en protocolos como Telnet, que con frecuenciaenvían bloques muy cortos <strong>de</strong> información. Asimismo, el PPPse ha utilizado en enlaces telefónicos que funcionan a velocida<strong>de</strong>smáximas teóricas <strong>de</strong> entre 9.600 bps (mó<strong>de</strong>ms norma V.32) y33.600 bps (mó<strong>de</strong>ms norma V.34). Ello hace que dicha ineficienciasea todavía más grave.ANOTACIONES113


ª FUOC • XP04/90786/00020Software libreNotaSi se utiliza Telnet, para enviar un carácter (<strong>de</strong> 1 byte)<strong>de</strong>bemos enviar 8 + 20 + 20 + 1 = 49 bytes. Conun mó<strong>de</strong>m <strong>de</strong> 9.600 bps, si utilizáramos mensajes <strong>de</strong>8 bits <strong>de</strong> longitud más 1 bit <strong>de</strong> arranque y 1 bit <strong>de</strong> parada,podríamos transmitir:9.600 / (1 + 8 + 1) = 960 caracteres/segundo.De hecho, nadie es capaz <strong>de</strong> mecanografiar tan rápido.Sin embargo, no <strong>de</strong>bemos per<strong>de</strong>r <strong>de</strong> vista que elenlace pue<strong>de</strong> ser compartido por otras conexiones(transferencia <strong>de</strong> ficheros, consulta <strong>de</strong> la web, etc.).La compresión <strong>de</strong> cabeceras Van Jacobson mejora consi<strong>de</strong>rablementeeste problema. Este tipo <strong>de</strong> compresión se basa en el hecho<strong>de</strong> que en un acceso a Internet con PPP, en general no habrá <strong>de</strong>masiadasconexiones TCP simultáneas. La compresión Van Jacobsonpermite mantener una tabla <strong>de</strong> hasta dieciséis conexiones simultáneasTCP/IP, a las que asignará dieciséis i<strong>de</strong>ntificadores diferentes. Como lamayoría <strong>de</strong> los campos <strong>de</strong> las dos cabeceras TCP/IP no varían durante eltranscurso <strong>de</strong> una misma conexión, basta con tener entre 3 y 5 bytes <strong>de</strong>cabecera para cada paquete (combinando PPP y TCP/IP) para mantenerun funcionamiento correcto <strong>de</strong> la conexión. La ganancia en eficiencia<strong>de</strong> la transmisión es suficientemente importante.Para saber con exactitud qué ganancia se consigue, precisamos saberqué longitud pue<strong>de</strong>n tener las tramas PPP.Por medio <strong>de</strong>l LCP también pue<strong>de</strong>n obtenerse otras mejoras como,por ejemplo, la eliminación <strong>de</strong> los campos <strong>de</strong> control y <strong>de</strong> dirección.ANOTACIONES11.1.2. MTUComo ya hemos comentado, la mayoría <strong>de</strong> protocolos <strong>de</strong> nivel <strong>de</strong>enlace poseen una longitud máxima <strong>de</strong> transmisión, la MTU, quecondiciona el tamaño <strong>de</strong> los paquetes <strong>de</strong> nivel superior que tansporta.En el PPP, protocolo <strong>de</strong>rivado <strong>de</strong>l HDLC, no se trata <strong>de</strong> un valorconcreto, sino que el límite vendrá fijado por la probabilidad <strong>de</strong> erroren un bit que tengamos: cuanto más larga sea la trama, más probabilida<strong>de</strong>xiste <strong>de</strong> que sea errónea.114


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Sin embargo, existe un factor que limitará la MTU más que los límitesimpuestos por los protocolos: el confort <strong>de</strong> la conexión. Se ha <strong>de</strong>mostradoque, en conexiones en tiempo real (como una conexión Telnet), elusuario <strong>de</strong>be recibir una reacción a sus acciones en una décima <strong>de</strong>segundo como máximo. retardos superiores provocan cansancio ydan la sensación <strong>de</strong> que “la máquina va lenta”, que todos hemos experimentadoalguna vez.Si pensamos que <strong>de</strong>ntro <strong>de</strong> la misma conexión po<strong>de</strong>mos tener multiplexadasotras <strong>de</strong> transferencia (como FTP o web), nos encontraremosque los paquetes <strong>de</strong> las aplicaciones en tiempo real, que suelenser cortos, <strong>de</strong>ben esperarse <strong>de</strong>trás <strong>de</strong> los paquetes <strong>de</strong> longitud máximaque se utilizan en las aplicaciones que tienen una tasa <strong>de</strong> transmisiónelevada (supondremos que los paquetes <strong>de</strong> la aplicación entiempo real tienen preferencia sobre otros que previamente estuvieranen la cola <strong>de</strong> salida).La única manera <strong>de</strong> hacer que una aplicación estándar <strong>de</strong> transferenciautilice paquetes más pequeños es reducir la MTU <strong>de</strong> la conexión.En el caso <strong>de</strong>l PPP, si tomamos como referencia un mó<strong>de</strong>m<strong>de</strong> 33.600 bps, tenemos que un paquete <strong>de</strong> una décima <strong>de</strong> segundo<strong>de</strong> duración tendría los bytes siguientes:33.600 bps · (0,1 s) · (1 byte / 8 bits) = 420 bytes.En conexiones PPP tendremos, pues, la MTU entre 250 y 500 bytes.Con mó<strong>de</strong>ms que dispongan <strong>de</strong> compresión, los valores que obtendremospue<strong>de</strong>n aumentar.NotaLas velocida<strong>de</strong>s <strong>de</strong> transmisión <strong>de</strong> los mó<strong>de</strong>ms estándarson 9.600 bps (V.32), 14.400 bps (V.32bis) y33.600 bps (V.34).En general, los mó<strong>de</strong>ms disponen <strong>de</strong> dispositivoselectrónicos para comprimir y <strong>de</strong>scomprimir datos.Los estándares V.42bis y MNP9 realizan compresiones<strong>de</strong> hasta 1:4, con lo que pue<strong>de</strong>n lograr velocida<strong>de</strong>s<strong>de</strong> transmisión efectiva <strong>de</strong> hasta 134.400 bps(V.34 + V.42bis) en situaciones favorables.ANOTACIONES115


ª FUOC • XP04/90786/00020Software libreHay mó<strong>de</strong>ms (los que siguen el estándar V.90) quepue<strong>de</strong>n lograr velocida<strong>de</strong>s <strong>de</strong> hasta 56 kbps. En realidad,no son mó<strong>de</strong>ms en el sentido estricto, puestoque necesitan que en el otro extremo <strong>de</strong> la línea hayaun co<strong>de</strong>c conectado a una línea digital.11.2. Acceso ADSLSi bien el acceso a Internet por mó<strong>de</strong>m por medio <strong>de</strong> PPP ha sidola manera habitual <strong>de</strong> conexión por parte <strong>de</strong> los usuarios domésticosy las pequeñas empresas durante la primera “década Internet”,parece que ello cambiará y en la segunda “década Internet”se adoptarán sistemas que faciliten la conexión permanente.NotaLa conexión por mó<strong>de</strong>m ocupa la línea <strong>de</strong> teléfono <strong>de</strong>labonado y, lo que todavía es peor, establece una llamadadurante un tiempo in<strong>de</strong>finido.El ADSL representa una solución a este problema, puesto que, por unlado (aunque utiliza el cableado <strong>de</strong> la línea telefónica, el bucle <strong>de</strong> abonado),la línea telefónica queda libre para llamadas mientras se estáconectado a Internet y, por otro, la conexión no consume recursos <strong>de</strong>la red telefónica, puesto que, cuando la señal llega a la centralita, seextrae <strong>de</strong>l bucle <strong>de</strong> abonado y pasa a la red IP <strong>de</strong> la operadora.Figura 49.ANOTACIONES116


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020En general, el direccionador que hay en el domicilio <strong>de</strong>l usuario ofreceuna conexión Ethernet equivalente a un concentrador, lo que permite queel abonado conecte más <strong>de</strong> un or<strong>de</strong>nador por medio <strong>de</strong> la línea ADSL.Para permitir que la línea telefónica conviva con la conexión a Internetpermanente, se realiza una división <strong>de</strong>l espectro: la parte bajacontinúa ocupada por el canal <strong>de</strong> voz (hasta 4 kHz) y, a partir <strong>de</strong>aquí, se sitúa el espectro <strong>de</strong> la codificación ADSL (con la limitaciónpropia <strong>de</strong>l par <strong>de</strong> hilos). El sistema es bidireccional: reserva el espectrobajo para la salida a la red, y el resto, para la entrada:Figura 50.NotaAlgunas operadores, paraaprovechar mejor líneas malas,utilizan una variante <strong>de</strong>lestándar que permite latransmisión bidireccional conlos dos canales en la mismabanda.Esta solución, aunque necesitaDCE más caros, permiteaprovechar líneas con peorescondiciones y/u obtenervelocida<strong>de</strong>s más altas.Generalmente, no se pue<strong>de</strong> llegar a los 1,1 MHz que indica la figura,puesto que la calidad <strong>de</strong>l par <strong>de</strong> hilos es muy variable (clima, longitud,edad, etc.), por lo que se utiliza una codificación adaptativa: losdos sentidos <strong>de</strong>l canal se divi<strong>de</strong>n en subbandas <strong>de</strong> 4 kHz in<strong>de</strong>pendientes(DMT, discrete multitone) que se codifican (en realidad, semodulan) con procedimientos casi idénticos a los utilizados por losmó<strong>de</strong>ms tradicionales. Con ello, se consiguen treinta y dos canales<strong>de</strong> salida y hasta doscientos cintuenta y seis <strong>de</strong> entrada, con una capacidad<strong>de</strong> 60 kbps cada uno <strong>de</strong> los mismos –modulados en QAM(quadrature amplitu<strong>de</strong> modulation), como los mó<strong>de</strong>ms telefónicos–que, acumulados, proporcionan un máximo <strong>de</strong> 15,36 Mbps <strong>de</strong> entraday 1,92 Mbps <strong>de</strong> salida.No obstante, las mejores conexiones no consiguen aprovechar correctamentelos canales superiores y se consi<strong>de</strong>ra que el límite máximo <strong>de</strong> salidaes <strong>de</strong> 8 Mbps. Asimismo, las operadoras no suelen ofrecer conexionestan rápidas, lo que hace que no se pueda lograr el límite teórico.Los protocolos utilizados <strong>de</strong>ntro <strong>de</strong>l ADSL <strong>de</strong>pen<strong>de</strong>n <strong>de</strong> la operadoray no están <strong>de</strong>finidos por el estándar. Entre los posibles protocolospara el ADSL, tenemos el ATM y el mismo PPP.ANOTACIONES117


ª FUOC • XP04/90786/00020Software libre11.3. Acceso LAN: el protocolo EthernetSeguramente, la simplicidad <strong>de</strong> este protocolo <strong>de</strong> red, y no sus prestacionesteóricas, ha hecho que sea el más utilizado en re<strong>de</strong>s <strong>de</strong> árealocal prácticamente <strong>de</strong>s<strong>de</strong> que DEC, Intel y Xerox establecieron unestándar (<strong>de</strong> facto) para LAN con control <strong>de</strong> acceso al medio CSMA/CD, basándose en una arquitectura similar <strong>de</strong>sarrollada los años setentapor Xerox.Hay un principio que se cumple en todas las re<strong>de</strong>s <strong>de</strong>área local: lo que una estación transmite es recibidopor todas las <strong>de</strong>más. Una estación sabe cuando unatrama le va <strong>de</strong>stinada porque lee todas las que le llegany comprueba la dirección <strong>de</strong> <strong>de</strong>stino. Tiene querechazar todas las tramas con direcciones que nosean la suya. Sin embargo, también hay excepciones,y en algunos casos las estaciones también <strong>de</strong>ben capturartramas dirigidas a direcciones especiales (comolas multicast y las broadcast).NotaANOTACIONESUno <strong>de</strong> los casos en el que una estación no rechazalas tramas con direcciones diferentes <strong>de</strong> la suya escuando la estación configura la tarjeta <strong>de</strong> red enmodo promiscuo. En este modo, la tarjeta inhabilitasu capacidad <strong>de</strong> filtrado y lee todas las tramas quepasan por la red. Equipos que, generalmente, funcionanen este modo son los puentes (bridges, sistemas<strong>de</strong>stinados a la interconexión <strong>de</strong> LAN), losanalizadores <strong>de</strong> tráfico (o analizadores <strong>de</strong> red) o losconmutadores (switches). No obstante, casi todas lastarjetas se pue<strong>de</strong>n configurar en modo promiscuo, loque con frecuencia es aprovechado por los ladrones<strong>de</strong> información (hackers) para leer y copiar informacióninteresante que viaje por la LAN (principalmentecontraseñas).118


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002011.3.1. Formato <strong>de</strong> la trama EthernetLa manera <strong>de</strong> conocer las principales características <strong>de</strong> la tramaEthernet es ver los diferentes campos que la forman, que son los siguientes:Figura 51.a) Preámbulo: está formado por 64 bits, alternativamente 0 y 1. Losdos últimos son 11. Ello genera una señal cuadrada que permite alos terminales sincronizar a<strong>de</strong>cuadamente los relojes <strong>de</strong> sincronismo<strong>de</strong> bit. Los dos últimos bits señalan dón<strong>de</strong> empieza la trama (sincronismo<strong>de</strong> trama). Su forma es idéntica en todas las tramas. Nosotrosobviaremos su presencia en el resto <strong>de</strong> la explicación, puesto quesólo son una señal para marcar el inicio <strong>de</strong> la trama.b) Dirección <strong>de</strong> origen: lleva la dirección física o dirección MAC <strong>de</strong>ltransmisor <strong>de</strong> la trama. Son 48 bits diferentes para cualquier terminal<strong>de</strong> la red Ethernet.c) Dirección <strong>de</strong> <strong>de</strong>stino: lleva la dirección MAC <strong>de</strong>l <strong>de</strong>stinatario especificada<strong>de</strong> la misma manera (en el mismo formato) que la dirección<strong>de</strong> origen. En este caso, sin embargo, tenemos tres tipos<strong>de</strong> direcciones posibles: unicast, multicast y broadcast.d) Tipo: indica el tipo <strong>de</strong> contenido <strong>de</strong>l campo <strong>de</strong> datos que llevala trama (las tramas que transportan paquetes IP llevan un0x800). Permite multiplexar diferentes protocolos <strong>de</strong>ntro <strong>de</strong>una misma LAN. Xerox actualiza regularmente la lista <strong>de</strong> protocolosregistrados (Xerox Public Ethernet Packet Type). Mása<strong>de</strong>lante veremos las varieda<strong>de</strong>s <strong>de</strong> protocolos <strong>de</strong> Ethernetpara conocer las variantes <strong>de</strong> Ethernet semicompatibles y sabercómo afecta su coexistencia a la manera como Ethernet ha tenidoque <strong>de</strong>finir el campo Tipo.ANOTACIONES119


ª FUOC • XP04/90786/00020Software libreActividadConsultad la lista <strong>de</strong> los protocolos registrados parahaceros una i<strong>de</strong>a <strong>de</strong> la cantidad <strong>de</strong> protocolos <strong>de</strong> red(los superiores a Ethernet) que hay.e) Datos: se refiere al formato <strong>de</strong>l campo <strong>de</strong> datos. Las restriccionessobre el tipo <strong>de</strong> datos que pue<strong>de</strong> transportar Ethernet son las siguientes:• La longitud <strong>de</strong> los datos <strong>de</strong>be ser múltiplo <strong>de</strong> 8 bits; es <strong>de</strong>cir,Ethernet transporta la información en bytes. Ello no es ningún impedimento,puesto que los bits los envían sistemas que, por normageneral, trabajan con bytes o múltiplos <strong>de</strong> bytes.• Del mismo modo que PPP, Ethernet tiene limitada la longitudmáxima <strong>de</strong> información transportable por la trama (MTU). En estecaso, la MTU es <strong>de</strong> 1.500 bytes. Esta limitación tiene como objetivoevitar que una estación monopolice la LAN.• El campo <strong>de</strong> datos <strong>de</strong>be tener como mínimo 46 bytes <strong>de</strong> longitud(en Gygabit Ethernet, 512). Ello se <strong>de</strong>be al hecho <strong>de</strong> que espreciso que la trama mínima Ethernet tenga 64 bytes (512 bits).Se consi<strong>de</strong>ra que las tramas inferiores son resultado <strong>de</strong> colisionesy son obviadas por los receptores.Este problema no se plantea en la variante <strong>de</strong> Ethernet IEEE802.3,puesto que este protocolo dispone <strong>de</strong> un campo <strong>de</strong> longitud y otro<strong>de</strong> relleno (padding) que permiten transmitir datos <strong>de</strong> hasta 1 byte <strong>de</strong>longitud, aunque la longitud que físicamente se transmite continúasiendo <strong>de</strong> 64 bytes.ANOTACIONESActividadImaginad qué suce<strong>de</strong>ría si una estación quisiera enviarun fichero <strong>de</strong> 1 GB por la LAN <strong>de</strong>ntro <strong>de</strong> una solatrama.f) CRC: es un código <strong>de</strong> redundancia cíclica <strong>de</strong> 32 bits (CRC-32)para la <strong>de</strong>tección <strong>de</strong> errores. Abarca toda la trama a excepción<strong>de</strong>l preámbulo. Las tramas que no poseen un CRC correcto se ig-120


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020noran (como las tramas <strong>de</strong> menos <strong>de</strong> 64 bytes y las que no sonmúltiples <strong>de</strong> 8 bits).NotaDes<strong>de</strong> mediados <strong>de</strong> los años ochenta Ethernet ha convividocon una variante similar <strong>de</strong>nominada IEEE802.3 oISO8802.3. Son estándares establecidos por organizacionesreconocidas (el IEEE y la ISO) <strong>de</strong>dicadas a la normalización(estándar <strong>de</strong> iure). Durante un tiempo sepensó que el IEEE802.3 acabaría sustituyendo a la Ethernetoriginal (también <strong>de</strong>nominada Ethernet-DIX, en honora DEC, Intel y Xerox), que no podía transmitir tramas arbitrariamentepequeñas. Los protocolos que trabajan sobreEthernet-DIX conocen esta limitación y llenan latrama hasta ocupar los 46 bytes <strong>de</strong> información.El IEEE802.3 introduce un campo <strong>de</strong> longitud (en lamisma posición en que Ethernet tiene el campo <strong>de</strong>tipo) que permite saber cuántos bytes útiles contieneel campo <strong>de</strong> datos. Si la longitud no llega a los 46bytes mínimos, se llena con bytes (in<strong>de</strong>finidos) hastallegar al mínimo. El receptor sólo <strong>de</strong>be leer el campo<strong>de</strong> longitud para extraer la información válida <strong>de</strong>lmismo. El concepto <strong>de</strong> tipo <strong>de</strong> Ethernet (es <strong>de</strong>cir, lacoexistencia <strong>de</strong> diferentes protocolos por encima <strong>de</strong>Ethernet/IEEE802.3) se <strong>de</strong>lega a un protocolo asociado:el IEEE802.2, protocolo <strong>de</strong> enlace que sepue<strong>de</strong> utilizar en el IEEE802.3 y en otros protocolos<strong>de</strong> LAN y que posee unas funciones similares a las<strong>de</strong>l HDLC.Figura 52.ANOTACIONES121


ª FUOC • XP04/90786/00020Software libreComo en el nivel físico ambos estándares son totalmentecompatibles, podríamos preguntarnos si pue<strong>de</strong>n coexistirtramas Ethernet-DIX e IEEE802.3 <strong>de</strong>ntro <strong>de</strong> unamisma LAN. La respuesta es que sí y que no al mismotiempo.Fijaos en que todos los campos <strong>de</strong> la trama Ethernety <strong>de</strong> la 802.3 son <strong>de</strong>l mismo formato y significan lomismo, a excepción <strong>de</strong>l campo <strong>de</strong> tipo (Ethernet) y<strong>de</strong> longitud (802.3). Podríamos distinguirlos siempreque vigiláramos que ningún tipo Ethernet fuera equivalentea una longitud válida <strong>de</strong> 802.3. Los tiposcon valores inferiores a 1.500 (0x5DC en hexa<strong>de</strong>cimal)pue<strong>de</strong>n confundirse con longitu<strong>de</strong>s válidas.Ello, obviamente, no podía tenerse en cuenta en laEthernet-DIX original, puesto que es anterior alIEEE802.3. Por ello, apareció una a<strong>de</strong>nda a la normaEthernet-DIX, conocida como Ethernet-DIX-II,que elimina los i<strong>de</strong>ntificadores <strong>de</strong> protocolos por <strong>de</strong>bajo<strong>de</strong> 0x0600 (1.536 en <strong>de</strong>cimal). Hoy día confrecuencia <strong>de</strong>ntro <strong>de</strong> una misma LAN encontramostramas Ethernet-DIX-II y tramas IEEE802.3.El IP pue<strong>de</strong> ir sobre cualquiera <strong>de</strong> los dos estándares,aunque casi nadie elige la posibilidad <strong>de</strong> encapsularlosobre el IEEE802.3. El par <strong>de</strong> protocolos IEEE802.3 +802.2 se utiliza en algunos <strong>de</strong> los sistemas operativos <strong>de</strong>red aparecidos en los años ochenta como, por ejemplo,el IPX <strong>de</strong> Novell y el NETBEUI <strong>de</strong> Microsoft.ANOTACIONES11.3.2. Tipos <strong>de</strong> medios físicos en EthernetEthernet se ha ido adaptando a las necesida<strong>de</strong>s <strong>de</strong>l tiempo ampliandolos subestándares <strong>de</strong> nivel físico. A continuación, mostramosuna lista <strong>de</strong> los estándares más utilizados:• 10Base2: alcance <strong>de</strong> 185 m, ó 925 m con repetidores, perocon coaxial <strong>de</strong>lgado, flexible y barato (por ello, durante mu-122


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020chos años esta red se ha <strong>de</strong>nominado Cheapernet). aunquehoy día se tien<strong>de</strong> gradualmente a <strong>de</strong>jarlo <strong>de</strong> lado en favor <strong>de</strong>10BaseT –que es mucho más fiable–, millones <strong>de</strong> terminales entodo el mundo están conectados con Ethernet-10Base2. Se utilizasobre todo en topologías en bus.• 10BaseT: conexión en estrella <strong>de</strong> las estaciones a un nudo central(concentrador o hub) por medio <strong>de</strong> par trenzado; la distanciamáxima <strong>de</strong> la estación al concentrador es <strong>de</strong> 100 m. Ladistancia máxima entre estaciones se consigue enca<strong>de</strong>nandocuatro concentradores, y es <strong>de</strong> 500 m.Representa una mejora importante respecto a los estándaresanteriores, puesto que se centralizan en un solo punto la gestióny la monitorización <strong>de</strong>l estado <strong>de</strong> toda la LAN. Asimismo,con las topologías en bus, el mal funcionamiento <strong>de</strong> una estaciónpodía comportar el bloqueo <strong>de</strong> toda la red. Con 10BaseT,una mala conexión <strong>de</strong> un terminal es <strong>de</strong>tectada por el concentrador,que simplemente la <strong>de</strong>sconecta e indica que el enlacea la estación está cortado o inactivo (con una luz roja, porejemplo).• 10BaseF: similar a 10BaseT; sin embargo, en lugar <strong>de</strong> partrenzado, utiliza fibra óptica (generalmente, multimodo), conque se consigue un alcance mucho mayor (hasta 2 km).• 100BaseT y 100BaseF: similares a 10BaseT y 10BaseF, respectivamente;sin embargo, funcionan a 100 Mbps. A causa <strong>de</strong>lprotocolo <strong>de</strong> control <strong>de</strong> acceso al medio CSMA/CD, el alcancese reduce mucho (100 m entre estación y concentrador, sin posibilidad<strong>de</strong> enca<strong>de</strong>nar concentradores).• Gigabit Ethernet: las variantes más comunes son 1000BaseT,sobre cableado <strong>de</strong> cobre categoría 5 (equivalente al necesariopara 100BaseT) y 1000BaseSX, sobre fibra. Tiene el mismo alcanceque 100BaseT, 100 m.• 10 Gigabit Ethernet: actualización <strong>de</strong> Ethernet para el siglo XXIANOTACIONES123


ª FUOC • XP04/90786/00020Software libre11.3.3. Direcciones LANLas direcciones LAN están divididas en diferentes campos, comopue<strong>de</strong> observarse en la figura siguiente:Figura 53.La mitad menos significativa <strong>de</strong> la dirección (los bits <strong>de</strong>l 2 al 23),asignada por el IEEE a cada fabricante <strong>de</strong> manera fija, es el OUI(organizational unique i<strong>de</strong>ntifier). Este último, cuando fabrica lastarjetas, programa (en ROM) la dirección completa, que está formadapor el OUI más una parte variable que el mismo fabricanteasigna individualmente para cada tarjeta: la OUA (organizationalunique address).ANOTACIONESNotaNo es <strong>de</strong>l todo cierto que elúnico grupo multicast Ethernetrelevante sea el broadcast. Lared Internet dispone <strong>de</strong>l protocoloIGMP (Internet groupmulticast protocol), que tambiéntrabaja sobre tramasEthernet multicast.Existen dos bits <strong>de</strong>l OUI que siempre son cero cuando se trata <strong>de</strong>la dirección <strong>de</strong> origen: el bit multicast (M) y el bit local (L). Este últimono se utiliza casi nunca y, por tanto, lo consi<strong>de</strong>raremos siemprecero.Tanto la dirección <strong>de</strong> <strong>de</strong>stino como la <strong>de</strong> origen <strong>de</strong> la trama tienenel mismo formato, con la única diferencia <strong>de</strong> que la dirección <strong>de</strong><strong>de</strong>stino también pue<strong>de</strong> ser <strong>de</strong> tipo multicast (bit M = 1). En este caso,el número que lleva no se refiere a una estación en particular, sinoque se dirige a un grupo <strong>de</strong> estaciones. Cada una <strong>de</strong> las cuales co-124


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020noce el grupo o grupos a los que está adscrita. Por norma general,cada uno <strong>de</strong> los grupos se refiere a grupos <strong>de</strong> estaciones que compartenuna misma aplicación o un mismo protocolo. En el IP, el únicogrupo multicast Ethernet relevante es el broadcast.Sobre papel, las direcciones LAN se escriben en hexa<strong>de</strong>cimal, separandolos bytes con dos puntos y escribiendo primero el byte menossignificativo, por ejemplo:08:00:00:10:97:00El primer byte (que es el menos significativo) es siempre divisible porcuatro en direcciones no multicast que tienen los bits M y L a 0.El grupo broadcast es especial, en el sentido <strong>de</strong> que, por <strong>de</strong>fecto, todaslas estaciones le pertenecen; por tanto, es una manera <strong>de</strong> difundirinformación simultáneamente a todas las estaciones. El concepto<strong>de</strong> broadcast no es exclusivo <strong>de</strong> Ethernet, sino que es común a muchosotros protocolos <strong>de</strong> LAN y WAN (también en el IP). Poner todoslos bits <strong>de</strong> la dirección a 1 constituye la manera más habitual <strong>de</strong> representarla dirección broadcast, y es la que utilizan las LAN(FF:FF:FF:FF:FF:FF).ANOTACIONES125


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002012. Protocolos <strong>de</strong>l nivel <strong>de</strong> transporteEl objetivo principal <strong>de</strong>l nivel <strong>de</strong> transporte es establecer una comunicaciónextremo a extremo a través <strong>de</strong> una red. En otras palabras, actuar<strong>de</strong> interfaz entre los niveles orientados a la aplicación y los niveles orientadosa la red <strong>de</strong> la jerarquía <strong>de</strong> protocolos (tanto OSI como TCP/IP).El nivel <strong>de</strong> transporte oculta a los niveles altos <strong>de</strong>l sistema el tipo <strong>de</strong> tecnología(red) al que está conectado el terminal. La figura siguiente <strong>de</strong>scribeel posicionamiento <strong>de</strong>l nivel <strong>de</strong> transporte respecto al resto <strong>de</strong> losniveles:Figura 54.En este apartado nos interesan los dos protocolos <strong>de</strong>l nivel <strong>de</strong> transporteque se <strong>de</strong>finen en la pila TCP/IP: UDP y TCP. UDP es no orientadoa la conexión, mientras que TCP es orientado a la conexión.En el nivel <strong>de</strong> transporte se <strong>de</strong>finen dos direcciones que lo relacionancon los niveles superior e inferior:• La dirección IP, que ya conocemos, es la dirección que i<strong>de</strong>ntificaun subsistema <strong>de</strong>ntro <strong>de</strong> una red.• El puerto i<strong>de</strong>ntifica la aplicación que requiere la comunicación.ANOTACIONES127


ª FUOC • XP04/90786/00020Software librePara i<strong>de</strong>ntificar las diferentes aplicaciones, los protocolos TCP/IPmarcan cada paquete (o unidad <strong>de</strong> información) con un i<strong>de</strong>ntificador<strong>de</strong> 16 bits llamado puerto.La verda<strong>de</strong>ra utilidad <strong>de</strong> los puertos es que permiten multiplexaraplicaciones sobre protocolos <strong>de</strong>l nivel <strong>de</strong> transporte. Ello significaque un mismo protocolo <strong>de</strong> transporte lleva información <strong>de</strong>diferentes aplicaciones y estas últimas son i<strong>de</strong>ntificadas por elpuerto.Si alguna aplicación que corre en un terminal quiere establecer unacomunicación con un servidor o con otro terminal, <strong>de</strong>be utilizar unprotocolo <strong>de</strong> transporte: el TCP o el UDP. Como el <strong>de</strong>stino pue<strong>de</strong>encontrarse en una red remota, los protocolos <strong>de</strong> transporte necesitanel protocolo Internet para po<strong>de</strong>r llegar al terminal o servidorremoto.Cuando se establece la comunicación, no sólo es esencialconocer el puerto que i<strong>de</strong>ntifica la aplicación <strong>de</strong><strong>de</strong>stino, sino también la dirección IP que i<strong>de</strong>ntifica elterminal o servidor <strong>de</strong>ntro <strong>de</strong>l conjunto <strong>de</strong> re<strong>de</strong>s.Figura 55.ANOTACIONES128


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Como podéis observar en la figura anterior, las aplicaciones utilizanuno <strong>de</strong> los dos protocolos <strong>de</strong> transporte para comunicarse con equiposremotos. Para que un protocolo <strong>de</strong> aplicación se pueda comunicarcon otro <strong>de</strong>l mismo nivel situado en un terminal remoto, <strong>de</strong>betransmitirle un flujo <strong>de</strong> bytes que es encapsulado por los protocolos<strong>de</strong>l nivel <strong>de</strong> transporte.El conjunto <strong>de</strong> bytes que transmite el nivel <strong>de</strong> transporteTCP se conoce como segmento TCP, mientras que elconjunto <strong>de</strong> bytes que transmite el protocolo <strong>de</strong> transporteUDP se llama datagrama UDP.En general, dos aplicaciones se comunican siguiendo el mo<strong>de</strong>locliente/servidor. En una conexión es típico que una aplicación (elcliente) inicie una comunicación pidiendo una información a otraaplicación (el servidor). Pensemos en un or<strong>de</strong>nador que esté conectadoa una LAN y tenga asignada una dirección IP. Supongamosque dicho or<strong>de</strong>nador actúa como servidor <strong>de</strong> correo electrónico,a<strong>de</strong>más <strong>de</strong> como servidor <strong>de</strong> nombres. Un cliente conectado a Internetque solicita resolver un nombre necesita conocer la dirección IPasignada a este or<strong>de</strong>nador y el puerto que i<strong>de</strong>ntifica la aplicaciónservidor que resuelve nombres.NotaVeremos el mo<strong>de</strong>lo cliente/servidor en la unidad 15.El cliente necesita conocer ambas direcciones puesto que el servidorestará conectado a una red y, por tanto, tendrá una dirección IP que<strong>de</strong>be ser conocida para que se pueda establecer una comunicacióncon esta máquina remota. Dicha comunicación se consigue pormedio <strong>de</strong>l IP. Sin embargo, una vez conseguida, el servidor <strong>de</strong>beser capaz <strong>de</strong> i<strong>de</strong>ntificar la aplicación con que <strong>de</strong>sea comunicarse elcliente entre las muchas que corren: servidor <strong>de</strong> nombres, servidor<strong>de</strong> correo electrónico, etc.El cliente conoce la dirección IP <strong>de</strong> origen (la suya), la dirección IP <strong>de</strong><strong>de</strong>stino (la <strong>de</strong>l servidor) y su puerto <strong>de</strong> origen (i<strong>de</strong>ntifica la aplicacióncliente). Sin embargo, también <strong>de</strong>be conocer el número (puerto <strong>de</strong><strong>de</strong>stino) que i<strong>de</strong>ntifica la aplicación <strong>de</strong>seada en el servidor, y lo hacepor medio <strong>de</strong> los llamados puertos conocidos (well-known port).ANOTACIONES129


ª FUOC • XP04/90786/00020Software libreUn puerto conocido (well-known port) es un puerto(número) reservado que i<strong>de</strong>ntifica una aplicación conocida.Estos puertos son asignados por IANA (InternetAssigned Numbers Authority)EjemploLos valores <strong>de</strong> puertos conocidos para aplicacionesque utilizan el UDP son los siguientes:• Puerto 7 para el servidor <strong>de</strong> eco.• Puerto 53 para el servidor <strong>de</strong> nombres (DNS, domainname server).• Puerto 69 para el protocolo <strong>de</strong> transferencia <strong>de</strong> ficherostrivial (TFTP, trivial file transfer protocol).Y algunos valores <strong>de</strong> puertos conocidos para aplicacionesque utilizan el TCP son los siguientes:• Puertos 20 y 21 para el protocolo <strong>de</strong> transferencia<strong>de</strong> ficheros, FTP <strong>de</strong> datos y <strong>de</strong> control respectivamente.• Puerto 23 para el Telnet Remote Login.• Puerto 80 para el HTTP.ANOTACIONESEvi<strong>de</strong>ntemente, el servidor no necesita conocer a priori el puerto <strong>de</strong>origen, puesto que se limita a respon<strong>de</strong>r a cualquier petición <strong>de</strong> cualquiercliente. Este último informa en la unidad <strong>de</strong> datos <strong>de</strong> protocolo(PDU) <strong>de</strong>l nivel <strong>de</strong> transporte (o bien un datagrama UDP, o bien unsegmento TCP) <strong>de</strong> los puertos <strong>de</strong> origen y <strong>de</strong> <strong>de</strong>stino, <strong>de</strong> manera queel servidor conocerá el puerto <strong>de</strong> origen una vez haya recibido unapetición.130


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002013. El UDP (user datagram protocol)El UDP es un protocolo no orientado a la conexión, <strong>de</strong> manera queno proporciona ningún tipo <strong>de</strong> control <strong>de</strong> errores ni <strong>de</strong> flujo, aunqueutiliza mecanismos <strong>de</strong> <strong>de</strong>tección <strong>de</strong> errores. En caso <strong>de</strong> <strong>de</strong>tectar unerror, el UDP no entrega el datagrama a la aplicación, sino que lo<strong>de</strong>scarta. Conviene recordar que, por <strong>de</strong>bajo, el UDP está utilizandoel IP, que también es un protocolo no orientado a la conexión. Lascaracterísticas más importantes <strong>de</strong>l UDP son las siguientes:NotaEl UDP es un protocolo noorientado a la conexión.Ello significa que cada datagramaUDP existe con in<strong>de</strong>pen<strong>de</strong>ncia<strong>de</strong>l resto <strong>de</strong>los datagramas UDP.• No garantiza la fiabilidad; es <strong>de</strong>cir, no ofrece la seguridad <strong>de</strong> quecada datagrama UDP transmitido llegue a su <strong>de</strong>stino; es un protocolobest-effort: el UDP hace todo lo posible para transferir los datagramas<strong>de</strong> su aplicación, pero no garantiza su entrega.• No preserva la secuencia <strong>de</strong> la información que le proporciona laaplicación. Como está en modo datagrama y utiliza un protocolopor <strong>de</strong>bajo como el IP, que también está en modo datagrama, laaplicación pue<strong>de</strong> recibir la información <strong>de</strong>sor<strong>de</strong>nada. La aplicación<strong>de</strong>be estar preparada para que haya datagramas que se pierdan,lleguen con retardo o se hayan <strong>de</strong>sor<strong>de</strong>nado.Figura 56.ANOTACIONES131


ª FUOC • XP04/90786/00020Software libreLa figura anterior muestra la unidad <strong>de</strong> datos <strong>de</strong>l protocolo UDP y suencapsulamiento en un paquete IP. Cada operación <strong>de</strong> salida <strong>de</strong> undatagrama UDP provoca la generación <strong>de</strong> un paquete IP.El datagrama UDP consta <strong>de</strong> una cabecera y un cuerpo para encapsularlos datos. La cabecera consta <strong>de</strong> los elementos siguientes:NotaHay muchas aplicacionesque limitan la medida <strong>de</strong>sus buffers <strong>de</strong> transmisión yrecepción por <strong>de</strong>bajo <strong>de</strong> lamedida máxima <strong>de</strong> un datagramaUDP. Por ejemplo,es típico encontrar aplicacionesque proporcionan,por <strong>de</strong>fecto, medidas máximas<strong>de</strong>l datagrama UDP <strong>de</strong>8.192 bytes. Este valor proviene<strong>de</strong> la cantidad <strong>de</strong> datos<strong>de</strong>l usuario que el NFS(network file system) pue<strong>de</strong>leer o escribir por <strong>de</strong>fecto.• Los campos Puerto <strong>de</strong> origen y Puerto <strong>de</strong> <strong>de</strong>stino, que i<strong>de</strong>ntificanlas aplicaciones en los terminales <strong>de</strong> origen y <strong>de</strong> <strong>de</strong>stino.Cada puerto tiene 16 bits.• El campo Longitud indica la longitud, en bytes, <strong>de</strong>l datagramaUDP incluyendo la cabecera UDP (es la diferencia <strong>de</strong> la longitud<strong>de</strong>l datagrama IP menos la cabecera IP). Como la longitud máxima<strong>de</strong> un datagrama IP es <strong>de</strong> 65.535 bytes, con una cabecera estándar<strong>de</strong> 20 bytes, la longitud máxima <strong>de</strong> un datagrama UDP es<strong>de</strong> 65.515 bytes.• El campo Checksum (16 bits) es opcional y protege tanto la cabeceracomo los datos UDP (es preciso recordar que el checksum<strong>de</strong>l datagrama IP sólo cubre la cabecera IP). Cuando el UDP recibeun datagrama y <strong>de</strong>termina que hay errores, lo <strong>de</strong>scarta y nolo entrega a ninguna aplicación.NotaANOTACIONESEl cálculo <strong>de</strong>l checksum en el UDP es muy parecido alcálculo <strong>de</strong>l checksum en el IP (suma en complementoa 1 <strong>de</strong> palabras <strong>de</strong> 16 bits), con la particularidad <strong>de</strong>que la longitud <strong>de</strong>l datagrama UDP pue<strong>de</strong> ser par oimpar. En caso <strong>de</strong> que sea impar, se le aña<strong>de</strong> un 0 alfinal <strong>de</strong>l datagrama para calcular el checksum (este 0no se transmite). Para calcular el checksum, el UDP utilizauna seudocabecera <strong>de</strong> 12 bytes con algunos <strong>de</strong>los campos IP. Esta última no se transmite; el UDP sólola utiliza para calcular el checksum y le sirve para comprobarque la información que le proporciona el IP searealmente para él.132


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020aaaSi el UDP no aporta nada a IP, se podría pensar que supresencia es superflua. Pero no es así, porque no es estrictamentecierto que no aporte nada. Aporta la multiplexación<strong>de</strong> aplicaciones sobre la misma comunicación<strong>de</strong> red, a través <strong>de</strong>l concepto <strong>de</strong> puerto.Las aplicaciones que no requeiren <strong>de</strong> la funcionalidad <strong>de</strong>l TCP, usanel UDP como protocolo <strong>de</strong> trasporte. Po<strong>de</strong>mos poner dos ejemplos<strong>de</strong> estas aplicaciones:• Aplicaciones en tiempo real. Estas aplicaciones requieren poco retardo(mejor dicho, poca variabilidad en el retardo), y TCP pue<strong>de</strong>introducir retardos consi<strong>de</strong>rables si tiene que esperar, por ejemploque le llegue un paquete que se ha perdido.• Aplicaciones interesadas en transmitir información en modomulticast o broadcast (a un grupo <strong>de</strong> usuarios o a todos los <strong>de</strong>una red). En este caso, no tiene sentido establecer una conexióncomo hace el TCP con cada una <strong>de</strong> las estaciones <strong>de</strong>stino.ANOTACIONES133


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002014. El TCP (transmission control protocol)Como hemos podido observar, el UDP no garantiza la entrega <strong>de</strong> lainformación que le proporciona una aplicación. Tampoco reor<strong>de</strong>nala información en caso <strong>de</strong> que llegue en un or<strong>de</strong>n diferente <strong>de</strong> aquélen que se ha transmitido. Existen aplicaciones que no pue<strong>de</strong>n tolerardichas limitaciones. Para superarlas, el nivel <strong>de</strong> transporte proporcionaun protocolo llamado TCP.El TCP proporciona fiabilidad a la aplicación; es <strong>de</strong>cir, garantiza laentrega <strong>de</strong> toda la información en el mismo or<strong>de</strong>n en que ha sidotransmitida por la aplicación <strong>de</strong> origen. Para conseguir esta fiabilidad,el TCP proporciona un servicio orientado a la conexión con uncontrol <strong>de</strong> flujo y errores.14.1. El TCP proporciona fiabilidadPara proporcionar un servicio fiable a la aplicación, el TCP se basaen los principios siguientes:1) Transmisión libre <strong>de</strong> error. El TCP <strong>de</strong>be entregar a la aplicación<strong>de</strong> <strong>de</strong>stino exactamente la misma información que le entrególa aplicación <strong>de</strong> origen. De hecho, se trata <strong>de</strong> unaentrega “casi libre” <strong>de</strong> errores, puesto que pue<strong>de</strong> haber algunosque un mecanismo <strong>de</strong> <strong>de</strong>tección <strong>de</strong> errores no pueda <strong>de</strong>tectar.2) Garantía <strong>de</strong> entrega <strong>de</strong> la información. El TCP garantiza quetoda la información transmitida por la aplicación <strong>de</strong> origen seentregue a la aplicación <strong>de</strong> <strong>de</strong>stino. Si no es posible, el TCP<strong>de</strong>be avisar a la aplicación.ANOTACIONES135


ª FUOC • XP04/90786/00020Software libre3) Garantía <strong>de</strong> mantenimiento <strong>de</strong> la secuencia <strong>de</strong> transmisión.El TCP garantiza la entrega <strong>de</strong>l flujo <strong>de</strong> información en el mismoor<strong>de</strong>n en que le fue entregado por la aplicación <strong>de</strong> origen.4) Eliminación <strong>de</strong> duplicados. El TCP garantiza que sólo entregaráuna copia <strong>de</strong> la información transmitida a la aplicación <strong>de</strong> <strong>de</strong>stino.En caso <strong>de</strong> que reciba copias a causa <strong>de</strong>l funcionamiento <strong>de</strong>la red o <strong>de</strong> los protocolos que se implementan por <strong>de</strong>bajo <strong>de</strong>l nivel<strong>de</strong> transporte, el TCP las eliminará.La fiabilidad <strong>de</strong> la transmisión que proporciona TCP se consigue graciasa las siguientes estrategias:• El TCP está orientado a la conexión: tiene una fase <strong>de</strong> establecimiento<strong>de</strong> la conexión, una <strong>de</strong> transmisión <strong>de</strong> datos y una <strong>de</strong><strong>de</strong>sconexión.• El TCP utiliza el concepto buffered transfer: cuando se transfiereinformación, el TCP divi<strong>de</strong> los flujos <strong>de</strong> datos (byte stream) quele pasa la aplicación en segmentos <strong>de</strong>l tamaño que le convenga.El TCP <strong>de</strong>ci<strong>de</strong> el tamaño <strong>de</strong> los segmentos tanto si la aplicacióngenera un byte <strong>de</strong> información, como si genera flujos<strong>de</strong> gran<strong>de</strong>s dimensiones. En el primer caso, el TCP pue<strong>de</strong> esperara que la memoria intermedia se llene más antes <strong>de</strong> transferirla información, o bien la pue<strong>de</strong> transferir <strong>de</strong> inmediato(mecanismo push). En caso <strong>de</strong> que los flujos sean muy gran<strong>de</strong>s,el TCP pue<strong>de</strong> dividir la información en tamaños más pequeñosantes <strong>de</strong> transferirlos.ANOTACIONES• El TCP utiliza una conexión full duplex: la transferencia <strong>de</strong> informaciónes en ambos sentidos. La aplicación ve dos flujos in<strong>de</strong>pendientes.En caso <strong>de</strong> que la aplicación cierre uno <strong>de</strong> losflujos, la conexión pasa a ser half duplex. Ello significa que uno<strong>de</strong> los extremos (el que no ha cerrado la conexión) pue<strong>de</strong> continuarenviando información por el canal, mientras que el otroextremo (el que ha cerrado la conexión) se limita a reconocerla información. No obstante, no es normal encontrar este caso.Lo más habitual es que, si un extremo cierra la conexión, elotro también la cierre.136


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002014.2. Formato <strong>de</strong>l segmento TCPLa unidad <strong>de</strong> información <strong>de</strong>l protocolo TCP se llama segmento TCPy su formato el siguiente:Figura 57.El segmento TCP consta <strong>de</strong> una cabecera y un cuerpo para encapsulardatos. La cabecera consta <strong>de</strong> los campos siguientes:a) El campo Puerto <strong>de</strong> origen i<strong>de</strong>ntifica la aplicación en el terminal<strong>de</strong> origen.Figura 58.ANOTACIONES137


ª FUOC • XP04/90786/00020Software libreb) El campo Puerto <strong>de</strong> <strong>de</strong>stino i<strong>de</strong>ntifica la aplicación en el terminal<strong>de</strong> <strong>de</strong>stino.Figura 59.c) El campo Número <strong>de</strong> secuencia i<strong>de</strong>ntifica el primer byte <strong>de</strong>l campo<strong>de</strong> datos. En el TCP no se numeran segmentos, sino bytes. Portanto, el número <strong>de</strong> secuencia i<strong>de</strong>ntifica el primer byte <strong>de</strong> los datosque envía el segmento: al principio <strong>de</strong> la conexión se asigna un número<strong>de</strong> secuencia inicial (ISN, <strong>de</strong>l inglés initial sequence number),a partir <strong>de</strong>l cual el TCP numera los bytes consecutivamente.Figura 60.ANOTACIONESd) El campo Número ACK. El TCP reconoce datos por medio <strong>de</strong> latécnica <strong>de</strong> piggybacking . Al activar un bit <strong>de</strong> la cabecera (el bitACK), el TCP tiene en cuenta el número <strong>de</strong> secuencia ACK que indicaal otro extremo TCP el próximo byte que está dispuesto a recibir.Dicho <strong>de</strong> otra manera, el número ACK menos uno indica elúltimo byte reconocido.Figura 61.138


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020e) El campo Longitud <strong>de</strong> la cabecera indica la longitud <strong>de</strong> la cabecera,que pue<strong>de</strong> ser variable. La longitud típica es <strong>de</strong> 20 bytes; sinembargo, si el TCP utiliza el campo <strong>de</strong> opciones, pue<strong>de</strong> llegar auna longitud máxima <strong>de</strong> 60 bytes. De este modo, el TCP sabedón<strong>de</strong> empiezan los datos.Figura 62.f) El campo Reservado, tal como su nombre indica, está reservadoy se inicializa con ceros.Figura 63.g) El campo Control está formado por seis indicadores in<strong>de</strong>pendientes,cada uno <strong>de</strong> los cuales señala una función específica <strong>de</strong>lprotocolo cuando está activo (a 1):Figura 64.• URG: indica que hay datos urgentes (y el campo Urgent pointerindica la cantidad <strong>de</strong> datos urgentes existentes en el segmento).ANOTACIONES139


ª FUOC • XP04/90786/00020Software libre• ACK: cuando este bit está activo, el campo Número ACK indica elbyte siguiente que espera recibir la conexión TCP. Si este bit noestá activo, el campo Número ACK no tiene ningún significadopara el TCP.NotaNo <strong>de</strong>be confundirse PSHcon el indicador URG, queindica que la aplicación haseñalado una porción <strong>de</strong>lsegmento como urgente.• PSH: invoca la función push en el protocolo. Esta función dice alreceptor que entregue a la aplicación todos los datos que tengadisponibles en la memoria intermedia <strong>de</strong> recepción sin esperara completarlos con datos adicionales. De este modo, los datosno esperan en la memoria intermedia receptora hasta completarun segmento <strong>de</strong> dimensión máxima.• RST: realiza un reset <strong>de</strong> la conexión.• SYN: se utiliza para iniciar una conexión y también sirve para resincronizarlos números <strong>de</strong> secuencia.• FIN: indica que el transmisor ha acabado la conexión.h) El campo Ventana indica cuántos bytes componen la ventana <strong>de</strong>transmisión <strong>de</strong>l protocolo <strong>de</strong> control <strong>de</strong> flujo por ventana <strong>de</strong>slizante.A diferencia <strong>de</strong> los protocolos <strong>de</strong>l nivel <strong>de</strong> enlace, en quela ventana era constante y contaba tramas, en el TCP la ventanaes variable y cuenta bytes. Con cada segmento transmitido, un extremoTCP advierte al otro extremo <strong>de</strong> la cantidad <strong>de</strong> datos queestá dispuesto a recibir en cada momento. De este modo, el extremoque recibe un segmento actualiza el tamaño <strong>de</strong> su ventana<strong>de</strong> transmisión.ANOTACIONESFigura 65.140


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020i) El campo Checksum se utiliza para <strong>de</strong>tectar errores.Figura 66.j) El campo Urgent pointer tiene sentido cuando el bit <strong>de</strong> controlURG está activo. Indica que los datos que envía el origen son urgentese i<strong>de</strong>ntifica el último byte <strong>de</strong> dicho campo. La aplicación esla que indica que estos últimos son urgentes y lo sabe porque elTCP se lo indica en la recepción.Figura 67.EjemploSi el número <strong>de</strong> secuenciaindica 1.000 y el urgent pointerindica 200, significaque los bytes <strong>de</strong>l 1.000 al1.200 se consi<strong>de</strong>ran urgentes.A partir <strong>de</strong>l byte 1.201los datos se vuelven a consi<strong>de</strong>rarnormales.NotaAlgunas aplicaciones que utilizan el Urgent pointerson, por ejemplo telnet, rlogin o ftp. En la librería<strong>de</strong> sockets, el tráfico urgente se <strong>de</strong>nomina tráficofuera <strong>de</strong> banda (out of band).k) El campo Opciones TCP permite añadir campos a la cabecerapara realizar las operaciones siguientes:Figura 68.ANOTACIONES141


ª FUOC • XP04/90786/00020Software libreNotaEl tamaño máximo <strong>de</strong>l segmentoTCP transmitido seespecifica durante el establecimiento<strong>de</strong> la conexión y<strong>de</strong>fine la máxima longitud<strong>de</strong> datos que enviará elTCP.• Marcar el tiempo (timestamp) en que se transmitió el segmento y<strong>de</strong> este modo po<strong>de</strong>r monitorizar los retardos que experimentanlos segmentos <strong>de</strong>s<strong>de</strong> el origen hasta el <strong>de</strong>stino.• Aumentar el tamaño <strong>de</strong> la ventana.• Indicar el tamaño máximo <strong>de</strong>l segmento (MSS, <strong>de</strong>l inglés maximumsegment size) que el origen está preparado para recibir.Por tanto, el receptor no le pue<strong>de</strong> transmitir segmentos por encima<strong>de</strong> este valor.Actividad¿Cuál es el tamaño <strong>de</strong> un datagrama IP en función <strong>de</strong>MSS?SoluciónSi el tamaño <strong>de</strong> los datos TCP es MSS, será preciso añadirle20 bytes <strong>de</strong> la cabecera TCP más 20 bytes <strong>de</strong> la cabeceraIP (teniendo en cuenta las cabeceras básicas sinopciones). Ello significa que la longitud <strong>de</strong>l datagrama IPserá <strong>de</strong> MSS + 40 bytes (siempre asumiendo que tanto elTCP como el IP no utilizan sus campos <strong>de</strong> opciones).Si no se especifica el tamaño máximo durante la transmisión<strong>de</strong>l segmento SYN, se toman por <strong>de</strong>fecto 536 bytes(el tamaño por <strong>de</strong>fecto <strong>de</strong> un datagrama IP es <strong>de</strong> 576bytes, menos los 40 bytes <strong>de</strong> las cabeceras IP y TCP).ANOTACIONESNotaConsultad la MTU en elapartado 11.1.2.El hecho <strong>de</strong> elegir el MSS no es trivial. En general, cuanto mayor seael MSS, mejor, puesto que las cabeceras IP y TCP se amortizan más.Sin embargo, si la MTU es pequeña, será preciso fragmentar el datagramaIP (es <strong>de</strong>cir, el segmento TCP); por tanto, por norma generalno interesa elegir MSS mayores que la MTU. En este caso, existen diferentesposibilida<strong>de</strong>s:1) Buscar la MTU local <strong>de</strong> la red a que está conectada la estación y,si hay MTU más pequeñas hasta el <strong>de</strong>stino, habrá fragmentación.2) Utilizar MTU discocvery path, un mecanismo <strong>de</strong> búsqueda para averiguarcuál es la MTU menor <strong>de</strong>s<strong>de</strong> el origen hasta el <strong>de</strong>stino y utilizarcomo MSS esta última menos los 40 bytes <strong>de</strong> cabeceras IP y TCP.142


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002014.3. Establecimiento <strong>de</strong> la conexiónPara establecer una conexión, el TCP utiliza el protocolo three-wayhandshake. Este último necesita tres segmentos TCP para po<strong>de</strong>r establecerla conexión.Consi<strong>de</strong>remos que el servidor está en un estado <strong>de</strong> escucha, llamadolisten, y que el cliente quiere establecer una conexión con el servidor.El TCP <strong>de</strong> la máquina cliente iniciará la petición <strong>de</strong> conexión TCP,que será contestada por el TCP <strong>de</strong> la máquina servidor.Figura 69.Para que el cliente TCP pueda establecer una conexión TCP con elservidor, se siguen los pasos siguientes:1) Petición <strong>de</strong> la conexiónEl TCP cliente envía un segmento <strong>de</strong> petición <strong>de</strong> conexión al servidor.Dicho segmento, que se conoce como segmento SYN porque tieneactivado el bit SYN en el campo Control <strong>de</strong> la cabecera <strong>de</strong>l segmentoTCP, especifica el número <strong>de</strong> secuencia inicial TCP <strong>de</strong>l cliente (ISN).El número <strong>de</strong> secuencia inicial se elige al azar. La razón es muy sencilla.Hay paquetes que pue<strong>de</strong>n sobrevivir en la red una vez se ha cerradola conexión TCP (incluso si ha sido a causa <strong>de</strong> una caída <strong>de</strong>lNotaEl segmento SYN especificamás parámetros, tales comoel puerto <strong>de</strong>l servidor al quese quiere conectar el cliente, ysuele especificar también lamedida máxima <strong>de</strong>l segmento(MSS) que el cliente transmitirá.ANOTACIONES143


ª FUOC • XP04/90786/00020Software libresistema). Es preciso asegurarse <strong>de</strong> que una conexión nueva elige unnúmero <strong>de</strong> secuencia inicial que no exista. El TCP recomienda utilizarun número <strong>de</strong> secuencia inicial basado en una variable que se incrementauna cantidad x cada y tiempo (por ejemplo, en 4.4BSD hayun contador que se incrementa cada 8 ms).Si el sistema cae, pasados unos segundos vuelve a estar en funcionamientoe inmediatamente se establece una conexión nueva utilizandoel mismo puerto y la misma dirección IP, se podría interpretarque los segmentos TCP que han quedado retrasados en la red y queya existían con anterioridad a la caída <strong>de</strong> la máquina, pertenecen ala conexión nueva, lo que provocaría la confusión y el mal funcionamiento<strong>de</strong> dicha conexión. Ello suce<strong>de</strong>ría incluso con in<strong>de</strong>pen<strong>de</strong>ncia<strong>de</strong>l número <strong>de</strong> secuencia inicial elegido.Con el objetivo <strong>de</strong> protegerse <strong>de</strong> esta situación, se combinan dos técnicas:una consiste en elegir el número <strong>de</strong> secuencia inicial <strong>de</strong> maneraaleatoria y la otra es el <strong>de</strong>nominado quiet time, que consiste enque el TCP no crea ninguna conexión nueva <strong>de</strong>spués <strong>de</strong> un rebote <strong>de</strong>máquinas hasta que no transcurre un tiempo <strong>de</strong>terminado <strong>de</strong>nominadoMSL (<strong>de</strong>l inglés maximum segment lifetime: “tiempo máximo <strong>de</strong>vida <strong>de</strong> un segmento”). De este modo, se asegura <strong>de</strong> que no recibirásegmentos antiguos <strong>de</strong> otras conexiones.NotaEl MSL <strong>de</strong>pen<strong>de</strong> <strong>de</strong> la implementación; sin embargo,los valores normales son, aproximadamente, <strong>de</strong> 30segundos, 1 minuto ó 2 minutos. No obstante, existenmuchas implementaciones que no tienen en cuentaesta situación, puesto que consi<strong>de</strong>ran que un rebote<strong>de</strong> máquinas dura más tiempo que el MSL.ANOTACIONES2) Confirmación <strong>de</strong> la conexiónEl servidor respon<strong>de</strong> a la petición <strong>de</strong> establecimiento <strong>de</strong> la conexión conun segmento SYN que indica el número <strong>de</strong> secuencia inicial que utilizará.Asimismo, este segmento contiene un reconocimiento (ACK) <strong>de</strong>l segmentoSYN <strong>de</strong>l cliente que indica el ISN <strong>de</strong>l cliente más 1 (el número<strong>de</strong> secuencia inicial <strong>de</strong>l cliente más 1).144


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020NotaConviene recordar que el TCP numera los ACK con elnúmero <strong>de</strong> secuencia <strong>de</strong>l próximo byte que espera recibir(en este caso, el servidor espera que el próximobyte enviado por el cliente sea J + 1). En la figura anterior,sería el segmento SYN (K), ACK ( J + 1), don<strong>de</strong>K es el ISN elegido por el TCP servidor.3) Reconocimiento <strong>de</strong> la conexiónEl cliente reconoce el segmento SYN (K) <strong>de</strong>l servidor con un reconocimientoque contiene el ISN servidor más 1. En la figura anterior, seríael segmento ACK (K + 1).Se dice que quien envía el primer segmento SYN (en este caso, elcliente) efectúa una apertura activa (active open), mientras que quienrecibe el primer segmento SYN y envía el próximo segmento SYN (eneste caso, el servidor) lleva a cabo una apertura pasiva (passiveopen).Pue<strong>de</strong> darse el caso <strong>de</strong> que ambos extremos efectúen una aperturaactiva en el mismo momento. Esta situación se <strong>de</strong>nomina apertura simultánea(simultaneous open).Después <strong>de</strong> estos tres pasos, po<strong>de</strong>mos <strong>de</strong>cir que ya se ha establecidola conexión entre el cliente y el servidor.NotaUtilizaremos el programa tcpdump para ver cómofunciona el protocolo <strong>de</strong> establecimiento <strong>de</strong> una conexión.Asumimos que nos hemos conectado a una máquinallamada argos y hacemos un rlogin a la máquinaheliosargos % rlogin heliosNotaEn el anexo 2 podéis encontraruna <strong>de</strong>scripción <strong>de</strong>l programatcpdump.ANOTACIONES145


ª FUOC • XP04/90786/00020Software libreLas primeras líneas que obtenemos con el tcpdump son las siguientes:• 15:56:54.796091 argos.1023 > helios.login: S 3541904332: 3541904332(0) win 31744 • 15:56:54.796091 helios.login > argos.1023: S 548133143: 548133143(0) ack 33541904333 win 8760 • 15:56:54.796091 argos.1023 > helios.login: . ack 548133144 win 31744Interpretación1) argos, <strong>de</strong>s<strong>de</strong> el puerto 1.023, envía a helios unapetición <strong>de</strong> conexión por medio <strong>de</strong> un segmentoSYN. El número <strong>de</strong> secuencia inicial (ISN) elegidopor argos es el 3.541.904.332, y argos anunciaque pue<strong>de</strong> recibir 31.744 bytes sin reconocerlos yque espera recibir segmentos con un tamaño máximo<strong>de</strong> 1.460 bytes.2) helios respon<strong>de</strong> con un segmento SYN eligiendocomo ISN el número 548.133.143 y respon<strong>de</strong> con unACK con el byte siguiente que espera recibir <strong>de</strong> argos,el 3.541.904.333 (3.541.904.332 + 1). Anunciaque pue<strong>de</strong> recibir 8.760 bytes y que espera recibirsegmentos con un tamaño máximo <strong>de</strong> 1.460 bytes.3) argos reconoce el segmento SYN con un segmentoen el que espera recibir el byte 548.133.144(548.133.143 + 1), argos vuelve a advertir queestá dispuesto a recibir hasta 31.744 bytes.A continuación, empezaría el intercambio <strong>de</strong> información entre elcliente y el servidor (por ejempo peticiones <strong>de</strong> login, contraseña,prompt <strong>de</strong> la máquina, etc.).ANOTACIONESActividadUtilizad el programa tcpdump para ver el establecimiento<strong>de</strong> una conexión. Con esta finalidad, estableceduna conexión con aplicaciones diferentes (telnet,ftp, rlogin, etc.) y monitorizad la conexión. Observadlos segmentos <strong>de</strong> inicio <strong>de</strong> la conexión, el valor <strong>de</strong>lnúmero <strong>de</strong> secuencia inicial, el <strong>de</strong>l número ACK inicialy el tamaño <strong>de</strong> la ventana.146


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002014.4. Terminación <strong>de</strong> la conexiónCuando la transferencia <strong>de</strong> la información ha finalizado, el TCP dispone<strong>de</strong> un protocolo <strong>de</strong> terminación <strong>de</strong> la conexión para cerrarla.En una conexión TCP full duplex, en la que los datos fluyen en ambossentidos, in<strong>de</strong>pendientes el uno <strong>de</strong>l otro, cualquier conexión <strong>de</strong>be cerrarsein<strong>de</strong>pendientemente.Es preciso tener en cuenta que tanto el cliente como el servidor pue<strong>de</strong>ncerrar la conexión. Sin embargo, la situación normal es que laaplicación cliente inicie la petición <strong>de</strong> conexión y tenga, posiblemente,un usuario interactivo que le pida su cierre por medio, por ejemplo,<strong>de</strong> una instrucción, que en telnet sería logout y en un ftp seríabye. Por tanto, supongamos que es el cliente quien pi<strong>de</strong> cerrar la conexión(si fuera el servidor, sería similar). Los pasos que se siguen sonlos siguientes:1) El cliente envía un segmento TCP <strong>de</strong>l tipo FIN con el número <strong>de</strong>secuencia correspondiente (J). Ello significa que a partir <strong>de</strong> estemomento no habrá más datos que fluyan en este sentido (cliente→ servidor).2) El servidor envía una confirmación <strong>de</strong>l cierre por medio <strong>de</strong> unACK con el número <strong>de</strong> secuencia recibido más 1 (J + 1).NotaEl segmento FIN recibe estenombre porque tiene activadoel bit FIN en el campoControl <strong>de</strong> la cabecera <strong>de</strong>lsegmento TCP.El TCP servidor indica a su aplicación que el cliente cierra la conexión.La aplicación servidor indica a su TCP que la cierre a continuación.3) El servidor envía un segmento TCP <strong>de</strong>l tipo FIN al cliente con elnúmero <strong>de</strong> secuencia correspondiente (K).4) El TCP cliente respon<strong>de</strong> automáticamente con un ACK (K + 1).Se dice que quien envía el primer segmento FIN (eneste caso el cliente) lleva a cabo un cierre activo (activeclose), mientras que quien lo recibe (en este caso elservidor) realiza un cierre pasivo (passive close).ANOTACIONES147


ª FUOC • XP04/90786/00020Software libreLa conexión que efectúa el cierre activo entra en un estado <strong>de</strong>nominadoTIME_WAIT, <strong>de</strong> manera que <strong>de</strong>berá esperar un tiempo (pornorma general, una o dos veces el MSL) antes <strong>de</strong> utilizar <strong>de</strong> nuevo elmismo puerto. Lo más habitual es que sea el cliente quien efectúe elcierre activo. Como los clientes suelen utilizar puertos locales efímeros,este tiempo <strong>de</strong> espera no les afecta. En cambio, si es el servidorquien efectúa el cierre activo, po<strong>de</strong>mos encontrarnos con que no sepueda reinicializar durante 1 ó 2 minutos. Ello suce<strong>de</strong> porque el servidorutiliza puertos conocidos que no se pue<strong>de</strong>n volver a reasignarhasta que no acabe el procedimiento quiet time y se salga <strong>de</strong>l estadoTIME_WAIT.Lectura complementariaPodéis encontrar una sección<strong>de</strong>dicada a este temaen el libro:W.R. Stevens (1998).TCP/IP Illustrated (vol. 1:“The Protocols”, cap. 19,pág. 252). Wilmington:Addison-Wesley, 1994.Es posible que sólo cierre la conexión (salida <strong>de</strong> datos) uno <strong>de</strong> los extremos,mientras que el otro (recepción) se mantiene abierto. Esta situaciónse <strong>de</strong>nomina half-close, pero hay pocas aplicaciones que seaprovechen <strong>de</strong> ella. Lo más normal es que ambas aplicaciones cierrensus canales <strong>de</strong> comunicaciones. Asimismo, pue<strong>de</strong> darse el caso<strong>de</strong> que dos extremos efectúen un cierre activo. Esta situación se <strong>de</strong>nominacierre simultáneo (simultaneous close).Monitorización <strong>de</strong> la terminación <strong>de</strong> una conexión utilizando elprograma tcpdumpUtilizaremos el comando tcpdump para ver cómo funciona el protocolo<strong>de</strong> terminación <strong>de</strong> la conexión. Asumimos que en el rlogin <strong>de</strong>lejemplo <strong>de</strong> establecimiento <strong>de</strong> la conexión helios hace un logout(pi<strong>de</strong> el cierre <strong>de</strong> la conexión).helios % logoutANOTACIONESLas líneas que obtenemos con el tcpdump son las siguientes:15:57:01.616091 helios.login > argos.1023: F 1417: 1417 (0)ack 41 win 876015:57:01.616091 argos.1023 > helios.login: .ack 1418 win3174415:57:01.616091 argos.1023 > helis.login: F 41:41 (0) ack580 3174415:57:01.616091 helios.login > argos.1023: .ack 42 win 8760148


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Interpretación1) helios envía un segmento con el indicador F (FIN).El número <strong>de</strong> secuencia es el 1.417 y envía 0 bytes<strong>de</strong> datos. Espera recibir el byte 41 <strong>de</strong> argos y advierteuna ventana <strong>de</strong> 8.760 bytes.2) argos envía un reconocimiento por medio <strong>de</strong> unsegmento con ACK 1.418 (1.417 + 1) y advierteuna ventana <strong>de</strong> 31.744 bytes.3) Ahora le toca a argos cerrar su conexión TCP. Conesta finalidad, envía un segmento con el indicadorF (FIN) a helios. El número <strong>de</strong> secuencia es el 41 (esel que esperará helios) y envía 0 bytes <strong>de</strong> datos.Advierte una ventana <strong>de</strong> 31.744 bytes.4) helios recibe el segmento, lo reconoce con el ACKnumerado como 42 (41 + 1) y advierte una ventana<strong>de</strong> 8.760 bytes.NotaLa notación <strong>de</strong> los números<strong>de</strong> secuencia y númerosACK se establece a partir<strong>de</strong>l ISN; es <strong>de</strong>cir un número<strong>de</strong> secuencia 1.417 indicaun número <strong>de</strong> secuenciaISN+1.417.helios ha efectuado un cierre activo, mientras que argosha efectuado un cierre pasivo.ActividadUtilizad el programa tcpdump para ver el cierre <strong>de</strong> unaconexión. Con esta finalidad, estableced una conexióncon diferentes aplicaciones (telnet, rlogin, etc.) y supervisadla.14.5. Diagrama <strong>de</strong> estados <strong>de</strong>l TCPEn el diagrama <strong>de</strong> estados <strong>de</strong>l TCP se <strong>de</strong>scriben los diferentes estadospor los que pasa una conexión <strong>de</strong>s<strong>de</strong> su establecimiento hastasu terminación, incluyendo la etapa <strong>de</strong> transferencia <strong>de</strong> la información.Los nombres <strong>de</strong> los estados TCP son los mismos que se pue<strong>de</strong>nconsultar con la llamada al sistema netstat.El estado ESTABLISHED se correspon<strong>de</strong> con la transferencia <strong>de</strong> la información.El resto <strong>de</strong> los estados se correspon<strong>de</strong>n con el establecimientoy la terminación <strong>de</strong> la conexión, teniendo en cuenta todas lasmaneras posibles <strong>de</strong> establecer y cerrar una conexión en el TCP. LosLectura complementariaW.R. Stevens (1998). “TheProtocols” TCP/IP Illustrated(vol. 1). Wilmington:Addison-Wesley, 1994.ANOTACIONES149


ª FUOC • XP04/90786/00020Software libresímbolos SYN, RST, FIN y ACK se correspon<strong>de</strong>n con los bits <strong>de</strong> indicación<strong>de</strong> la cabecera TCP.Figura 70.Un ejemplo <strong>de</strong> cómo se interpreta este diagrama sería el protocolo <strong>de</strong>terminación <strong>de</strong> una conexión, en que ya vimos que el extremo TCP quepedía el cierre efectuaba un cierre activo. Ello significa que pasaría <strong>de</strong>lestado ESTABLISHED al estado FIN_WAIT_1 enviando un segmentoFIN.ANOTACIONESNotaConsultad el MSL en el apartado15.3 <strong>de</strong> esta unidad.Des<strong>de</strong> aquí pue<strong>de</strong> pasar a uno <strong>de</strong> los tres estados que <strong>de</strong>scribencómo se pue<strong>de</strong> realizar un cierre activo <strong>de</strong>pendiendo <strong>de</strong> cómo se cierrela conexión:• Con un cierre simultáneo (simultaneous close), pasa a CLOSING.• Con la recepción <strong>de</strong> un ACK, pasa a FIN_WAIT_2, don<strong>de</strong> esperarecibir un FIN.• Con la recepción <strong>de</strong> un FIN y un ACK, pasa a TIME_WAIT, don<strong>de</strong>espera dos veces el MSL antes <strong>de</strong> liberar el puerto.150


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Ya hemos visto que el extremo TCP que recibe un FIN lleva a caboun cierre pasivo. Por tanto, pasa <strong>de</strong>l estado ESTABLISHED al estadoCLOSE_WAIT enviando los indicadores ACK y FIN correspondientespara acabar la conexión.La fase <strong>de</strong> establecimiento también se pue<strong>de</strong> seguir con facilidad pormedio <strong>de</strong>l diagrama <strong>de</strong> estados, teniendo en cuenta qué extremoefectúa el cierre activo y cuál lleva a cabo el cierre pasivo.Activida<strong>de</strong>s• Utilizad el comando netstat para ver el estado <strong>de</strong>las conexiones TCP que tengáis en este momento. Sino tenéis ninguna aplicación en la red, conectaos aalgún servidor con la web, haced un ftp o un telneta alguna máquina.• Suponed una interacción entre un cliente y un servidoren la que el cliente hace una apertura activa y el servidoruna apertura pasiva, a continuación se intercambianun segmento <strong>de</strong> datos, con sus correspondientesreconocimientos, y finalizan con un cierre activo porparte <strong>de</strong>l servidor, pasivo por parte <strong>de</strong>l cliente. Dibuja<strong>de</strong>l diagrama <strong>de</strong> tiempo que muestre el intercambio <strong>de</strong>segmentos, y en paralelo, los estados don<strong>de</strong> se encuentranlas dos entida<strong>de</strong>s en cada momento.14.6. Transferencia <strong>de</strong> la informaciónUna vez establecida la conexión, el TCP pue<strong>de</strong> empezar la transferencia<strong>de</strong> segmentos TCP en ambos sentidos. Para tansmitir información<strong>de</strong> manera fiable, el TCP implementa protocolos <strong>de</strong> control <strong>de</strong>errores y <strong>de</strong> flujo. Los pasos que sigue el TCP para transferir la informaciónson los siguientes:1) Cuando el TCP envía datos, mantiene un temporizador ( timeout)hasta que recibe un reconocimiento (ACK) <strong>de</strong>l receptor. Si el temporizadorsalta, el TCP retransmite los datos.ANOTACIONES151


ª FUOC • XP04/90786/00020Software libre2) Cuando el TCP recibe un segmento <strong>de</strong> datos, envía un reconocimiento.Este último se pue<strong>de</strong> retornar retrasado (no <strong>de</strong> inmediato)si el TCP lo consi<strong>de</strong>ra necesario.3) Si un segmento recibido es incorrecto (el checksum lo indica), elTCP <strong>de</strong>scarta el segmento y no <strong>de</strong>bería enviar la información. Dehecho, como el TCP utiliza la técnica <strong>de</strong> piggybacking (aprovechalos segmentos <strong>de</strong> datos que viajan en sentido contrario), lo quehace es retornar un segmento con el mismo número <strong>de</strong> ACK quehabía reconocido la última vez. El transmisor verá un ACK con unnúmero repetido e interpretará que no le reconocen la información.Este número se <strong>de</strong>nomina ACK duplicado.En caso <strong>de</strong> que no tuviera datos para enviar en sentido contrario, elTCP pue<strong>de</strong> enviar un segmento que no contenga información (conun campo <strong>de</strong> datos <strong>de</strong> cero bytes). Este segmento tendría el indicadorACK activado y reconocería los bytes pertinentes en el campo Número<strong>de</strong> ACK. El número <strong>de</strong> secuencia no se habría incrementado, puestoque no envía datos.4) Si los segmentos llegan <strong>de</strong>sor<strong>de</strong>nados (por <strong>de</strong>bajo hay el IP, queestá no orientado a la conexión), el TCP reor<strong>de</strong>na los segmentosy pasa los datos (bytes) correctamente or<strong>de</strong>nados a la aplicación.Si recibe segmentos duplicados, el TCP <strong>de</strong>scarta las copias.5) Como el TCP posee una memoria limitada, <strong>de</strong>be efectuar un control<strong>de</strong> flujo. Con esta finalidad, cada extremo avisa <strong>de</strong> los datosque está dispuesto a recibir en cada momento utilizando el campoVentana (se trata <strong>de</strong> un mecanismo <strong>de</strong> ventana <strong>de</strong>slizante basadoen bytes que explicaremos más a<strong>de</strong>lante).EjemploANOTACIONES– Datos interactivos: losque transmiten aplicacionestales como telnet orlogin.– Bulk data: los que transmitenaplicaciones comocorreo electrónico o ftp.El tipo <strong>de</strong> información que es preciso enviar pue<strong>de</strong> dividirse en datosinteractivos y datos <strong>de</strong> gran volumen o bulk data. La diferencia entreellos radica en la cantidad <strong>de</strong> información que se transmite. Los datosinteractivos transmiten pocos bytes <strong>de</strong> información (alre<strong>de</strong>dor <strong>de</strong>10), mientras que los datos <strong>de</strong> gran volumen transmiten gran cantidad<strong>de</strong> datos (ocupan la totalidad <strong>de</strong>l tamaño <strong>de</strong>l segmento TCP).Conviene consi<strong>de</strong>rar que no es lo mismo cargar la red con paquetespequeños <strong>de</strong> información que con paquetes gran<strong>de</strong>s. El TCP pue<strong>de</strong>aplicar en cada caso técnicas diferentes <strong>de</strong> manera automática, paraaprovechar la red al máximo.152


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002014.6.1. Transmisión <strong>de</strong> datos interactivosEn este tipo <strong>de</strong> comunicación, es normal enviar pocos datos. En unaaplicación <strong>de</strong>l tipo telnet, por ejemplo, un usuario cliente podríaejecutar el comando <strong>de</strong> Unix ls y obtener un listado <strong>de</strong> un directoriopor parte <strong>de</strong>l servidor. En esta transferencia <strong>de</strong> información intervienenpocos bytes <strong>de</strong>s<strong>de</strong> el origen (cliente) hasta el <strong>de</strong>stino (servidor) yse utilizan conjuntamente dos técnicas para obtener un mejor aprovechamiento<strong>de</strong> la red:• Reconocimientos retrasados.• Algoritmo <strong>de</strong> Nagle.Reconocimientos retrasadosEn este tipo <strong>de</strong> transferencia, es normal que el TCP no envíe los reconocimientosACK inmediatamente <strong>de</strong>spués <strong>de</strong> recibir los datos, sinoque esté un tiempo esperando a que haya datos para enviar en sentidocontrario. De este modo, pue<strong>de</strong> utilizar la técnica piggybacking yenviar el reconocimiento encapsulado en los datos que retornan alcliente.Es posible que el servidor se ahorre enviar un segmento que sólo reconoce,pero que no contiene datos. Es típico que el TCP espere (utilizaun temporizador) unos 200 ms por si hay datos para transmitirantes <strong>de</strong> enviar el ACK. Una vez ha transcurrido este tiempo, elTCP reconoce los datos recibidos hasta el momento con un segmento<strong>de</strong> datos, si dispone <strong>de</strong> datos para enviar en sentido contrario(piggybacking), o con un segmento sin datos (el número <strong>de</strong>secuencia no varía). En cualquiera <strong>de</strong> los dos casos, el indicador ACKestará activado y el número ACK reconocerá los datos pertinentes.Algoritmo <strong>de</strong> NagleEn numerosas ocasiones un cliente tiene muy pocos datos para enviar(por ejemplo, sólo 1 byte). En este caso el TCP enviaría un segmentosólo con 1 byte <strong>de</strong> datos y con 20 bytes <strong>de</strong> cabecera TCP. El IP añadiría20 bytes más <strong>de</strong> cabecera, lo que proporciona un total <strong>de</strong> 40bytes <strong>de</strong> control y 1 <strong>de</strong> datos. Si se transmiten muchos segmentos <strong>de</strong>ANOTACIONES153


ª FUOC • XP04/90786/00020Software libreeste tipo, la eficiencia es muy baja. Una solución a esta baja eficiencia<strong>de</strong> transmisión es aplicar el algoritmo <strong>de</strong> Nagle.Utilizando el algoritmo <strong>de</strong> Nagle, una conexión TCP sólo pue<strong>de</strong>tener un segmento <strong>de</strong> tamaño pequeño (pocos bytes) sin que sehaya reconocido; es <strong>de</strong>cir, sólo pue<strong>de</strong> haber un único segmento<strong>de</strong> tamaño pequeño viajando por la red (en vuelo). El resto <strong>de</strong> lossegmentos <strong>de</strong> tamaño pequeño no se pue<strong>de</strong>n transmitir hasta queel ACK <strong>de</strong>l segmento pequeño que esté viajando por la red hayallegado.Así, los segmentos que están esperando para ser transmitidos sealmacenan hasta que se recibe el ACK <strong>de</strong>l segmento en vuelo.Cuando este último llega, la conexión TCP pue<strong>de</strong> enviar un segmentoque contenga todos los datos almacenados hasta este momento,formando un segmento mayor.El algoritmo <strong>de</strong> Nagle funciona cuando los retardos en la red songran<strong>de</strong>s; es <strong>de</strong>cir, si la conexión cruza una WAN. En caso <strong>de</strong> quela conexión sea local, en una LAN, es difícil que se aplique estealgoritmo a causa <strong>de</strong> la alta velocidad <strong>de</strong> la red.NotaEn la librería <strong>de</strong> sockets API,el indicador que <strong>de</strong>sinhibeel algoritmo <strong>de</strong> Nagle es elTCP_NODELAY.En ocasiones, es interesante <strong>de</strong>sinhibir el algoritmo <strong>de</strong> Nagle,puesto que la aplicación no pue<strong>de</strong> esperar. El movimiento <strong>de</strong>l ratónen X Windows System provoca segmentos pequeños. Estos movimientos<strong>de</strong>l ratón <strong>de</strong>ben entregarse sin retardos para que elusuario interactivo no lo note. Las librerías <strong>de</strong> sockets <strong>de</strong>ben permitir,activando indicadores, <strong>de</strong>sinhibir el algoritmo <strong>de</strong> Nagle.ANOTACIONES14.6.2. Transmisión <strong>de</strong> datos <strong>de</strong> gran volumen. Control<strong>de</strong> flujo por ventana <strong>de</strong>slizanteEn las comunicaciones en que se envía una ingente cantidad <strong>de</strong> datos<strong>de</strong> gran volumen (correo electrónico, transferencias FTP, etc.),como las memorias intermedias <strong>de</strong> recepción se pue<strong>de</strong>n llenar, esnecesario un protocolo <strong>de</strong> ventana <strong>de</strong>slizante (sliding window) paracontrolar el flujo <strong>de</strong> datos, con la diferencia, respecto <strong>de</strong> los protocolos<strong>de</strong>l nivel <strong>de</strong> enlace, <strong>de</strong> que en el TCP la ventana <strong>de</strong> transmisiónes variable.154


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020La i<strong>de</strong>a es que cada extremo TCP regula la cantidad <strong>de</strong> datos queel otro extremo pue<strong>de</strong> transmitir. Con esta finalidad, cada extremo TCPnotifica al extremo opuesto, cada vez que envía un segmento, la ventanaque pue<strong>de</strong> aceptar en este momento. El TCP opuesto actualizasu ventana <strong>de</strong> transmisión <strong>de</strong> acuerdo con este valor.Mientras que el TCP transmisor marca los bytes que ha transmitidocon un número <strong>de</strong> secuencia, el TCP receptor retoma los bytesque recibe y los reconoce con un ACK. Los reconocimientos ACKespecifican siempre el número <strong>de</strong> secuencia <strong>de</strong>l próximo octetoque el receptor espera recibir.En el TCP se reconocen posiciones <strong>de</strong> bytes en el flujo <strong>de</strong>datos hasta la última posición que ha recibido correctamente,sin tener en cuenta el segmento al que pertenecen.El TCP sólo activa un temporizador <strong>de</strong> retransmisiones que reprogramacuando recibe un reconocimiento o cuando salta el temporizador. Mása<strong>de</strong>lante veremos cómo el TCP programa el temporizador <strong>de</strong> retransmisiones.La cabecera <strong>de</strong>l segmento TCP especifica tres parámetrosesenciales en el funcionamiento <strong>de</strong>l protocolo <strong>de</strong> ventana <strong>de</strong>slizante:• El número <strong>de</strong> secuencia, que indica a su conexión opuesta el primerbyte <strong>de</strong> datos que contiene el segmento transmitido.• El número <strong>de</strong> reconocimiento (número ACK), que indica a suconexión opuesta el próximo byte que espera recibir y, por tanto,el último byte recibido correctamente.• La ventana, que indica a su conexión opuesta el tamaño <strong>de</strong> lamemoria intermedia <strong>de</strong> recepción y, por tanto, el tamaño <strong>de</strong> laventana que el transmisor <strong>de</strong>be utilizar.ActividadAsumimos que un extremo cliente TCP ha elegido el28.325 como número <strong>de</strong> secuencia inicial (ISN), mientrasque el extremo servidor TCP ha elegido como ISNel 12.555. ¿Qué indica un segmento cliente TCP connúmero <strong>de</strong> secuencia 29.201, número ACK 12.655 yventana 1.024?NotaRecordad que el TCP es bidireccionaly que un segmentoTCP reconoce, pormedio <strong>de</strong> piggybacking, losdatos que recibe con unACK que <strong>de</strong>be estar numerado.ANOTACIONES155


ª FUOC • XP04/90786/00020Software libreSoluciónEl número <strong>de</strong> secuencia indica que el cliente ya hatransmitido <strong>de</strong>s<strong>de</strong> el byte 28.325 hasta el byte 29.200(875 bytes en total) y que en este segmento transmitiráa partir <strong>de</strong>l byte 29.201. El número ACK indicará alservidor que el cliente ha recibido correctamente hastael byte 12.654 y que espera recibir a partir <strong>de</strong>l 12.655.La ventana indica al servidor que el cliente sólo pue<strong>de</strong>aceptar 1.024 bytes antes <strong>de</strong> confirmarlos. Por consiguiente,el servidor TCP actualizará su ventana <strong>de</strong>transmisión a 1.024.Con el objetivo <strong>de</strong> estudiar el mecanismo <strong>de</strong> ventana <strong>de</strong>slizante,analizaremos un caso sencillo. Asumiremos que ya se ha establecidola conexión y se ha asignado la ISN para ambos extremos.En la figura siguiente, po<strong>de</strong>mos ver como funcionaría el protocolo <strong>de</strong>ventana <strong>de</strong>slizante para el TCP transmisor. El TCP receptor le ha indicadoque esté dispuesto a recibir 7 bytes. Por tanto, la ventana <strong>de</strong>transmisión <strong>de</strong> TCP transmisor es <strong>de</strong> 7 bytes:Figura 71.ANOTACIONESPo<strong>de</strong>mos interpretar la ventana <strong>de</strong>slizante <strong>de</strong> la manera siguiente:1) El TCP ha enviado bytes hasta el número <strong>de</strong> secuencia 1.003. Deestos bytes, el TCP receptor le ha reconocido hasta el 999; faltanpor reconocerle los bytes 1.000 a 1.003.156


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000202) Como la ventana <strong>de</strong> transmisión es <strong>de</strong> 7 bytes y ya ha transmitido4, el TCP todavía pue<strong>de</strong> transmitir 3 bytes antes <strong>de</strong> agotarla (bytes1.004 a 1.006).3) El TCP sólo podrá transmitir <strong>de</strong>l byte 1.007 en a<strong>de</strong>lante en los casossiguientes:• Si el TCP receptor le reconoce los bytes a partir <strong>de</strong>l 1.000, <strong>de</strong>manera que el límite izquierdo <strong>de</strong> la ventana se moverá haciala <strong>de</strong>recha.• Si el TCP receptor le advierte <strong>de</strong> una ventana superior a 7, <strong>de</strong>manera que el límite <strong>de</strong>recho <strong>de</strong> la ventana se moverá haciala <strong>de</strong>recha.• Una combinación <strong>de</strong> las dos soluciones anteriores.Como podéis observar, el TCP receptor pue<strong>de</strong> advertir una nuevaventana <strong>de</strong> transmisión. Cada vez que reconozca datos, avisará <strong>de</strong>la nueva ventana que está dispuesta a recibir. El TCP transmisor actualizaráesta última.La ventana pue<strong>de</strong> experimentar tres tipos <strong>de</strong> movimiento:1) La ventana se cierra al moverse el límite izquierdohacia la <strong>de</strong>recha cuando los datos enviados son reconocidos.2) La ventana se abre al moverse el límite <strong>de</strong>recho haciala <strong>de</strong>recha y permite que el TCP envíe más datos. Estaapertura tiene lugar cuando el receptor libera espacio<strong>de</strong> su memoria y pue<strong>de</strong> advertir una nueva ventana.3) La ventana se comprime cuando el límite <strong>de</strong>rechose mueve hacia la izquierda.Algunos puntos que po<strong>de</strong>mos resumir <strong>de</strong> la figura <strong>de</strong> la ventana <strong>de</strong>slizanteson los siguientes:• Si el límite izquierdo alcanza el límite <strong>de</strong>recho, se dice que la ventanavale cero (zero window). Ello hace que el transmisor <strong>de</strong>tenga el envío<strong>de</strong> datos.ANOTACIONES157


ª FUOC • XP04/90786/00020Software libre• Se recomienda que el TCP transmisor no comprima la ventana <strong>de</strong>transmisión.• Es preciso que distingamos el hecho <strong>de</strong> que la ventana se comprima(el límite <strong>de</strong>recho se mueve hacia la izquierda) <strong>de</strong>l hecho <strong>de</strong> que laventana disminuya <strong>de</strong> tamaño (se advierte una ventana más pequeña,pero el límite <strong>de</strong>recho no se mueve hacia la izquierda).NotaSupongamos una ventana <strong>de</strong> 7 bytes como en la figura<strong>de</strong>la ventana <strong>de</strong>slizante. El receptor reconoce los bytes1.000 a 1.003 y advierte una ventana <strong>de</strong> 5 bytes. Comopodéis <strong>de</strong>ducir, el límite izquierdo vale ahora 1.004; ellímite <strong>de</strong>recho, 1.008 (se ha movido hacia la <strong>de</strong>recha),y la nueva ventana, 5. En este caso, la ventana <strong>de</strong> recepción<strong>de</strong>be reducirse, pero no se ha comprimido.En cambio, si el receptor sólo reconoce 1 byte (elbyte1.000) y advierte una ventana <strong>de</strong> 1 byte, el transmisorse encontrará con un problema. Una ventana<strong>de</strong> 1 byte significa que sólo podía haber transmitido 1(el 1.001), pero ya había transmitido 3, incluyendo elreconocido (<strong>de</strong>l 1.000 al 1.003). Por tanto, el receptor<strong>de</strong>be asegurarse <strong>de</strong> advertir al menos tantos bytescomo el transmisor le pue<strong>de</strong> haber enviado con laventana anterior. Si sólo reconoce 1 byte, la ventanaadvertida <strong>de</strong>be ser <strong>de</strong> 6 bytes; si reconoce los 4 bytes,esta última <strong>de</strong>be ser, al menos, <strong>de</strong> 3 bytes, puesto queel transmisor ya los podría haber transmitido.EjemploANOTACIONESUtilizaremos el programa tcpdump para observar cómo funciona elprotocolo <strong>de</strong> ventana <strong>de</strong>slizante. Asumimos que hemos efectuado unrlogin <strong>de</strong> argos a helios (argos % rlogin helios) y ya estamos conectadosa helios. Una vez nos encontramos en helios, ejecutamos elcomando ls. Este último retorna por salida estándar el listado <strong>de</strong> directorios<strong>de</strong>l directorio <strong>de</strong>l usuario (home directory) en helios queocupan 811 caracteres (representa el envío <strong>de</strong> 811 bytes)helios % ls158


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Las líneas que obtenemos con el programa tcpdump (numeradas<strong>de</strong>l 1 al 13) son las siguientes:1)15:56:59.506091 argos.1023 > helios.login: P 37:38 (1)ack 596 win 317442)15:56:59.516091 helios.login > argos.1023: P 596:597 (1) ack 38 win 87603)15:56:.59.526091 argos.1023 > helios.login: .ack 597 win 317444)15:56:59.846091 argos.1023 > helios.login: P 38:39 (1)ack 597 win 317445)15:56:59.856091 helios.login > argos.1023: : P 597:600 (3) ack 39 win 87606)15:56:59.866091 argos.1023 > helios.login: .ack 600 win 317447)15:57:00.116091 argos.1023 > helios.login: P 39:40 (1)ack 600 win 317448)15:57:00.126091 helios.login > argos.1023: P 600:603 (3) ack 40 win 87609)15:57:00.136091 argos.1023 > helios.login: .ack 603 win 3174410)15:57:00.146091 helios.login > argos.1023: P 603:658 (55) ack 40 win 876011)15:57:00.156091 argos.1023 > helios.login: .ack 658 win 3174412)15:57:00.166091 helios.login > argos.1023: P 658:1414 (756) ack 40 win 876013)15:57:00.176091 argos.1023 > helios.login: .ack 1414 win 31744La interpretación <strong>de</strong> estas líneas es la siguiente: argos ya ha enviado36 bytes, mientras que helios ya ha enviado 595 (información queambos han intercambiado <strong>de</strong>s<strong>de</strong> el principio <strong>de</strong> la conexión, comopue<strong>de</strong>n ser logins, usernames, etc.). Deducimos esta información <strong>de</strong>la primera línea <strong>de</strong>l ejemplo.1) argos envía el carácter ‘l’. El indicador P señala PUSH. El número<strong>de</strong> secuencia avanza <strong>de</strong> 37 a 38.2) helios retorna un eco <strong>de</strong>l carácter ‘l’. Su número <strong>de</strong> secuencia avanza<strong>de</strong> 596 a 597 y reconoce el byte recibido (ACK = 37 + 1 = 38).3) argos reconoce el eco: ACK = 597 + 1 = 598.NotaRecordad que PUSH indicaal receptor que pase los datosinmediatamente a laaplicación; es <strong>de</strong>cir, que nolos <strong>de</strong>je durante un tiempoen la memoria intermedia<strong>de</strong> recepción.4) argos envía el carácter ‘s’. El número <strong>de</strong> secuencia avanza <strong>de</strong>38 a 39. El ACK no reconoce nada porque vale igual que antes:ACK = 597.5) helios hace un eco que ocupa 3 bytes (BS + 1 + s). El número <strong>de</strong>secuencia avanza tres posiciones (<strong>de</strong> 597 a 600) y reconoce el carácter‘s’ , puesto que ACK = 38 + 1 = 39.6) argos reconoce el eco con un ACK = 600.7) argos envía el retorno <strong>de</strong> carro (CR). El número <strong>de</strong> secuenciaavanza una posición.8) helios hace un eco <strong>de</strong>l CR y, asimismo, retorna otro CR seguido<strong>de</strong> un LF. Ello significa el envío <strong>de</strong> 3 bytes. Reconoce el CR,puesto que ACK = 40.ANOTACIONES159


ª FUOC • XP04/90786/00020Software libre9) argos reconoce estos tres caracteres.10) helios respon<strong>de</strong> a ‘ls’ enviando 55 <strong>de</strong> los 811 bytes que <strong>de</strong>be enviar.El número <strong>de</strong> secuencia avanza <strong>de</strong> 603 a 658. El ACK se mentienea 40.11) argos reconoce estos 55 bytes enviando un ACK <strong>de</strong> 659.12) helios transmite el resto <strong>de</strong> los 811 bytes, es <strong>de</strong>cir, 756 bytes.13) argos reconoce estos bytes avanzando el ACK a 1.414.Como po<strong>de</strong>mos observar en este ejemplo, el TCP divi<strong>de</strong> la informaciónque hay que enviar en dos segmentos: un segmento <strong>de</strong> 55bytes y otro <strong>de</strong> 756 bytes. Conviene remarcar que rlogin envía loscomandos carácter a carácter y que, a<strong>de</strong>más, la aplicación remotahace un eco <strong>de</strong> estos caracteres. Por ello, en las primeras líneas seenvía primero la ‘l’, <strong>de</strong>spués la ‘s’, a continuación el retorno <strong>de</strong> carro,etc. Lo que nos interesa <strong>de</strong> este ejemplo es ver cómo avanzanlas ventanas al emitir y al reconocer bytes. Por tanto, no justificaremospor qué rlogin retorna ecos, ni por qué aña<strong>de</strong> un carácter LFal retorno <strong>de</strong> carro.14.6.3. Temporizadores y retransmisionesEl TCP activa hasta cuatro temporizadores <strong>de</strong> diferente tipo paraconseguir una entrega fiable <strong>de</strong> la información. En este subapartadonos centraremos únicamente en el temporizador <strong>de</strong> retransmisioneso RTO (<strong>de</strong>l inglés, retransmission time out).ANOTACIONESConviene recordar que tanto los segmentos como los reconocimientosse pue<strong>de</strong>n per<strong>de</strong>r durante la transmisión, <strong>de</strong> manera quees preciso utilizar un temporizador <strong>de</strong> retransmisiones.Como ya hemos mencionado, el temporizador se programa cadavez que se recibe un reconocimiento, o bien cuando salta porqueel reconocimiento no ha llegado a tiempo (o, simplemente, no hallegado).160


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Definimos el tiempo <strong>de</strong> ida y vuelta o RTT (<strong>de</strong>l inglés,round trip time) como el tiempo que transcurre <strong>de</strong>s<strong>de</strong>que se transmite un segmento, hasta que es reconocido(el ACK vuelve al transmisor). El RTT se pue<strong>de</strong> medirrestando el instante en que el TCP transmisor emite elsegmento y el instante en que recibe el ACK.Lo más lógico sería activar el temporizador <strong>de</strong> retransmisión en eltiempo <strong>de</strong> ida y vuelta (RTO = RTT). Sin embargo, es evi<strong>de</strong>nte quelos retardos que experimentan los segmentos son variables: si seactiva el RTO en el RTT que ha experimentado el segmento anterior,no se pue<strong>de</strong> asegurar que este segmento no tenga un retardosuperior y que el temporizador no salte antes <strong>de</strong> tiempo. Por otraparte, si el temporizador se programa a un valor mucho mayorque RR, cada vez que haya una pérdida estaremos esperando enbal<strong>de</strong> un buen rato, con la consiguiente pérdida <strong>de</strong> eficiencia.Existen diferentes alternativas para programar el temporizador,todas orientadas a encontrar un valor a<strong>de</strong>cuado <strong>de</strong> RTT; es <strong>de</strong>cir,que no sea <strong>de</strong>masiado corto ni <strong>de</strong>masiado largo.Lectura complementariaPodéis encontrar los diferentesalgoritmos propuestospara el cáculo <strong>de</strong> RTT enla obra siguiente:W.R. Stevens (1994)"The protocols". TCP/IPllustrated (vol. 1) Willmington:Addison-Wesley.ANOTACIONES161


IV. Aplicaciones Internet


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002015. El mo<strong>de</strong>lo cliente/servidorLas re<strong>de</strong>s <strong>de</strong> <strong>computadores</strong> han hecho aparecer un concepto nuevoen el mundo <strong>de</strong> la programación: la programación distribuida. Conesta última se preten<strong>de</strong> aprovechar la potencia y los recursos <strong>de</strong> losor<strong>de</strong>nadores interconectados para llevar a cabo una tarea <strong>de</strong> formacooperativa.Una aplicación distribuida está formada por varios programas quese ejecutan en or<strong>de</strong>nadores diferentes y que se comunican por medio<strong>de</strong> la red que une a los or<strong>de</strong>nadores.Conviene <strong>de</strong>stacar que cada programa, por sí solo, nopue<strong>de</strong> hacer nada. Es necesaria la colaboración <strong>de</strong> todospara que la aplicación en conjunto produzca resultadosútiles.La cooperación <strong>de</strong> los diferentes trozos <strong>de</strong> código que forman la aplicación<strong>de</strong>be seguir un protocolo. Este último se pue<strong>de</strong> elaborar amedida para cada aplicación que se <strong>de</strong>sarrolle, o se pue<strong>de</strong> <strong>de</strong>finirun estándar que todo el mundo pueda seguir y así ahorrarse, <strong>de</strong> estemodo, los diseños particulares. Asimismo, la existencia <strong>de</strong> un protocoloestándar garantiza la posibilidad <strong>de</strong> interactuar con productos<strong>de</strong> diferentes fabricantes.Existen varios estándares <strong>de</strong> aplicaciones distribuidas; sin embargo,sin lugar a dudas, el que ha tenido más éxito es el que sigue el mo<strong>de</strong>locliente/servidor.En el mo<strong>de</strong>lo cliente/servidor, la aplicación se divi<strong>de</strong> endos partes, con dos roles claramente diferenciados:Servidor: ofrece un servicio que pue<strong>de</strong> ser el acceso aANOTACIONES165


ª FUOC • XP04/90786/00020Software libreun recurso, la ejecución <strong>de</strong> operaciones matemáticascomplejas, procesamiento <strong>de</strong> datos, etc.Cliente: realiza una petición al servidor y espera un resultado<strong>de</strong> la misma.Por norma general (al menos es lo que dice el mo<strong>de</strong>lo), los usuariosacce<strong>de</strong>n a la aplicación por medio <strong>de</strong>l cliente.Figura 72.El usuario <strong>de</strong> las aplicaciones pue<strong>de</strong> ser una persona, pero tambiénotra aplicación. En el primer caso, el cliente <strong>de</strong>be disponer <strong>de</strong> unainterfaz <strong>de</strong> usuario que permita el diálogo, canalizando las peticionesy mostrándole los resultados. En el segundo, el acceso se sueleimplementar con llamadas a funciones.El mo<strong>de</strong>lo se pue<strong>de</strong> complicar si se aña<strong>de</strong>n más entida<strong>de</strong>s a la aplicacióndistribuida. Veamos dos ejemplos:• Múltiples clientes:Figura 73.ANOTACIONESEl servidor <strong>de</strong>be estar preparado para recibirmúltiples conexiones, que pue<strong>de</strong>n ser simultáneas.166


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• Múltiples servidores:Figura 74.Varios servidores ofrecen servicios complementarios. Si el servidorno pue<strong>de</strong> satisfacer la petición <strong>de</strong>l cliente, pero está en contactocon otro servidor que sí que pue<strong>de</strong> hacerlo, entonces se losolicita.Los servidores pue<strong>de</strong>n dialogar entre sí con protocolos propios osiguiendo el mo<strong>de</strong>lo cliente/servidor.Des<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong>l cliente, esta multiplicidad <strong>de</strong> servidoreses completamente transparente: realiza una petición a un servidor yespera una respuesta <strong>de</strong>l mismo.Cuando diferentes servidores cooperan para ofrecer un servicio, hablamos<strong>de</strong> sistema servidor.La gran mayoría <strong>de</strong> las aplicaciones que se utilizan en Internet sigueneste mo<strong>de</strong>lo cliente/servidor. De aquí los nombres que se empleancon asiduidad: servidor web, cliente <strong>de</strong> correo, servicio <strong>de</strong>nombres, etc.aaaEl diseño <strong>de</strong> una aplicación distribuida que siga el mo<strong>de</strong>locliente/servidor incluye básicamente dos elementos:la especificación <strong>de</strong> los servicios que ofrece elservidor y la especificación <strong>de</strong>l protocolo <strong>de</strong> acceso,don<strong>de</strong> se <strong>de</strong>scribe cómo se pi<strong>de</strong>n estos servicios y cómo<strong>de</strong>be retornarse el resultado.ANOTACIONES167


ª FUOC • XP04/90786/00020Software libre15.1. El mo<strong>de</strong>lo peer-to-peerEl mo<strong>de</strong>lo cliente/servidor implica una cierta asimetría. Ten<strong>de</strong>mos aver los servidores como sistemas potentes que ofrecen sus servicios amáquinas mucho más sencillas, los clientes. El gran <strong>de</strong>sarrollo <strong>de</strong> Interneten su vertiente comercial ha contribuido a esta visión. Losusuarios <strong>de</strong> Internet, <strong>de</strong>s<strong>de</strong> sus PC, tienen un claro comportamiento<strong>de</strong> cliente, accediendo a páginas web alojadas en servidores remotos,o enviando correos electrónicos a otros usuarios.A medida que el uso <strong>de</strong> Internet ha madurado, los usuarios <strong>de</strong> la Redhan sentido la necesidad <strong>de</strong> <strong>de</strong>sempeñar un papel más activo, y convertirsus máquinas en servidores que otros puedan aprovechar, o<strong>de</strong>sarrollar nuevos mo<strong>de</strong>los <strong>de</strong> aplicación don<strong>de</strong> los roles no estántan claramente diferenciados. Uno <strong>de</strong> estos mo<strong>de</strong>los es el que se conocecomo peer-to-peer (‘<strong>de</strong> igual a igual’), y las aplicaciones mástípicas que siguen este mo<strong>de</strong>lo <strong>de</strong> comportamiento son los sistemas<strong>de</strong> compartición <strong>de</strong> archivos o la mensajería instantánea.NotaANOTACIONESNotaEl servicio DNS y el servicioNews (o Usenet o NNTP),presentes en Internet <strong>de</strong>s<strong>de</strong>sus inicios son claramentepeer-to-peer.Diferentes características <strong>de</strong> la Red que se han ido añadiendopor cuestiones <strong>de</strong> seguridad o <strong>de</strong> eficiencia <strong>de</strong> laRed están perjudicando mucho el <strong>de</strong>sarrollo <strong>de</strong> entornospeer-to-peer. Po<strong>de</strong>mos citar como las más paradigmáticaslos cortafuegos, las direcciones IP dinámicas, el NAT(Network Address Translation) y el ancho <strong>de</strong> banda asimétricoque ofrecen en muchos casos los proveedores <strong>de</strong>Internet en los dos sentidos <strong>de</strong> transmisión. La mayoría<strong>de</strong> aplicaciones intenta sobreponerse a estos obstáculoscon estrategias más o menos afortunadas. De todas formas,está claro que en un futuro tienen que cambiar cosasen el nivel <strong>de</strong> red para no limitar las enormesposibilida<strong>de</strong>s que tenemos en el nivel <strong>de</strong> aplicación.De hecho, Internet en su origen era peer-to-peer. Los primeros or<strong>de</strong>nadoresconecatodos a la Red eran parecidos, y una aplicacióncomo ftp permitía la transferencia <strong>de</strong> archivos entre cualesquiera<strong>de</strong> estas máquinas. Dicho <strong>de</strong> otra forma, que el protocolo que usa laaplicación siga el mo<strong>de</strong>lo cliente/servidor no es incompatible conque la red esté formada por or<strong>de</strong>nadores <strong>de</strong> potencia parecida y entreellos se vean como una red peer-to-peer.168


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Porque en el fondo, si analizamos como funcionan las aplicacionestípicas <strong>de</strong> entornos peer-to-peer, como el extinto Napster, o Gnutellao ICQ o Jabber, veríamos que siguen protocolos típicos cliente/servidor,tipo "yo te pido, tu me das". Lo que pasa es que en este tipo <strong>de</strong>entornos cualquiera pue<strong>de</strong> hacer a la vez <strong>de</strong> cliente y <strong>de</strong> servidor. Portanto, es erróneo consi<strong>de</strong>rar ambos mo<strong>de</strong>los excluyentes.Un sistema pue<strong>de</strong> ser peer-to-peer si presenta una ciertasimetría en el sentido que las diferentes máquinasque lo componen son parecidas y pue<strong>de</strong>n <strong>de</strong>sempeñarlos mismos roles, y usar un mo<strong>de</strong>lo cliente/servidor enel <strong>de</strong>sarrollo <strong>de</strong> las aplicaciones.Por otra parte, existen aplicaciones consi<strong>de</strong>radas peer-to-peer porquepermiten la comunicación directa entre iguales, pero que necesitan<strong>de</strong> un servidor externo (o varios) don<strong>de</strong> se centraliza el control<strong>de</strong> la red (Napster era un claro ejemplo <strong>de</strong> este mo<strong>de</strong>lo). Hay autoresque son reacios a consi<strong>de</strong>rar estos entornos realmente peer-to-peer,y prefieren guardar el término para aquellas re<strong>de</strong>s don<strong>de</strong> sólo intervienenlas máquinas propiedad <strong>de</strong> los propios usuarios. No es objetivo<strong>de</strong> este material didáctico entrar en esta discusión.ANOTACIONES169


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002016. Servicio <strong>de</strong> nombres InternetLa red Internet permite el acceso a una ingente cantidad <strong>de</strong> or<strong>de</strong>nadoresy, en general, <strong>de</strong> recursos, la mayoría <strong>de</strong> los cuales sepue<strong>de</strong>n referenciar mediante un nombre. Por motivos <strong>de</strong> eficienciay simplicidad (po<strong>de</strong>r saber con facilidad qué recurso correspon<strong>de</strong>a cada nombre, po<strong>de</strong>r asignar otros nuevos sin peligro <strong>de</strong>duplicida<strong>de</strong>s o ambigüeda<strong>de</strong>s, etc.), todos los nombres <strong>de</strong> la re<strong>de</strong>stán organizados <strong>de</strong> una manera jerárquica, formando un sistema<strong>de</strong> dominios.Para obtener información referida a cualquier nombre, se utiliza unservicio que, funcionalmente, es como una base <strong>de</strong> datos: se le hacenconsultas, que pue<strong>de</strong>n incluir una serie <strong>de</strong> criterios <strong>de</strong> selección,y respon<strong>de</strong> con la información solicitada. En un inicio, cuando el número<strong>de</strong> or<strong>de</strong>nadores conectados a la red era relativamente pequeño,esta base <strong>de</strong> datos era gestionada por una única autoridadcentral, el Network Information Center (NIC).A medida que se expandía la Red, este mo<strong>de</strong>lo <strong>de</strong> gestión se ibahaciendo cada vez más inviable, tanto por el enorme tráfico quegeneraban las consultas, como por la dificultad <strong>de</strong> mantener la informaciónactualizada. Fue entonces cuando nació el servicio <strong>de</strong>nombres <strong>de</strong> dominio (DNS), que sigue el mo<strong>de</strong>lo <strong>de</strong> una base <strong>de</strong> datosdistribuida <strong>de</strong>scentralizada.Si queréis más información sobre el DNS, podéis consultarlas obras siguientes:P.V. Mockapetris (1987,1 <strong>de</strong> noviembre). RFC 1034-Domain names - concepts and facilities.P.V. Mockapetris (1987, 1 <strong>de</strong> noviembre). RFC 1035-Domain names - implementation and specification.ANOTACIONES171


ª FUOC • XP04/90786/00020Software libreLa especificación <strong>de</strong>l DNS está contenida en los documentos RFC1034, que <strong>de</strong>fine los conceptos y la organización <strong>de</strong>l sistema <strong>de</strong>dominios, y RFC 1035, que <strong>de</strong>fine el protocolo <strong>de</strong> acceso al servicio.16.1. El sistema <strong>de</strong> nombres <strong>de</strong> dominioEl sistema <strong>de</strong> nombres <strong>de</strong> dominio, en que se basa el DNS, proporcionaun espacio <strong>de</strong> nombres para referenciar recursos, que por normageneral son or<strong>de</strong>nadores conectados a la red, pero que tambiénpue<strong>de</strong>n ser, por ejemplo, buzones <strong>de</strong> correo electrónico.En el sistema <strong>de</strong> nombres <strong>de</strong> dominio, los nombres estánorganizados jerárquicamente en forma <strong>de</strong> árbol.Cada nodo <strong>de</strong> este último tiene una etiqueta que lo distingue<strong>de</strong> sus nodos “hermanos”.El nombre <strong>de</strong> dominio correspondiente a un nodo se<strong>de</strong>fine como la secuencia formada por las etiquetasexistentes en el camino entre este nodo y la raíz.ANOTACIONESNotaA la hora <strong>de</strong> compararnombres, las letras mayúsculasy minúsculas se consi<strong>de</strong>ranequivalentes. Noobstante, para respon<strong>de</strong>rlas consultas, los servidoresDNS <strong>de</strong>ben enviar los nombrestal como están almacenadosen la base <strong>de</strong> datos,respetando las mayúsculasy minúsculas, en previsión<strong>de</strong>l caso <strong>de</strong> que en algunaversión futura <strong>de</strong>l servicio seconsi<strong>de</strong>ren diferentes.Cada etiqueta constituye una ca<strong>de</strong>na <strong>de</strong> caracteres <strong>de</strong> longitud comprendidaentre 0 y 63 caracteres. La etiqueta con longitud 0 está reservadapara el nodo raíz: ningún otro nodo pue<strong>de</strong> tener unaetiqueta vacía.El protocolo <strong>de</strong> acceso al DNS <strong>de</strong>fine el formato para representar losnombres <strong>de</strong> dominio cuando <strong>de</strong>ben enviarse en las consultas y lasrespuestas, como veremos más a<strong>de</strong>lante. Este formato no imponerestricciones en los caracteres que pue<strong>de</strong> haber en una etiqueta; sinembargo, establece una “sintaxis preferida” para facilitar las implementaciones<strong>de</strong> otros servicios. De acuerdo con esta última, los únicoscaracteres válidos en una etiqueta son las letras, mayúsculas ominúsculas, los dígitos <strong>de</strong>cimales y el símbolo “-”, con la excepción<strong>de</strong> que el primer carácter sólo pue<strong>de</strong> ser una letra, y el último no pue<strong>de</strong>ser “-”.172


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Aparte <strong>de</strong> la representación <strong>de</strong>finida en el protocolo, cuando se <strong>de</strong>seautilizar una notación textual para expresar un nombre <strong>de</strong> dominio,se sigue la convención <strong>de</strong> concatenar las etiquetas que lo forman, separándolascon el carácter “.”. En el or<strong>de</strong>n utilizado, las etiquetas van<strong>de</strong>s<strong>de</strong> el más bajo nivel jerárquico más bajo hasta el más alto. Portanto, la última etiqueta es la <strong>de</strong>l nodo raíz que, como acabamos <strong>de</strong>observar, está vacía, <strong>de</strong> manera que los nombres acaban en “.”,como en el ejemplo siguiente:campus.uoc.edu.Notad la presencia <strong>de</strong>l punto final.Este ejemplo es el que se <strong>de</strong>nomina un nombre <strong>de</strong> dominio absoluto,pero también pue<strong>de</strong>n utilizarse nombres relativos, referidosa un nodo origen implícito. Así, <strong>de</strong>ntro <strong>de</strong>l dominio uoc.edu.po<strong>de</strong>mos utilizar el nombre tibet para referirnos al nombre <strong>de</strong>dominio tibet.uoc.edu.. En numerosas ocasiones, el nodoorigen <strong>de</strong> los nombres relativos es la raíz, <strong>de</strong> manera que el ejemploanterior también pue<strong>de</strong> escribirse <strong>de</strong>l modo siguiente:campus.uoc.esNotaEn el Reino Unido antes erausual utilizar el or<strong>de</strong>n inversoen la representación textual<strong>de</strong> los nombres <strong>de</strong> dominio,por ejemplo:uk.ac.ic.doc.src en lugar<strong>de</strong> src.doc.ic.ac.uk;sin embargo, hoy día estacostumbre se encuentra en<strong>de</strong>suso.En un inicio, los TLD (top level domain , ‘dominios <strong>de</strong> nivel superior’);es <strong>de</strong>cir, los subordinados directamente a la raíz, se utilizabanpara agrupar los diferentes tipos <strong>de</strong> organizaciones a quepertenecían recursos como, por ejemplo, los que presentamos enla tabla siguiente:Tabla 6.Tipos <strong>de</strong> organizaciónEmpresas y organizaciones comercialesUniversida<strong>de</strong>s y centros educativosOrganismos gubernamentalesOrganizaciones militaresOtros tipos <strong>de</strong> organizacionesNombre <strong>de</strong>l dominiocomedugovmilorgNotaANOTACIONESEn estos momentos, el organismoencargado <strong>de</strong> gestionarlos dominios es laICANN. Podéis consultar suweb: http://www.icann.org.173


ª FUOC • XP04/90786/00020Software libreDes<strong>de</strong> entonces hasta la actualidad, se han ido añadiendo al nivelsuperior <strong>de</strong>l sistema <strong>de</strong> nombres los elementos siguientes:a) Por un lado, nuevas clases <strong>de</strong> organizaciones, como net (centrosrelacionados con la gestión <strong>de</strong> la red), int (organizaciones internacionales)o, más recientemente, biz, info, name, pro, aero,coop y museum.b) Por otro lado, cada país tiene asignado un nombre <strong>de</strong> dominioque coinci<strong>de</strong> con el código correspondiente <strong>de</strong> dos letras especificadoen el estándar ISO 3166, por ejemplo: es (España), fr(Francia), <strong>de</strong> (Alemania), etc. Lo que significa que, en realidad,las diferentes ramas <strong>de</strong>l árbol se pue<strong>de</strong>n encabalgar y, <strong>de</strong> hecho,hay nombres pertenecientes a diferentes dominios <strong>de</strong> alto nivelque correspon<strong>de</strong>n a una misma organización.Asimismo, es posible que un <strong>de</strong>terminado recurso (or<strong>de</strong>nador, buzón<strong>de</strong> correo, etc.) tenga asignados varios nombres, que pue<strong>de</strong>n estaren la misma rama <strong>de</strong>l árbol o en ramas completamente in<strong>de</strong>pendientes.En este caso, se consi<strong>de</strong>ra que uno <strong>de</strong> los nombres es el <strong>de</strong>nominadonombre canónico y los otros se <strong>de</strong>nominan alias.16.2. Mo<strong>de</strong>lo <strong>de</strong>l DNSLos agentes que intervienen en el DNS son los siguientes:ANOTACIONESNotaConsultad la <strong>de</strong>finición <strong>de</strong>sistema servidor en la unidad15.a) Los servidores, que reciben las consultas y envían las respuestascorrespondientes. A<strong>de</strong>más <strong>de</strong>l acceso directo a una base <strong>de</strong> datoslocal, en la que se encuentra una parte <strong>de</strong> la base <strong>de</strong> datos total<strong>de</strong>l sistema <strong>de</strong> nombres, el servidor tiene acceso indirecto al resto<strong>de</strong> la base <strong>de</strong> datos por medio <strong>de</strong> otros servidores. El conjunto <strong>de</strong>servidores DNS constituye, pues, un sistema servidor.b) Los resolvedores, que actúan como clientes <strong>de</strong>l servicio. Por normageneral, un resolvedor es un programa o una librería que recibepeticiones <strong>de</strong> las aplicaciones <strong>de</strong> usuario, las traduce aconsultas DNS y extrae <strong>de</strong> las respuestas la información solicitada.El resolvedor <strong>de</strong>be tener acceso directo al menos a un servidorDNS.174


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020NotaUtilización <strong>de</strong>l resolvedorUna aplicación que sirva para copiar ficheros almacenadosen otros or<strong>de</strong>nadores pue<strong>de</strong> aceptar que elusuario indique a qué or<strong>de</strong>nador <strong>de</strong>sea acce<strong>de</strong>r pormedio <strong>de</strong> su nombre. Por consiguiente, para po<strong>de</strong>rsecomunicar con él, la aplicación <strong>de</strong>berá realizar unallamada al resolvedor para obtener su dirección apartir <strong>de</strong>l nombre. Como la aplicación y el resolvedor,por lo general, se encontrarán ubicados en el mismosistema, no es necesario establecer ningún protocolo<strong>de</strong> comunicación entre ellos.Para hacer manejable la gestión y administración <strong>de</strong>l sistema <strong>de</strong>nombres <strong>de</strong> dominio, sus nodos están agrupados en zonas. Cadazona está formada por un nodo llamado superior y todos los que seencuentren en los niveles jerárquicamente inferiores hasta llegar alos nodos terminales (las hojas <strong>de</strong>l árbol) o a nodos <strong>de</strong> otras zonasque sean superiores.La figura siguiente muestra un ejemplo <strong>de</strong> división <strong>de</strong> un árbol encuatro zonas:Figura 75.NotaComo cada zona se suele<strong>de</strong>nominar con el nombre<strong>de</strong> dominio <strong>de</strong> su nodo superior,po<strong>de</strong>mos <strong>de</strong>cir quelas zonas <strong>de</strong> la figura son A,B.A, C.A e I.C.A.El objetivo <strong>de</strong> agrupar los nodos en zonas consiste en asignar a una autoridadla responsabilidad <strong>de</strong> gestionar todos los nodos <strong>de</strong> cada zona.ANOTACIONES175


ª FUOC • XP04/90786/00020Software libreEl administrador <strong>de</strong>signado para esta autoridad pue<strong>de</strong> añadir o borrarnodos <strong>de</strong>ntro <strong>de</strong> su zona, modificar la información <strong>de</strong> sus nodos o crearnuevas subzonas y <strong>de</strong>legar su gestión en otras autorida<strong>de</strong>s.EjemploUna zona pue<strong>de</strong> correspon<strong>de</strong>ra un país y sus subzonaspue<strong>de</strong>n correspon<strong>de</strong>r a organizaciones<strong>de</strong> este país.Cada organización, a suvez, pue<strong>de</strong> crear subzonaspara diferentes <strong>de</strong>partamentos,etc.La información referida a una zona <strong>de</strong>be estar almacenada en la base<strong>de</strong> datos local <strong>de</strong> un servidor, <strong>de</strong>l que se dice que es un servidor con autoridadsobre esta zona. Este último pue<strong>de</strong> contestar directamente lasconsultas que reciba sobre los nodos <strong>de</strong> su zona, sin necesidad <strong>de</strong> acce<strong>de</strong>ra otros servidores. Es <strong>de</strong>cir, en este caso, el servidor enviará respuestascon autoridad.Si una consulta se refiere a otra zona, existen dos maneras posibles <strong>de</strong>generar la respuesta:• En el modo no recursivo, la respuesta únicamente incluye una referenciaa algún servidor que pue<strong>de</strong> proporcionar más información. Elcliente <strong>de</strong>be preocuparse <strong>de</strong> continuar realizando consultas hastaencontrar la respuesta <strong>de</strong>finitiva.• Si el cliente solicita el modo recursivo, es el servidor quien se ocupa<strong>de</strong> buscar la información don<strong>de</strong> sea preciso, y sólo pue<strong>de</strong> retornar larespuesta final o un error, pero no referencias a otros servidores.La especificación DNS establece que todos los servidores <strong>de</strong>ben soportarel modo no recursivo, y que el modo recursivo es opcional, aunqueen la práctica, la mayoría <strong>de</strong> las consultas <strong>de</strong> los clientes son en modorecursivo.ANOTACIONESCuando un servidor <strong>de</strong>be respon<strong>de</strong>r a una consulta en modo recursivo,pi<strong>de</strong> la información a otros servidores y envía la respuestarecibida a quien ha realizado la consulta. Es habitual que el servidorañada la información obtenida a su base <strong>de</strong> datos, en lo quese <strong>de</strong>nomina caché. De este modo, si recibe otra consulta (<strong>de</strong>lmismo cliente o <strong>de</strong> otro) en la que se solicita la misma información,no será necesario que se la pida <strong>de</strong> nuevo a otros servidores,sino que pue<strong>de</strong> aprovechar la ya existente en la caché. Sin embargo,es posible que los datos se hayan modificado en el servidor<strong>de</strong> origen <strong>de</strong>s<strong>de</strong> que se solicitaron por primera vez. En este caso,pues, el servidor <strong>de</strong>be avisar al cliente <strong>de</strong> que le envía una res-176


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020puesta sin autoridad. Por otro lado, los resolvedores también suelenguardar en una caché propia las respuestas que reciben <strong>de</strong> losservidores.Para ofrecer una alta fiabilidad en el servicio, la especificación DNSrequiere que para cada zona haya como mínimo dos servidores conautoridad que, por norma general, respon<strong>de</strong>n a las siguientes funciones:a) Uno actúa como servidor primario y guarda los ficheros originales<strong>de</strong> la base <strong>de</strong> datos correspondiente a la zona; es <strong>de</strong>cir, aquellosque el administrador <strong>de</strong>be actualizar directamente cada vezque haya una modificación en sus nodos.b) Los otros actúan como servidores secundarios y actualizan automáticamentesus bases <strong>de</strong> datos a partir <strong>de</strong> la <strong>de</strong>l primario; porejemplo, por medio <strong>de</strong> consultas periódicas para saber si se haproducido algún cambio. De este modo, si un servidor primarioestá temporalmente inaccesible (por una caída <strong>de</strong> la red, <strong>de</strong>l mismoservidor, etc.), los clientes pue<strong>de</strong>n enviar sus consultas a uno<strong>de</strong> los servidores secundarios.NotaEn el argot DNS, refrescarlos datos significa actualizarlosrealizando consultasperiódicas.La figura siguiente muestra una posible configuración <strong>de</strong>l servicioDNS en un or<strong>de</strong>nador:Figura 76.En la práctica, se pue<strong>de</strong>n encontrar muchas variantes <strong>de</strong> este esquema;por ejemplo, que el servidor DNS se encuentre en el mismo or<strong>de</strong>nadorque el resolvedor y que ambos compartan la caché, que elresolvedor tenga acceso a diferentes servidores DNS, etc.ANOTACIONES177


ª FUOC • XP04/90786/00020Software libre16.3. Base <strong>de</strong> datos DNS: los registros <strong>de</strong> recursoComo hemos visto en los subapartados anteriores, un nombre <strong>de</strong>lsistema <strong>de</strong> dominios i<strong>de</strong>ntifica un nodo, y para cada nodo pue<strong>de</strong> habercierta información almacenada en los servidores correspondientes.El objetivo <strong>de</strong>l servicio DNS consiste en permitir la obtención <strong>de</strong>dicha información a partir <strong>de</strong>l nombre <strong>de</strong> dominio.La información asociada a un nodo consta <strong>de</strong> un conjunto<strong>de</strong> registros <strong>de</strong> recurso. Los registros <strong>de</strong> recurso <strong>de</strong>todos los nodos forman la base <strong>de</strong> datos DNS.Cada registro <strong>de</strong> recurso consta <strong>de</strong> los campos siguientes, que se explicana continuación:• Nombre.• Tipo.• Clase.• Tiempo <strong>de</strong> vida.• Datos <strong>de</strong>l recurso.a) Nombre. Contiene el nombre <strong>de</strong> dominio <strong>de</strong>l nodo al que estáasociado el registro.b) Tipo. Indica qué tipo <strong>de</strong> información contiene el registro. Los valoresque po<strong>de</strong>mos encontrar en este campo y los tipos <strong>de</strong> informaciónque representan son los siguientes:ANOTACIONES• A: dirección <strong>de</strong> un or<strong>de</strong>nador.• CNAME: nombre canónico <strong>de</strong> un alias.• HINFO: información sobre el tipo <strong>de</strong> or<strong>de</strong>nador.• MX (Mail eXchanger): nombre <strong>de</strong> un servidor <strong>de</strong> correo electrónicopara un dominio.• NS: nombre <strong>de</strong> un servidor DNS con autoridad para una zona.• PTR: nombre <strong>de</strong> un dominio que contiene información relacionadacon un nodo.• SOA (Start Of Authority): información sobre el nodo superior <strong>de</strong>una zona.178


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Otros valores posibles <strong>de</strong>l campo Tipo son los siguientes:• MB: nombre <strong>de</strong> un buzón <strong>de</strong> correo.• MG: miembro <strong>de</strong> un grupo <strong>de</strong> correo.• MR: nombre nuevo <strong>de</strong> un buzón <strong>de</strong> correo.• MINFO: información sobre un buzón o una lista <strong>de</strong> distribución <strong>de</strong>correo.• WKS (Well Known Services): lista <strong>de</strong> servicios que proporciona unor<strong>de</strong>nador.• TXT: texto <strong>de</strong>scriptivo.• NULL: registro vacío.c) Clase. Indica la familia <strong>de</strong> protocolos utilizada en el espacio <strong>de</strong>nombres. Por norma general, será la familia <strong>de</strong> protocolos Internet,pero pue<strong>de</strong> haber otros.d) Tiempo <strong>de</strong> vida (TTL). Indica el tiempo máximo que un servidoro un resolvedor pue<strong>de</strong> guardar el registro en su caché.e) Datos <strong>de</strong>l recurso (RDATA). El valor <strong>de</strong> este campo <strong>de</strong>pen<strong>de</strong> <strong>de</strong>ltipo <strong>de</strong> registro:• Si el registro es <strong>de</strong> tipo A, en la clase Internet, el valor es un número<strong>de</strong> 32 bits que correspon<strong>de</strong> a una dirección IP.• Si el registro es <strong>de</strong> tipo CNAME, el valor es un nombre <strong>de</strong> dominioque correspon<strong>de</strong> al nombre canónico <strong>de</strong>l alias asociado con el registro.Si un nodo <strong>de</strong>l árbol <strong>de</strong> nombres es un alias, la única informaciónque pue<strong>de</strong> tener asociada es un registro CNAME.• Si el registro es <strong>de</strong> tipo HINFO, el valor es una ca<strong>de</strong>na <strong>de</strong> caracteres.• Si el registro es <strong>de</strong> tipo MX, el valor tiene dos subcampos, el primeroes un número que representa una preferencia (cuanto menores el número, más preferencia) y el segundo es el nombre <strong>de</strong>un or<strong>de</strong>nador que está dispuesto a aceptar mensajes <strong>de</strong>stinadosal dominio correspondiente al registro.NotaEl sistema <strong>de</strong> nombres <strong>de</strong>dominio proporciona unconjunto <strong>de</strong> espacios <strong>de</strong>nombres, uno para cadaclase, todos sobre un mismoárbol. Los datos correspondientesa un nodo en unaclase pue<strong>de</strong>n ser diferentes<strong>de</strong> las <strong>de</strong>l mismo nodo enotra clase (un nodo pue<strong>de</strong>no tener ningún registro <strong>de</strong>recurso <strong>de</strong> alguna clase),puesto que las bases <strong>de</strong> datos(como las divisiones enzonas) son separadas e in<strong>de</strong>pendientes.ANOTACIONES179


ª FUOC • XP04/90786/00020Software libreNotaEl estándar RFC 974 especifica cómo <strong>de</strong>ben utilizarselos registros MX para direccionar un mensaje <strong>de</strong> correoelectrónico dada la dirección <strong>de</strong>l <strong>de</strong>stinatario (porejemplo, usuari@uoc.edu). De esta dirección se separaa parte correspondiente al dominio <strong>de</strong> correo(uoc.edu), se consulta el sistema DNS para saberqué servidores aceptan correo para este dominio y seelige uno teniendo en cuenta su preferencia. Si la comunicacióncon este servidor no tiene éxito, se intentacon los otros por or<strong>de</strong>n <strong>de</strong> preferencia.Si no hay ningún registro MX asociado al dominio, seentien<strong>de</strong> que sólo dispone <strong>de</strong> un servidor <strong>de</strong> correo: elor<strong>de</strong>nador que tenga por nombre el <strong>de</strong>l dominio.• Si el registro es <strong>de</strong> tipo NS, el valor es un nombre <strong>de</strong> or<strong>de</strong>nador.• Si el registro es <strong>de</strong> tipo PTR, el valor es un nombre <strong>de</strong> dominio.NotaCada nodo que sea el superior<strong>de</strong> una zona <strong>de</strong>be tenerasociado un registro SOA.Nota• Si el registro es <strong>de</strong> tipo SOA, el valor <strong>de</strong>l campo RDATA en un registro<strong>de</strong> este tipo está formado por los siete subcampos siguientes:– MNAME: nombre <strong>de</strong>l servidor primario <strong>de</strong> la zona.– RNAME: nombre <strong>de</strong> dominio correspondiente al buzón <strong>de</strong>l responsable<strong>de</strong> la zona.ANOTACIONESEl nombre <strong>de</strong>l buzón pue<strong>de</strong>expresarse como un nombre<strong>de</strong> dominio siguiendo lasintaxis general <strong>de</strong> separarlos nombres <strong>de</strong> los nodoscon “.” (en este caso, la partecorrespondiente al usuariosería el nodo inferior).Por ejemplo, en el buzónusuari@uoc.edu le correspon<strong>de</strong>el nombre <strong>de</strong> dominiousuari.uoc.edu.– SERIAL: número que <strong>de</strong>be aumentarse cada vez que hayauna modificación en los datos <strong>de</strong> la zona.– REFRESH: tiempo que <strong>de</strong>be transcurrir para que los servidoressecundarios refresquen sus datos.– RETRY: tiempo que es preciso esperar para volver a intentarun refresco si no se ha conseguido contactar con el servidorprimario.– EXPIRE: tiempo máximo a partir <strong>de</strong>l cual los datos <strong>de</strong> un servidorsecundario se consi<strong>de</strong>rarán sin autoridad si no se han refrescado.– MINIMUM: valor mínimo <strong>de</strong>l campo TTL en los registros <strong>de</strong> lazona.180


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020NotaRefresco <strong>de</strong> una zona en un servidor secundarioEl proceso <strong>de</strong> refresco <strong>de</strong> una zona en un servidor secundarioconsiste en pedir al primario su registro SOAy comprobar si ha variado el campo SERIAL. Si havariado, es preciso llevar a cabo una transferencia <strong>de</strong>los datos <strong>de</strong> la zona (por ejemplo, con una peticiónAXFR <strong>de</strong>l protocolo DNS, por medio <strong>de</strong>l protocoloFTP, etc.) y, si no, no es necesario hacer nada.El protocolo <strong>de</strong> acceso al DNS, como veremos en el subapartado siguiente,<strong>de</strong>fine el formato <strong>de</strong> representación <strong>de</strong> los registros <strong>de</strong> recursoen las respuestas <strong>de</strong> los servidores. Sin embargo, también eshabitual utilizar una representación textual; por ejemplo, en los ficheros<strong>de</strong> la base <strong>de</strong> datos que el administrador <strong>de</strong> una zona pue<strong>de</strong> editary actualizar. La sintaxis típica <strong>de</strong> esta representación textual es lasiguiente:[nombre] ( [clase] [TTL] | [TTL] [clase] ) tipo RDATACada registro se escribe en una línea; sin embargo, si es <strong>de</strong>masiadolargo, se pue<strong>de</strong>n utilizar paréntesis, <strong>de</strong>ntro <strong>de</strong> los cuales seignoran los saltos <strong>de</strong> línea. El símbolo “;” sirve para introducircomentarios en el mismo. El campo Nombre es opcional (por <strong>de</strong>fectose toma el <strong>de</strong>l registro anterior), como también lo son clase(el valor <strong>de</strong>l campo clase, por norma general, es IN, quecorrespoon<strong>de</strong> a la clase Internet) y TTL, que se pue<strong>de</strong>n escribiren cualquier or<strong>de</strong>n. Los campos que representan dominios pue<strong>de</strong>nser absolutos (acabados en “.”) o relativos (respecto a unorigen preestablecido), y los que representan tiempo se expresanen segundos.El campo Nombre pue<strong>de</strong> empezar con la etiqueta “*” para indicarque la información <strong>de</strong>l registro se aplica a los dominios que tengancualquier etiqueta o secuencia <strong>de</strong> etiquetas en el lugar <strong>de</strong>l “*”y no figuren en ningún otro registro.ANOTACIONES181


ª FUOC • XP04/90786/00020Software libreNotaLíneas <strong>de</strong>l fichero <strong>de</strong> datos <strong>de</strong> un servidor acme.comÉstas podrían ser algunas líneas <strong>de</strong>l fichero <strong>de</strong> datos <strong>de</strong> unhipotético servidor <strong>de</strong> la zona acme.com:acme.com. IN SOA servidor.acme.com. admin.acme.com. (38 ; SERIAL7200 ; REFRESH600 ; RETRY3600000 ; EXPIRE60 ) ; MINIMUMNS servidor.acme.com.NS servidor2.acme.com.NS dns.competencia.com.MX 10 correo.acme.com.MX 20 servidor.acme.com.*.acme.com.MX 10 correo.acme.com.servidor.acme.com. A 128.52.46.32A 128.32.11.99servidor2.acme.com. A 128.52.46.33correo.acme.com. A 128.52.46.34Un uso habitual <strong>de</strong> los registros PTR es facilitar la obtención <strong>de</strong>l nombre<strong>de</strong> un or<strong>de</strong>nador a partir <strong>de</strong> su dirección por medio <strong>de</strong> un dominio especial<strong>de</strong>nominado IN-ADDR.ARPA. El DNS proporciona una operaciónpara efectuar consultas inversas; es <strong>de</strong>cir, dado un registro, retornael nombre <strong>de</strong> dominio a que correspon<strong>de</strong>. Sin embargo, esta operaciónpue<strong>de</strong> ser muy costosa para el servidor, y no se pue<strong>de</strong> garantizar que larespuesta sea única o completa, puesto que pue<strong>de</strong> haber otros servidoresque contengan información relacionada.No obstante, como la traducción <strong>de</strong> direcciones IP a nombres es útil e,incluso, necesaria, en algunos protocolos (por ejemplo, rlogin y rsh) seha adoptado un mecanismo para facilitarla que consiste en introducirregistros adicionales que actúan como índice. De este modo, cada vezque se modifica una dirección en la base <strong>de</strong> datos DNS, o se aña<strong>de</strong> una,es necesario actualizar dos registros:ANOTACIONES• El registro A que tiene por nombre el <strong>de</strong>l or<strong>de</strong>nador.• Un registro PTR que tiene un nombre perteneciente al dominioIN-ADDR.ARPA.Los nombres <strong>de</strong>l dominio IN-ADDR.ARPA pue<strong>de</strong>n tener hasta cuatroetiquetas (sin contar IN-ADDR y ARPA), que representan los valoresposibles <strong>de</strong> los bytes <strong>de</strong> una dirección IP en <strong>de</strong>cimal, entre 0 y255. De estas etiquetas, la <strong>de</strong> nivel más alto correspon<strong>de</strong> al primer182


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020byte <strong>de</strong> la dirección, y la <strong>de</strong> nivel más bajo, al último byte. De estemodo, se pue<strong>de</strong> tener una estructura <strong>de</strong> zonas y autorida<strong>de</strong>s <strong>de</strong>legadassimilar a la <strong>de</strong>l resto <strong>de</strong> los dominios. Un nombre <strong>de</strong>l dominioIN-ADDR.ARPA que posea las cuatro etiquetas numéricas correspon<strong>de</strong>ráa la dirección <strong>de</strong> un or<strong>de</strong>nador, y se le asociará un registroPTR que apunte al nombre <strong>de</strong> este or<strong>de</strong>nador. Los nombres que dispongan<strong>de</strong> menos <strong>de</strong> cuatro etiquetas numéricas serán direcciones<strong>de</strong> re<strong>de</strong>s y podrán tener asociados registros PTR apuntando al nombre<strong>de</strong> las pasarelas conectadas a estas re<strong>de</strong>s.NotaRegistros <strong>de</strong> traducciónSiguiendo el ejemplo anterior, los registros <strong>de</strong>l dominio IN-ADDR.ARPA siguientes podrían servir para llevar a cabo latraducción <strong>de</strong> direcciones a nombres:NotaLos nombres <strong>de</strong>l dominioIN-ADDR.ARPA son unaexcepción a la sintaxis preferidapara las etiquetas,puesto que <strong>de</strong>ben empezarcon un dígito.32.46.52.128.IN-ADDR.ARPA. PTR servidor.acme.com.33.46.52.128.IN-ADDR.ARPA. PTR servidor2.acme.com.34.46.52.128.IN-ADDR.ARPA. PTR correo.acme.com.99.11.32.128.IN-ADDR.ARPA. PTR servidor.acme.com.46.52.128.IN-ADDR.ARPA. NS servidor.acme.com.NS servidor2.acme.com.PTR servidor.acme.com.11.32.128.IN-ADDR.ARPA. NS servidor.acme.com.NS servidor2.acme.com.PTR servidor.acme.com.16.4. Protocolo16.4.1. Mecanismos <strong>de</strong> transportePara acce<strong>de</strong>r al DNS se pue<strong>de</strong>n utilizar los protocolos <strong>de</strong> transporte UDPo TCP. Por norma general, se utiliza UDP en las consultas <strong>de</strong> los clientes,por su simplicidad y por los pocos recursos que requiere. Si no llega larespuesta a un datagrama en un tiempo <strong>de</strong>terminado, simplemente seretransmite (hasta que haya transcurrido un tiempo máximo). En cambio,se utiliza TCP cuando conviene asegurar una transmisión fiable; porejemplo, en las transferencias <strong>de</strong> datos <strong>de</strong> una zona <strong>de</strong> un servidor aotro. Tanto en un caso como en el otro, el número <strong>de</strong> puerto utilizadoes el 53.ANOTACIONES183


ª FUOC • XP04/90786/00020Software libreLas consultas y las respuestas se intercambian por medio <strong>de</strong> mensajes,cuyo formato <strong>de</strong>pen<strong>de</strong> <strong>de</strong>l protocolo que se utilice:• En UDP, cada mensaje se envía en un datagrama, con una longitudmáxima <strong>de</strong> 512 bytes.• En TCP, los mensajes se envían prefijados con 2 bytes, que indicansu longitud, para saber dón<strong>de</strong> acaban, puesto que lo más normal esintercambiar más <strong>de</strong> uno utilizando una misma conexión.16.4.2. MensajesEl esquema siguiente muestra la estructura <strong>de</strong> un mensaje DNS:Figura 77.ANOTACIONESCada mensaje está formado por una cabecera y cuatro secciones(pregunta, respuesta, autoridad e información adicional).La cabecera consta <strong>de</strong> los campos siguientes:• ID es un número <strong>de</strong> 16 bits que asigna quién realiza la consultay que se copia en la respuesta para que se sepa a qué consultacorrespon<strong>de</strong>.184


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• QR (Query/Response) es un bit que indica si el mensaje es una consulta(0) o una respuesta (1).• OPCODE es un código <strong>de</strong> operación <strong>de</strong> 4 bits. En la actualidad,hay <strong>de</strong>finidos los <strong>de</strong> consulta directa (QUERY, código 0), consultainversa (IQUERY, código 1) y petición <strong>de</strong> estatus (STATUS, código 2).Por norma general, el valor <strong>de</strong> este campo será QUERY, puestoque la operación IQUERY es opcional y poco soportada, y la operaciónSTATUS no está <strong>de</strong>finida en la especificación RFC 1034.• AA (Authoritative Answer) es un bit que informa <strong>de</strong> que el mensajees una respuesta con autoridad.• TC (Truncation) es un bit que avisa que el mensaje se ha truncadoporque no cabe en un datagrama. Para saber cuál es sucontenido completo, es preciso utilizar el protocolo TCP.• RD (Recursion Desired) es un bit que indica que el cliente solicitarespuesta en modo recursivo.• RA (Recursion Available) es un bit que informa <strong>de</strong> que el servidorsoporta el modo recursivo. Si los bits RD y RA valen 1, el mensajees una respuesta recursiva.• RCODE es un código <strong>de</strong> respuesta <strong>de</strong> 4 bits. Los códigos posiblesson: ningún error (0), error <strong>de</strong> formato (1), error interno<strong>de</strong>l servidor (2), dominio inexistente (3), operación no implementada(4) o consulta rechazada (5).• QDCOUNT, ANCOUNT, NSCOUNT, ARCOUNT son números <strong>de</strong>16 bits que indican cuántas entradas hay en cada sección <strong>de</strong>lmensaje: pregunta, respuesta, autoridad e información adicional,respectivamente.Sección <strong>de</strong> preguntaLos mensajes correspondientes a las consultas dispondrán <strong>de</strong> una omás entradas (por lo general, una) en la sección <strong>de</strong> pregunta. Cadaentrada está formada por tres campos:• QNAME: nombre <strong>de</strong> dominio <strong>de</strong>l que el cliente <strong>de</strong>sea obtener información.ANOTACIONES185


ª FUOC • XP04/90786/00020Software libre• QTYPE: número <strong>de</strong> 16 bits que indica el tipo <strong>de</strong> registro <strong>de</strong> recursoque el cliente quiere obtener como respuesta. El valor <strong>de</strong>dicho campo pue<strong>de</strong> ser cualquiera <strong>de</strong> los números que pue<strong>de</strong>nencontrarse en el campo TYPE <strong>de</strong> un registro, o uno <strong>de</strong> los siguientes:– XFR (código 252): se utiliza para solicitar la transferencia <strong>de</strong>todos los registros <strong>de</strong> una zona (cuando un servidor secundarioquiere refrescar su base <strong>de</strong> datos).– MAILB (código 253): sirve para solicitar todos los registros relacionadoscon buzones (MB, MG y MR).– * (código 255): sirve para pedir todos los registros <strong>de</strong> cualquiertipo correspondientes a un nombre.• QCLASS: número <strong>de</strong> 16 bits que indica la clase <strong>de</strong> registros <strong>de</strong>seados.Su valor pue<strong>de</strong> ser el <strong>de</strong>l campo CLASS <strong>de</strong> los registros o el valorespecial “*” (código 255), que representa todas las clases.Sección <strong>de</strong> respuestaLos mensajes correspondientes a las respuestas contienen en la sección<strong>de</strong> respuesta el conjunto <strong>de</strong> registros <strong>de</strong> recurso que satisfacenlos criterios dados por los campos <strong>de</strong> la consulta. Es <strong>de</strong>cir, el servidorenvía en la respuesta los registros correspondientes al nombre solicitadoque concuerdan con el tipo o con los tipos requeridos y en laclase o clases requeridas.ANOTACIONESUn caso especial es el <strong>de</strong> los alias. Si el nombre solicitado correspon<strong>de</strong>a un alias y el campo QTYPE es diferente <strong>de</strong> CNAME, el servidor<strong>de</strong>be repetir automáticamente la consulta sustituyendo el nombreoriginal por el nombre canónico. De este modo, el cliente obtendrádirectamente los datos <strong>de</strong>seados tanto si utiliza un alias, como si empleael nombre canónico.La respuesta a una petición AXFR consistirá en una secuencia <strong>de</strong>mensajes. El primero <strong>de</strong>be contener el registro SOA <strong>de</strong> la zona; enlos siguientes <strong>de</strong>ben encontrarse el resto <strong>de</strong> los registros, y el último<strong>de</strong>be ser otra vez el registro SOA, para que el receptor sepa que yaha acabado la transferencia.186


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Sección <strong>de</strong> autoridadEn una respuesta, la sección <strong>de</strong> autoridad pue<strong>de</strong> contener registrosque referencien un servidor con autoridad para respon<strong>de</strong>r la consulta(para el caso <strong>de</strong> las respuestas en modo no recursivo).Sección <strong>de</strong> información adicionalLa sección <strong>de</strong> información adicional pue<strong>de</strong> contener otros registros<strong>de</strong> recurso relacionados con la consulta, pero que no forman parte <strong>de</strong>la respuesta.16.4.3. Representación <strong>de</strong> los registros <strong>de</strong> recursoCuando un mensaje <strong>de</strong>be contener una ca<strong>de</strong>na <strong>de</strong> caracteres, serepresenta por medio <strong>de</strong> 1 byte, que indica su longitud y, a continuación,los caracteres <strong>de</strong> la ca<strong>de</strong>na. Un nombre <strong>de</strong> dominio serepresenta como una concatenación <strong>de</strong> ca<strong>de</strong>nas, una para cadauna <strong>de</strong> las etiquetas que lo forman. Como los nombres <strong>de</strong> dominioacaban con la etiqueta <strong>de</strong>l nodo raíz, una ca<strong>de</strong>na que tengapor longitud 0 (y, por tanto, ningún carácter a continuación) indicael final <strong>de</strong>l nombre. Para simplificar la implementación <strong>de</strong>l servicio,la especificación RFC 1035 requiere que la longitud total <strong>de</strong>un nombre <strong>de</strong> dominio no sea superior a 255 bytes.NotaRepresentación comprimida <strong>de</strong> los nombres <strong>de</strong>dominioLa especificación RFC 1035 también <strong>de</strong>fine una representacióncomprimida <strong>de</strong> los nombres <strong>de</strong> dominio cuandohay muchos iguales, o que acaban igual, en unmensaje (como es el caso <strong>de</strong> los que contienen registrosSOA). En lugar <strong>de</strong> una etiqueta, en un nombre pue<strong>de</strong> haber1 byte con los 2 bits <strong>de</strong> más peso a 1 (por tanto, nose pue<strong>de</strong> confundir con la longitud <strong>de</strong> una etiqueta, quecomo máximo pue<strong>de</strong> ser 63). Los otros 6 bits y los 8 <strong>de</strong>lbyte siguiente indican una posición <strong>de</strong>ntro <strong>de</strong>l mensajeen que se encuentra la continuación <strong>de</strong>l nombre.ANOTACIONES187


ª FUOC • XP04/90786/00020Software libreLa representación <strong>de</strong> los registros <strong>de</strong> recurso que pue<strong>de</strong>n apareceren las secciones <strong>de</strong> respuesta, autoridad e información adicional sigueel formato siguiente:Figura 78.Los campos que forman los registros <strong>de</strong> recurso <strong>de</strong>ntro <strong>de</strong> los mensajesDNS son los siguientes:• El campo NAME es el nombre <strong>de</strong> dominio correspondiente al registro.• El campo TYPE es un número <strong>de</strong> 16 bits que indica el tipo <strong>de</strong>registro, según la tabla siguiente:Tabla 7.ANOTACIONESNúmeroTipo <strong>de</strong> registro1 A2 NS5 CNAME6 SOA7 MB8 MG9 MR10 NULL11 WKS12 PTR13 HINFO14 MINFO15 MX16 TXT188


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• El campo CLASS es un número <strong>de</strong> 16 bits que indica la clase <strong>de</strong>lregistro. Por norma general, su valor es 1, que correspon<strong>de</strong> a laclase Internet.• El campo TTL es un número <strong>de</strong> 32 bits que indica el tiempo <strong>de</strong>vida <strong>de</strong>l registro en segundos.• El campo RDLENGTH es un número <strong>de</strong> 16 bits que indica cuántosbytes hay en el campo RDATA.• El campo RDATA contiene los datos <strong>de</strong>l registro, y su formato <strong>de</strong>pen<strong>de</strong><strong>de</strong>l valor <strong>de</strong>l campo TYPE:– En los registros A (<strong>de</strong> la clase Internet), es un número <strong>de</strong> 32 bits.– En los registros CNAME, NS, PTR, MB, MG y MR, es un nombre<strong>de</strong> dominio.– En los registros SOA, es una secuencia <strong>de</strong> dos nombres <strong>de</strong> dominio(MNAME y RNAME) seguida <strong>de</strong> cinco números <strong>de</strong> 32 bits(SERIAL, REFRESH, RETRY, EXPIRE y MINIMUM).– En los registros MX, es un entero <strong>de</strong> 16 bits (la preferencia) seguido<strong>de</strong> un nombre <strong>de</strong> dominio.– En los registros HINFO, es la concatenación <strong>de</strong> dos ca<strong>de</strong>nas <strong>de</strong>caracteres. La primera indica el tipo <strong>de</strong> UCP <strong>de</strong>l or<strong>de</strong>nador, yla segunda, el sistema operativo.– En los registros WKS, es un número <strong>de</strong> 32 bits, como en los registrosA, seguido <strong>de</strong> un número <strong>de</strong> 8 bits que i<strong>de</strong>ntifica unprotocolo (por ejemplo, 6 = TCP; 17 = UDP) y una secuencia<strong>de</strong> bits en la que cada bit indica si el or<strong>de</strong>nador ofrece un <strong>de</strong>terminadoservicio o no.– En los registros MINFO, es la concatenación <strong>de</strong> dos nombres<strong>de</strong> dominio. El primero constituye la dirección <strong>de</strong>l responsable<strong>de</strong>l buzón o lista <strong>de</strong> distribución, y el segundo, la direccióndon<strong>de</strong> <strong>de</strong>ben enviarse las notificaciones <strong>de</strong> error.– En los registros TXT, es una ca<strong>de</strong>na <strong>de</strong> caracteres.– En los registros NULL, pue<strong>de</strong> ser cualquier cosa.ANOTACIONES189


ª FUOC • XP04/90786/00020Software libre16.5. Implementaciones <strong>de</strong>l DNSPrácticamente todos los or<strong>de</strong>nadores conectados a la red Internetincorporan alguna implementación <strong>de</strong> un cliente DNS (por normageneral, una librería <strong>de</strong> funciones llamadas por las aplicaciones)para po<strong>de</strong>r acce<strong>de</strong>r a otros or<strong>de</strong>nadores conociendo los nombres<strong>de</strong> los mismos. Éste es el caso, por ejemplo, <strong>de</strong> los sistemas Unix oGNU/Linux, que proporcionan funciones como gethostbynameo gethostbyaddr.En muchos sistemas Unix o GNU/Linux también se encuentra disponibleuna utilidad <strong>de</strong>nominada nslookup, que sirve para efectuarconsultas directamente a un servidor DNS. En el modo <strong>de</strong> funcionamientobásico, acepta comandos como los siguientes:• nombre: envía una consulta utilizando el nombre especificadocomo valor <strong>de</strong>l campo QNAME y muestra los resultados obtenidos,indicando si la respuesta es sin autoridad. En caso <strong>de</strong> serlo, informa<strong>de</strong> qué registros ha enviado el servidor en la sección <strong>de</strong> autoridad<strong>de</strong> la respuesta.• server servidor: cambia el servidor por <strong>de</strong>fecto al que se envíanlas consultas.• ls dominio: muestra una lista <strong>de</strong> nodos <strong>de</strong>l dominio e informaciónasociada; si la lista es muy larga, se pue<strong>de</strong> guardar en unfichero añadiendo > fichero.• set querytype=tipo: permite cambiar el campo QTYPE <strong>de</strong> lasconsultas que, por <strong>de</strong>fecto, es A, a cualquier otro valor (NS, MX,PTR, CNAME, etc.).ANOTACIONES• set q=tipo: es equivalente a set querytype.• set domain=origen: cambia el dominio origen que <strong>de</strong>be utilizarsecuando se especifica un nombre relativo.• set opción: cambia el valor <strong>de</strong> alguna opción utilizada por el programa.Si el valor es recurse, pi<strong>de</strong> que las consultas se lleven acabo en modo recursivo. Si el valor es norecurse, pi<strong>de</strong> que se rea-190


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020licen en modo no recursivo. Si el valor es vc, pi<strong>de</strong> que se utilicen “circuitosvirtuales”, es <strong>de</strong>cir, el TCP. Si el valor es novc, pi<strong>de</strong> que seempleen datagramas, o lo que es lo mismo, el UDP, etc.• set all: muestra el valor actual <strong>de</strong> los parámetros con que trabajael programa (servidor por <strong>de</strong>fecto, opciones, lista <strong>de</strong> nodosorigen que <strong>de</strong>be utilizarse cuando se consultan nombres <strong>de</strong> dominiorelativos, etc.).• ?: muestra un mensaje <strong>de</strong> ayuda.• exit: acaba el programa.ActividadUtilizad el programa nslookup para respon<strong>de</strong>r a estaspreguntas:a) ¿Cuál es la dirección <strong>de</strong>l or<strong>de</strong>nador www.uoc.es?b) ¿Qué or<strong>de</strong>nador u or<strong>de</strong>nadores tienen por aliasftp.uoc.es?c) ¿Cuál es el servidor DNS <strong>de</strong>l dominio uoc.es ? ¿yel <strong>de</strong>l dominio uoc.edu?c) ¿Cuál es el servidor <strong>de</strong>l dominio <strong>de</strong> correo campus.uoc.es?ANOTACIONES191


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002017. Servicios básicos <strong>de</strong> Internet17.1. Terminal virtual: el protocolo TelnetUno <strong>de</strong> los servicios básicos para los que se pue<strong>de</strong> utilizar una red<strong>de</strong> comunicaciones entre <strong>computadores</strong> es el acceso por medio <strong>de</strong>un terminal. Cuando se <strong>de</strong>sarrollaron los sistemas multiusuario, lamanera habitual <strong>de</strong> trabajar en los mismos consistía en utilizar unequipo terminal (en un inicio, un teletipo y, más a<strong>de</strong>lante, un dispositivocon teclado y pantalla) conectado directamente al or<strong>de</strong>nador,en general por medio <strong>de</strong> una línea serie. El or<strong>de</strong>nador <strong>de</strong>bía saberqué terminales tenía conectados y cómo podía controlarlos.NotaEl hecho <strong>de</strong> que en una primeraépoca se utilizaran teletiposes el motivo por elcual en UNIX se utilizó laabreviación tty (teletype)para <strong>de</strong>signar los terminales(básicamente, impresorascon teclado).Con la llegada <strong>de</strong> las re<strong>de</strong>s <strong>de</strong> comunicaciones, que permitían interconectardiferentes or<strong>de</strong>nadores, uno <strong>de</strong> sus usos naturales era manteneruna sesión <strong>de</strong> trabajo interactiva con un or<strong>de</strong>nador remoto sinnecesidad <strong>de</strong> utilizar los terminales que estuvieran conectados almismo directamente. Para ello, era preciso establecer un protocoloque, por un lado, hiciera posible que el or<strong>de</strong>nador remoto y el sistemaen que quería trabajar el usuario se pudieran comunicar y se entendieran(es <strong>de</strong>cir, un protocolo en el ámbito <strong>de</strong> aplicación, puestoque el problema <strong>de</strong>l transporte se supone que ya estaba resuelto) y,por otro lado, facilitara el control <strong>de</strong>l terminal <strong>de</strong>l usuario <strong>de</strong>s<strong>de</strong> elor<strong>de</strong>nador remoto.Un or<strong>de</strong>nador pue<strong>de</strong> permitir que se acceda al mismo <strong>de</strong>s<strong>de</strong> cualquierterminal <strong>de</strong> cualquier otro or<strong>de</strong>nador conectado a la red; sinembargo, no es práctico que <strong>de</strong>ba saber cómo se controlan todos lostipos posibles <strong>de</strong> terminal. La solución general a estos requisitos sebasa en el uso <strong>de</strong> un protocolo <strong>de</strong> terminal virtual.Un terminal virtual es un dispositivo imaginario parael que se <strong>de</strong>finen unas funciones <strong>de</strong> control canónicas,<strong>de</strong> manera que se pue<strong>de</strong> establecer una correspon<strong>de</strong>nciaentre ellas y las <strong>de</strong> cada tipo <strong>de</strong> terminal real.ANOTACIONES193


ª FUOC • XP04/90786/00020Software libreLectura complementariaSi queréis más informaciónsobre el protocolo Telnet,consultad la obra siguiente:J. Postel; J.K. Reynolds(1983, 1 <strong>de</strong> mayo). RFC 854- Telnet Protocol Specification.En el entorno Internet, el protocolo <strong>de</strong> terminal virtual más utilizadoes Telnet, cuya especificación se publicó en 1983 en el estándar RFC854.17.1.1. Principios básicos <strong>de</strong>l protocolo TelnetEl protocolo Telnet está basado en el protocolo <strong>de</strong> transporte TCP. Enuna comunicación Telnet, por norma general se sigue el mo<strong>de</strong>locliente/servidor; es <strong>de</strong>cir, el sistema usuario establece una conexióncon el sistema proveedor, que está esperando peticiones <strong>de</strong> conexiónen un puerto <strong>de</strong>terminado. Se pue<strong>de</strong> utilizar cualquier número <strong>de</strong>puerto para las conexiones y, <strong>de</strong> hecho, existen muchas aplicacionesque utilizan el protocolo Telnet para la comunicación, cada una consu propio número. La aplicación básica, sin embargo, consiste en estableceruna sesión <strong>de</strong> trabajo interactiva con el sistema servidor y,en este caso, el número <strong>de</strong> puerto utilizado es el 23.Para resolver el problema <strong>de</strong>l control <strong>de</strong>l terminal en laaplicación <strong>de</strong> sesiones interactivas, en el protocolo Telnetse utiliza el concepto <strong>de</strong> terminal virtual <strong>de</strong> red oNVT. Un NVT es un terminal virtual con una funcionalidadmuy básica, <strong>de</strong>finida en la misma especificación<strong>de</strong>l protocolo.ANOTACIONESNotaEl usuario <strong>de</strong>l terminal pue<strong>de</strong>ser una persona o unproceso.Los datos leídos en el primercaso por norma general seránlos caracteres tecleadosy, en el segundo, los quevaya generando el proceso.La presentación <strong>de</strong> los datosrecibidos pue<strong>de</strong> consistir enescribirlos en la pantalla,enviarlos a la impresora opasarlos al proceso usuario.Cuando se establece la conexión entre el cliente y el servidor, en uninicio se supone que la comunicación se produce entre dos NVT. Ellosignifica que tanto el sistema cliente como el sistema servidor <strong>de</strong>benmapear sus características en las <strong>de</strong> un NVT y suponer que en el otroextremo <strong>de</strong> la conexión hay otro NVT. En el modo <strong>de</strong> operación normal,cada terminal acepta datos <strong>de</strong>l usuario y los envía por medio<strong>de</strong> la conexión establecida en el otro terminal, así como acepta losdatos que llegan por la conexión y se los presenta al usuario.Las características principales <strong>de</strong> los NVT son las siguientes:a) Los datos se intercambian en bytes <strong>de</strong> 8 bits. Cuando representancaracteres, se utiliza la codificación ASCII (por tanto, se envía uncódigo <strong>de</strong> 7 bits en cada byte).194


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020b) Existen tres caracteres <strong>de</strong> control que el NVT siempre los interpreta<strong>de</strong> la manera siguiente:• NUL (carácter <strong>de</strong> control nulo, código 0): no es necesario hacernada.• LF (avance <strong>de</strong> línea, código 10): mover la posición <strong>de</strong> escrituraactual (en una impresora, el carro, y en una pantalla, el cursor)una línea a<strong>de</strong>lante manteniendo la posición horizontal.• CR (retorno <strong>de</strong> carro, código 13): mover la posición <strong>de</strong> escrituraatrás hasta el principio <strong>de</strong> la línea actual.Por tanto, un final <strong>de</strong> línea (es <strong>de</strong>cir, un salto al principio <strong>de</strong> lalínea siguiente) se podría representar con las secuencias CR-LF o LF-CR. Sin embargo, para facilitar el mapeo en terminalesque no tienen funciones separadas para el avance <strong>de</strong> línea y elretorno <strong>de</strong> carro, el protocolo Telnet especifica que los finales<strong>de</strong> línea <strong>de</strong>ben representarse con la secuencia CR-LF, y los retornos<strong>de</strong> carro sin mover la posición vertical, con la secuenciaCR-NUL . De este modo, cuando el terminal recibe un carácterCR, pue<strong>de</strong> esperar a que llegue el siguiente, que <strong>de</strong>berá ser LFo NUL, para saber qué acción <strong>de</strong>be llevar a cabo.c) Hay cinco caracteres más que opcionalmente pue<strong>de</strong>n ser interpretadospor el NVT y cuyo significado es el siguiente:• BEL (timbre, código 7): generar una señal que, por lo general,será audible, pero que alternativamente pue<strong>de</strong> ser visible, sinmover la posición actual.• BS (retroceso, código 8): mover la posición horizontal un espacioatrás.• HT (tabulación horizontal, código 9): mover la posición horizontalhacia <strong>de</strong>lante hasta la posición <strong>de</strong> tabulación siguiente.• VT (tabulación vertical, código 11): mover la posición verticalhacia <strong>de</strong>lante hasta la posición <strong>de</strong> tabulación vertical siguiente.• FF (avance <strong>de</strong> página, código 12): mover la posición verticalhasta el principio <strong>de</strong> la página siguiente, sin mover la posiciónhorizontal.ANOTACIONES195


ª FUOC • XP04/90786/00020Software libreCualquier otro carácter <strong>de</strong> control se consi<strong>de</strong>ra equivalente a NUL.d) El dispositivo NVT es full duplex; sin embargo, por norma generaltrabaja en modo half duplex; es <strong>de</strong>cir, sólo envía los datos <strong>de</strong>lusuario cuando ha leído una línea completa o cuando recibe algunaotra señal local que provoque la transmisión.e) Si el usuario, <strong>de</strong> momento, no dispone <strong>de</strong> más datos para enviar,y se han procesado todos los datos recibidos, el terminal pue<strong>de</strong>transmitir al sistema remoto una señal, <strong>de</strong>nominada Go Ahead(GA), para indicarle que es su turno <strong>de</strong> enviar datos.NotaSólo <strong>de</strong>bería utilizarse la señal GA cuando el otro sistemano tuviera otra manera <strong>de</strong> saber que no <strong>de</strong>be esperarmás datos. Una situación típica es que el usuario (cliente)genere líneas <strong>de</strong> una en una y el sistema remoto (servidor)envíe respuestas <strong>de</strong> cero, una o más líneas a cada una.En este caso, sólo será necesario que el servidor envíe laseñal GA para notificar que el control pasa al usuario <strong>de</strong>lterminal, y no será preciso que el cliente se lo envíe <strong>de</strong>spués<strong>de</strong> cada línea.f) El NVT también pue<strong>de</strong> generar, a instancias <strong>de</strong>l usuario, dos señalesmás, <strong>de</strong>nominadas Break (BRK) y Synch. El significado <strong>de</strong> laprimera <strong>de</strong>pen<strong>de</strong> <strong>de</strong> la aplicación. La segunda sirve para cancelarlos datos que haya enviado el terminal y todavía no hayan sidoprocesados por el sistema remoto.ANOTACIONESNotaVeremos el significado <strong>de</strong>las funciones <strong>de</strong> control enel apartado 18.1.2.g) Asimismo, existen cinco funciones <strong>de</strong> control que pue<strong>de</strong> generar elNVT a instancias <strong>de</strong>l usuario: Interrupt Process (IP), Abort Output(AO), Are You There (AYT), Erase Character (EC) y Erase Line (EL).Si el cliente y el servidor soportan una funcionalidad másavanzada que la <strong>de</strong> un NVT, que es lo más habitual, elprotocolo permite que lleven a cabo una negociaciónpara ponerse <strong>de</strong> acuerdo sobre qué características diferentes<strong>de</strong> las <strong>de</strong> un NVT utilizarán en la comunicación.196


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020La negociación consiste en intercambiar códigos que indican las opciones<strong>de</strong>l protocolo que cada parte <strong>de</strong>sea o está dispuesta a utilizar.Cuatro son los códigos que se utilizan para implementar la negociación:• DO es una petición que se envía para pedir que se utilice una <strong>de</strong>terminadaopción.NotaLas opciones Telnet posiblesno estan <strong>de</strong>finidas en la especificación<strong>de</strong>l protocolo,sino en especificaciones in<strong>de</strong>pendientes.• WILL es un ofrecimiento que se envía para indicar que el sistemaestá preparado para utilizar una <strong>de</strong>terminada opción.• DON’T significa que el sistema no quiere que se utilice la opciónindicada.• WON’T significa que el sistema no está preparado para utilizar laopción indicada.NotaEl mecanismo <strong>de</strong> negociación es simétrico, <strong>de</strong> maneraque cualquiera <strong>de</strong> las dos partes pue<strong>de</strong> enviar un DOo un WILL. Tras enviar un DO, pue<strong>de</strong> recibirse unWILL como respuesta positiva o un WON’T como respuestanegativa. Des<strong>de</strong> un punto <strong>de</strong> vista análogo,<strong>de</strong>spués <strong>de</strong> enviar un WILL, se pue<strong>de</strong> recibir un DOcomo respuesta positiva o un DON’T como respuestanegativa. Ello significa que un DO pue<strong>de</strong> actuar comopetición o como confirmación si la otra parte ha enviadoun WILL, y viceversa.Por norma general, la negociación <strong>de</strong> las opciones se produce al inicio<strong>de</strong> la conexión, pero también es posible efectuarla en cualquierotro momento. Cada sistema <strong>de</strong>be empezar a utilizar una opcióncuando envía o recibe la respuesta positiva correspondiente.Este mecanismo <strong>de</strong> negociación está diseñado para que sea fácilmenteextensible. Si un sistema no reconoce una <strong>de</strong>terminada opciónque se le pi<strong>de</strong> o se le ofrece, simplemente <strong>de</strong>be contestar con WON’To DON’T.ANOTACIONES197


ª FUOC • XP04/90786/00020Software libreNotaMuchas opciones <strong>de</strong>finensus comandos para la subnegociación,como IS (paraenviar el valor <strong>de</strong> unparámetro), SEND (para pedirque la otra parte lo envíe),etc.En ocasiones se necesita más información para negociar una opción,como el valor <strong>de</strong> algún parámetro. En este caso, en primer lugar <strong>de</strong>benponerse <strong>de</strong> acuerdo las dos partes con el mecanismo básico <strong>de</strong>los DO/ DON’T/WILL/WON’T para utilizar la opción <strong>de</strong>seada y, unavez se haya aceptado, <strong>de</strong>be llevarse a cabo una subnegociación <strong>de</strong>los valores <strong>de</strong> los parámetros utilizando una sintaxis específica <strong>de</strong>cada opción.17.1.2. Comandos <strong>de</strong>l protocolo TelnetEn los datos intercambiados entre dos sistemas que se comunicancon el protocolo Telnet, se pue<strong>de</strong>n intercalar ciertos comandospropios <strong>de</strong>l protocolo, tales como la señal GA o los códigos <strong>de</strong> negociación.Para distinguir los comandos <strong>de</strong> los datos normales,los primeros <strong>de</strong>ben ir prefijados con un código especial llamadoIAC (Interpret As Command), que se representa con un byte iguala 255.Por consiguiente, cada comando se representa con una secuencia <strong>de</strong>dos bytes, en la que el primero es el código IAC, y el segundo, el códigopropio <strong>de</strong>l comando, excepto los comandos <strong>de</strong> negociación,que disponen <strong>de</strong> un tercer byte que sirve para indicar a qué opciónse refieren. Para representar un byte normal <strong>de</strong> datos que sea iguala 255, es preciso prefijarlo con un código IAC. Cualquier otro byte<strong>de</strong> datos se representa directamente con su código.Los comandos <strong>de</strong>finidos en el protocolo Telnet son los siguientes:• NOP (No Operation, código 241): operación nula.ANOTACIONES• GA (Go Ahead, código 249): señal GA.• BRK (Break, código 243): señal BRK.• DO (código 253) + código opción: código <strong>de</strong> negociación DO.• DON’T (código 254) + código opción: código <strong>de</strong> negociación DON’T.• WILL (código 251) + código opción: código <strong>de</strong> negociación WILL.• WON’T (código 252) + código opción: código <strong>de</strong> negociación WON’T.198


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• SB (Subnegotiation Begin, código 250) + código opción: los datosque vengan a continuación correspon<strong>de</strong>n a la subnegociación <strong>de</strong>una opción.• SE (Subnegotiation End , código 240): indica el fin <strong>de</strong> los datos <strong>de</strong>subnegociación.• DM (Data Mark, código 242): indica en qué punto <strong>de</strong> la secuencia<strong>de</strong> datos se ha enviado una señal Synch.• IP (Interrupt Process, código 244): código <strong>de</strong> función que pue<strong>de</strong>enviar el usuario para indicar al sistema remoto que interrumpael proceso que está ejecutando.• AO (Abort Output, código 245): código <strong>de</strong> función que sirve paraindicar que se continúe ejecutando el proceso remoto, pero que<strong>de</strong>je <strong>de</strong> enviar al usuario los datos que genera.• AYT (Are You There, código 246): código <strong>de</strong> función que pi<strong>de</strong> alsistema que, cuando lo reciba, conteste con algún mensaje quesirva al usuario para verificar que la conexión continúa establecida(por ejemplo, cuando el proceso que ejecuta tarda en generaruna respuesta).• EC (Erase Character, código 247): código <strong>de</strong> función que sirvepara borrar el último carácter escrito en el terminal.• EL (Erase Line, código 248): código <strong>de</strong> función que sirve para borrartoda la línea actual.El protocolo Telnet también proporciona un mecanismo para transmitirla señal Synch. Esta última no se representa con un comandocomo los otros, dado que <strong>de</strong>be tener un efecto inmediato. En este caso,se envían datos urgentes TCP acabados con un código DM y, enla secuencia <strong>de</strong> datos normales, se inserta otro código DM. Al recibirlos datos urgentes, el sistema remoto pasará a procesar los datosnormales en modo urgente (que pue<strong>de</strong> consistir en <strong>de</strong>scartar todo loque haya en estos datos, salvo los comandos especiales) hasta queencuentre el DM.El terminal pue<strong>de</strong> generar automáticamente una señal Synch cuandoel usuario envía alguna <strong>de</strong> las funciones que requieren atención inmediata,como IP, AO o AYT (pero no EC o EL).ANOTACIONES199


ª FUOC • XP04/90786/00020Software libre17.1.3. Implementaciones <strong>de</strong>l protocolo TelnetHay implementaciones <strong>de</strong> servidores Telnet prácticamente en todoslos sistemas multiusuario que utilizan el protocolo TCP. Los clientesTelnet son más numerosos todavía, porque también hay para sistemasmonousuario.Un ejemplo <strong>de</strong> implementación <strong>de</strong> cliente Telnet es la utilidad <strong>de</strong>l sistemaoperativo GNU/Linux <strong>de</strong>nominada precisamente telnet. Sise llama sin argumentos, entra en modo comando. Con un argumento,que pue<strong>de</strong> ser una dirección IP o un nombre <strong>de</strong> servidor, estableceuna conexión con el puerto Telnet (el 23) <strong>de</strong> este servidor yentra en modo conexión. Con un segundo argumento, que pue<strong>de</strong> serun número <strong>de</strong> puerto o un nombre <strong>de</strong> servicio, establece la conexióncon este puerto.Cuando el número <strong>de</strong> puerto utilizado es el 23, el cliente inicia automáticamenteel proceso <strong>de</strong> negociación enviando los códigos DO yWILL correspondientes a las opciones que soporta. Con cualquierotro puerto, por norma general no se envía ningún código <strong>de</strong> negociación,salvo que se reciba alguno <strong>de</strong>l sistema remoto.Cuando el programa está en modo conexión, envía al sistema remotocada carácter que teclea el usuario. Des<strong>de</strong> el modo conexión sepue<strong>de</strong> pasar al modo comando por medio <strong>de</strong>l carácter <strong>de</strong> escape, quesuele ser “^]”. En este modo, el programa admite, entre otros, los comandossiguientes:ANOTACIONESNotaLas nombres <strong>de</strong> los comandosse pue<strong>de</strong>n abreviarsiempre que la abreviaturano genere ambigüeda<strong>de</strong>s.• open: establece una conexión con el servidor, y opcionalmentecon el puerto, indicado en los argumentos <strong>de</strong> este comando.• comando nulo (línea vacía): si hay una conexión establecida, sale<strong>de</strong>l modo comando y vuelve al modo conexión.• send: envía al sistema remoto el código Telnet indicado por el argumento,que pue<strong>de</strong> ser ao, ayt, brk, ec, el, ga, ip, synch, etc.• “^]” (o el carácter que actúe como carácter <strong>de</strong> escape): envía esteúltimo al sistema remoto (equivale a send escape).200


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• ?: muestra un mensaje <strong>de</strong> ayuda.• quit: cierra la conexión, en caso <strong>de</strong> haber conexión establecida,y acaba el programa (que también acaba cuando el sistema remotocierra la conexión).ActividadCon algunas implementaciones Unix <strong>de</strong>l clienteTelnet, se pue<strong>de</strong> utilizar el comando toggle netdatapara ver el diálogo <strong>de</strong> la negociación. Probad estaotra opción en una sesión interactiva (en el puerto por<strong>de</strong>fecto 23) y en una conexión a otro puerto (por ejemplo,echo).17.2. Terminal virtual en GNU/Linux:el protocolo rloginCuando se <strong>de</strong>sea establecer una sesión <strong>de</strong> trabajo interactiva <strong>de</strong>s<strong>de</strong>un sistema Unix con otro sistema Unix, a<strong>de</strong>más <strong>de</strong> utilizar el protocoloTelnet, también existe la posibilidad <strong>de</strong> utilizar el protocolo llamadorlogin. Este último se <strong>de</strong>sarrolló en un inicio en el entorno <strong>de</strong> las utilida<strong>de</strong>s<strong>de</strong> comunicaciones <strong>de</strong> la variante <strong>de</strong> Unix llamada BSD; sin embargo,hoy día hay implementaciones disponibles en todas lasvariantes, así como en otros sistemas operativos. La especificación <strong>de</strong>lprotocolo rlogin está publicada en el documento RFC 1282.Las características principales que diferencian el protocolo rlogin <strong>de</strong>lprotocolo Telnet son las siguientes:a) El servidor siempre es informado <strong>de</strong>l tipo <strong>de</strong> terminal con que trabajael cliente sin necesidad <strong>de</strong> negociación.b) El servidor también es informado <strong>de</strong> la i<strong>de</strong>ntidad <strong>de</strong>l usuario enel sistema cliente, lo que se pue<strong>de</strong> utilizar para automatizar elproceso <strong>de</strong> autenticación.c) Si cambian los tamaños <strong>de</strong> la ventana <strong>de</strong> presentación <strong>de</strong>l terminal,se pue<strong>de</strong> enviar automáticamente una señal al servidor paranotificárselo.Lectura complementariaPara obtener más informaciónsobre el protocolo rlogin,consultad la obra siguiente:B. Kantor (1991, diciembre).RFC 1282 - BSD Rlogin.ANOTACIONES201


ª FUOC • XP04/90786/00020Software libred) En la transmisión <strong>de</strong> datos, siempre pue<strong>de</strong>n utilizarse los 8 bits <strong>de</strong>cada byte.17.2.1. Conceptos básicos <strong>de</strong>l protocolo rloginEl protocolo rlogin utiliza conexiones TCP. El nombre oficial <strong>de</strong>l servicioproporcionado por este protocolo es login y el número <strong>de</strong>puerto asignado a este servicio es el 513.Cuando el cliente establece la conexión con el servidor, en primer lugarle envía cuatro ca<strong>de</strong>nas <strong>de</strong> caracteres, cada una acabada con uncarácter NUL (código 0). Son las ca<strong>de</strong>nas siguientes:• Una ca<strong>de</strong>na vacía (sólo contiene el carácter NUL).• El nombre <strong>de</strong>l usuario en el sistema cliente.• El nombre <strong>de</strong> usuario con que se quiere establecer la sesión <strong>de</strong>trabajo en el sistema servidor.• El tipo <strong>de</strong> terminal y, separado con “/”, su velocidad (por ejemplo,vt100/9600).Cuando ha recibido estas cuatro ca<strong>de</strong>nas, el servidor envía un carácterNUL y empieza la transferencia <strong>de</strong> datos entre cliente y servidoren modo control <strong>de</strong> flujo. En este modo, el cliente envía los caracteresque teclea el usuario tal como le llegan, excepto los caracteres <strong>de</strong>control DC3 (“^S”) y DC1 (“^Q”), que significan ‘suspen<strong>de</strong>r la transmisión’y ‘retomarla’, respectivamente.ANOTACIONESPor otro lado, el cliente presenta los datos que envía el servidor talcomo le llegan. El cliente también pue<strong>de</strong> recibir mensajes <strong>de</strong> control<strong>de</strong>l servidor, que se representan con un código <strong>de</strong> un byte enviadoen datos urgentes TCP. El cliente <strong>de</strong>be respon<strong>de</strong>r a estos mensajes<strong>de</strong> manera inmediata y suspen<strong>de</strong>r temporalmente el procesado <strong>de</strong>otros datos que pueda haber recibido.17.2.2. Implementación <strong>de</strong>l protocolo rloginEn los sistemas GNU/Linux hay una utilidad llamada rlogin que actúacomo cliente <strong>de</strong>l protocolo rlogin. Es preciso que se le especifique202


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020el nombre <strong>de</strong>l servidor remoto y, <strong>de</strong> manera optativa, el nombre <strong>de</strong>usuario que <strong>de</strong>be utilizar en este servidor, con la opción -l (por <strong>de</strong>fecto,se utiliza el mismo nombre <strong>de</strong> usuario que en el sistema local).La mayoría <strong>de</strong> los servidores rlogin implementan la autenticación automática<strong>de</strong> la manera siguiente:• Si el usuario remoto tiene en su directorio un fichero llamado.rhosts con una línea en la que se encuentre el nombre <strong>de</strong>l or<strong>de</strong>nadorcliente y, opcionalmente, el nombre <strong>de</strong>l usuario cliente(en ausencia <strong>de</strong> este nombre <strong>de</strong> usuario, se toma el <strong>de</strong>l usuarioen el servidor), se inicia directamente la sesión interactiva sin necesidad<strong>de</strong> pedir ninguna contraseña.• Si no dispone <strong>de</strong> este fichero, se consulta otro, el /etc/hosts.equiv, para ver si existe alguna línea con el nombre <strong>de</strong>lor<strong>de</strong>nador cliente (en este caso, <strong>de</strong>be coincidir el nombre <strong>de</strong>lusuario en el cliente y en el servidor) y, si está, también se da alusuario por autenticado.• En cualquier otro caso, se sigue el procedimiento normal <strong>de</strong> autenticaciónmediante contraseña.NotaPor motivos <strong>de</strong> seguridad, los servidores rlogin suelenrequerir que el fichero .rhosts tenga permiso <strong>de</strong> lecturasólo para el usuario a quien pertenece. Por otrolado, los nombres <strong>de</strong> servidores en los ficheros.rhosts y /etc/hosts.equiv no pue<strong>de</strong>n ser alias,<strong>de</strong>ben ser los nombres oficiales. Y, como precauciónadicional, el fichero /etc/hosts.equiv sólo se utilizacuando el nombre <strong>de</strong>l usuario en el servidor es diferente<strong>de</strong> root.Antes <strong>de</strong> consultar los ficheros .rhosts y /etc/hosts.equiv, elservidor siempre comprueba que el cliente se haya conectado <strong>de</strong>s<strong>de</strong>un puerto reservado (con número inferior a 1024). En caso contrario,no se permite la autenticación automática, puesto que la conexiónpodría provenir <strong>de</strong> otro usuario que estuviera ejecutando un programaque siguiese el protocolo rlogin, pero que enviase informaciónfalsa sobre su i<strong>de</strong>ntidad.ANOTACIONES203


ª FUOC • XP04/90786/00020Software libreLa autenticación automática pue<strong>de</strong> resultar cómoda porque ahorrateclear las contraseñas, pero también pue<strong>de</strong> ser una fuente <strong>de</strong> problemassi no se utiliza con precaución.A<strong>de</strong>más <strong>de</strong> leer los caracteres tecleados y enviárselos al servidor,el cliente también pue<strong>de</strong> recibir comandos <strong>de</strong>l usuario. Para distinguirlos<strong>de</strong> los caracteres normales, se representan con un carácterprecedido <strong>de</strong>l símbolo “~”. Esta secuencia sólo se reconoceal inicio <strong>de</strong> las líneas (es <strong>de</strong>cir, inmediatamente a continuación <strong>de</strong>un salto <strong>de</strong> línea). El carácter <strong>de</strong>l comando pue<strong>de</strong> ser, por ejemplo,el siguiente:• “^Z” (o el carácter correspondiente a la función SUSP <strong>de</strong>l terminal):suspen<strong>de</strong> la ejecución <strong>de</strong>l programa cliente, con la posibilidad<strong>de</strong> retomarla más a<strong>de</strong>lante (la manera <strong>de</strong> hacerlo pue<strong>de</strong><strong>de</strong>pen<strong>de</strong>r <strong>de</strong>l shell, pero por lo general es con el comando fg).• “^Y” (o el carácter correspondiente a la función DSUSP <strong>de</strong>l terminal):suspen<strong>de</strong> el envío <strong>de</strong> datos al servidor y, por consiguiente, elteclado queda disponible para otros procesos; sin embargo, la recepcióncontinúa (si se reciben nuevos datos, se mostrarán cuandolleguen).• “~”: envía el carácter ~.• “.”: cierra la conexión.Si el carácter no correspon<strong>de</strong> a ningún comando reconocido por elcliente, se envía al servidor tal como ha llegado, precedido por el carácter“~”.ANOTACIONES17.3. Otros servicios17.3.1. Ejecución remota con autenticación automática: rshParalelamente al servicio <strong>de</strong> terminal virtual, que permite manteneruna sesión <strong>de</strong> trabajo en un sistema remoto, en los sistemas Unix204


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020BSD se <strong>de</strong>sarrolló otro servicio que permite ejecutar un comando enel sistema remoto. El programa que actúa como cliente <strong>de</strong> este serviciose llama rsh (remote shell).El nombre oficial <strong>de</strong> este servicio es shell, el protocolo <strong>de</strong> transporteutilizado es el TCP y el número <strong>de</strong> puerto asignado es el 514.A continuación presentamos los pasos que se siguen en este protocolo:1) El servidor comprueba que el cliente se haya conectado <strong>de</strong>s<strong>de</strong> unpuerto reservado. En caso contrario, cierra la conexión.2) El cliente envía al servidor una ca<strong>de</strong>na acabada en NUL que contieneun número <strong>de</strong>cimal:• Si es diferente <strong>de</strong> cero, se interpreta como un número <strong>de</strong> puerto y elservidor establece en este puerto una conexión secundaria (esta segundaconexión se establece también <strong>de</strong>s<strong>de</strong> un puerto reservado).• Si es cero, la misma conexión principal actúa también como secundaria.3) El cliente envía tres ca<strong>de</strong>nas más acabadas en NUL con el nombre<strong>de</strong>l usuario en el sistema servidor, el nombre en el sistema clientey el comando a ejecutar.4) El servidor comprueba en los ficheros .rhosts y/o /etc/hosts.equiv que el usuario esté autorizado para la autenticaciónautomática.5) Si lo está, el servidor envía un carácter NUL por la conexión secundaria;en caso contrario, cierra las conexiones.6) El servidor ejecuta el comando indicado con la i<strong>de</strong>ntidad <strong>de</strong>l usuarioindicado. Los datos que escriba este comando por la salida estándar(stdout en la nomenclatura <strong>de</strong>l lenguaje C) se enviarán por la conexiónprincipal, y los que escriba por la salida <strong>de</strong> error (st<strong>de</strong>rr),por la conexión secundaria. Las que envíe el cliente serán accesiblespor la entrada estándar (stdin).7) Cuando acabe la ejecución <strong>de</strong>l comando, el servidor cerrará la conexión.ANOTACIONES205


ª FUOC • XP04/90786/00020Software libre17.3.2. Ejecución remota: rexecCon rsh, el usuario <strong>de</strong>be estar autorizado por medio <strong>de</strong> los ficheros.rhosts o /etc/hosts.equiv <strong>de</strong>l sistema remoto para po<strong>de</strong>r ejecutarun comando en el mismo. Existe otro servicio muy parecido en queno se utiliza la autenticación automática, sino que siempre requiere queel usuario proporcione su contraseña en el sistema remoto. En algunossistemas Unix, se encuentra disponible un programa llamado rexec queactúa como cliente <strong>de</strong> este servicio. En otros, sólo hay una función <strong>de</strong> lalibrería estándar, rexec, que implementa el protocolo.El nombre oficial <strong>de</strong> este servicio es exec, el protocolo <strong>de</strong> transporteutilizado es el TCP y el número <strong>de</strong> puerto asignado es el 512.Este protocolo es muy parecido al anterior: las únicas diferencias sonque, en lugar <strong>de</strong> enviar el nombre <strong>de</strong>l usuario, en el sistema cliente seenvía la contraseña <strong>de</strong>l usuario en el sistema servidor (los ficheros.rhosts y /etc/hosts.equiv no se consultan) y que no es precisoverificar que las conexiones provengan <strong>de</strong> puertos reservados.17.3.3. Servicios trivialesLa mayoría <strong>de</strong> los sistemas Unix y GNU/Linux proporcionan unaserie <strong>de</strong> servicios <strong>de</strong>nominados triviales, que se pue<strong>de</strong>n utilizarpara llevar a cabo pruebas <strong>de</strong> funcionamiento <strong>de</strong> los módulos queimplementan los protocolos <strong>de</strong> transporte. Todos son accesiblespor medio <strong>de</strong> TCP y UDP, y el número <strong>de</strong> puerto utilizado en amboscasos es el mismo. Algunos ejemplos <strong>de</strong> servicios triviales sonlos siguientes:ANOTACIONES• echo (puerto 7): retorna todos los bytes (en TCP) o datagramas(en UDP) que recibe (RFC 862).• discard (puerto 9): lee datos (bytes o datagramas), pero nohace nada más (RFC 863).• chargen (puerto 19): en TCP, cuando se establece la conexión,el servidor empieza a enviar una secuencia <strong>de</strong> caracteres hastaque el cliente la cierra y, en UDP, cuando el servidor recibe un datagrama,respon<strong>de</strong> con otro que contiene un nombre arbitrario<strong>de</strong> caracteres (RFC 864).206


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• daytime (puerto 13): cuando se establece la conexión, o se recibeun datagrama, el servidor envía la fecha y la hora actual enformato legible para los humanos (RFC 867).• time (puerto 37): cuando se establece la conexión, o se recibe undatagrama, el servidor envía un número <strong>de</strong> 4 bytes que representael número <strong>de</strong> segundos transcurridos <strong>de</strong>s<strong>de</strong> el 1 <strong>de</strong> enero <strong>de</strong>1970 a las 0 horas GMT (RFC 868).FingerName/Finger es otro ejemplo <strong>de</strong> servicio sencillo que permite obtenerinformación <strong>de</strong> un usuario en un sistema remoto. La especificación <strong>de</strong>lprotocolo para este servicio está recogida en el documento RFC 742.El nombre oficial <strong>de</strong> este servicio es finger, el protocolo <strong>de</strong> transporteutilizado es el TCP y el número <strong>de</strong> puerto asignado es el 79.El programa cliente se llama finger y, por norma general, admite argumentos<strong>de</strong> la forma usuario, usuario@host o @host:• En el primer caso, proporciona información sobre un usuario enel sistema local sin necesidad <strong>de</strong> utilizar ningún protocolo.• En el segundo, informa sobre un usuario <strong>de</strong> un sistema remoto.• En el tercero, normalmente ofrece una información resumida <strong>de</strong>los usuarios que están actualmente conectados con sesiones interactivasal sistema remoto.Cuando se establece la conexión, el cliente simplemente envía unalínea al servidor acabada con CR-LF. En esta última se encuentra elnombre <strong>de</strong>l usuario <strong>de</strong> quien se quiere obtener información. Si no hayningún nombre, se entien<strong>de</strong> que la solicitud se refiere a todos losusuarios que estén conectados.El formato <strong>de</strong> la respuesta <strong>de</strong>pen<strong>de</strong> <strong>de</strong> la implementación <strong>de</strong>l servidory pue<strong>de</strong> incluir información como el nombre <strong>de</strong>l usuario, sunombre real, cuándo se conectó por última vez, cuándo recibió oANOTACIONES207


ª FUOC • XP04/90786/00020Software libreleyó el correo por última vez, etc., y, si está conectado actualmente,<strong>de</strong>s<strong>de</strong> dón<strong>de</strong>, en qué terminal, cuánto tiempo hace que no hay activida<strong>de</strong>n su terminal, etc. La información retornada normalmente esun subconjunto <strong>de</strong> todos estos campos; sin embargo, si la línea <strong>de</strong>petición empieza con los caracteres “/W”, el servidor pue<strong>de</strong> retornarinformación más completa.ANOTACIONES208


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002018. Transferencia <strong>de</strong> ficheros18.1. FTP: protocolo <strong>de</strong> transferencia<strong>de</strong> ficherosUna <strong>de</strong> las primeras aplicaciones básicas <strong>de</strong>sarrolladas en el entorno<strong>de</strong> lo que <strong>de</strong>spués sería la red Internet fue la transferencia <strong>de</strong> ficherosentre diferentes sistemas. Al principio <strong>de</strong> los años setenta yase elaboraron las primeras especificaciones <strong>de</strong>l protocolo más utilizadopara esta finalidad, el FTP. Después <strong>de</strong> algunas modificacionesy mejoras, la especificación oficial <strong>de</strong>l protocolo se publicó en 1985en el documento RFC 959.El FTP se basa en el mo<strong>de</strong>lo cliente/servidor y permite la transferencia<strong>de</strong> ficheros tanto <strong>de</strong>l servidor al cliente, como <strong>de</strong>l cliente al servidor.Asimismo, permite que un cliente efectúe transferencias directas<strong>de</strong> un servidor a otro, con lo que se ahorra la necesidad <strong>de</strong> copiarlos ficheros <strong>de</strong>l primer servidor al cliente y pasarlos <strong>de</strong>spués <strong>de</strong>l clienteal segundo servidor.Lectura complementariaPara más información sobreel FTP, consultad la obra siguiente:J. Postel; J. Reynolds(1985, octubre). RFC 959 -File Transfer Protocol.El protocolo proporciona también operaciones para que el clientepueda manipular el sistema <strong>de</strong> ficheros <strong>de</strong>l servidor: borrar ficheroso cambiarles el nombre, crear y borrar directorios, listar sus contenidos,etc.Uno <strong>de</strong> los objetivos principales <strong>de</strong> este protocolo consiste en permitirla interoperabilidad entre sistemas muy distintos, escondiendo los<strong>de</strong>talles <strong>de</strong> la estructura interna <strong>de</strong> los sistemas <strong>de</strong> ficheros locales y<strong>de</strong> la organización <strong>de</strong> los contenidos <strong>de</strong> los ficheros.NotaAlgunos <strong>de</strong> los sistemas utilizados en la época <strong>de</strong><strong>de</strong>sarrollo <strong>de</strong>l FTP actualmente están obsoletos; porANOTACIONES209


ª FUOC • XP04/90786/00020Software libreejemplo, los que utilizan palabras <strong>de</strong> 36 bits o códigos<strong>de</strong> caracteres incompatibles con el estándar AS-CII o los que almacenan los ficheros en “páginas”no necesariamente contiguas. De hecho, muchas <strong>de</strong>las implementaciones actuales <strong>de</strong>l protocolo no soportanestas características especiales previstas enla especificación.18.1.1. El mo<strong>de</strong>lo <strong>de</strong>l FTPEn el mo<strong>de</strong>lo general <strong>de</strong>scrito en la especificación <strong>de</strong>l FTP, tantoen el servidor como en el cliente hay dos entida<strong>de</strong>s que intervienenen la transferencia <strong>de</strong> ficheros:a) El intérprete <strong>de</strong> protocolo se encarga <strong>de</strong>l intercambio <strong>de</strong> loscomandos <strong>de</strong>l protocolo. En la parte <strong>de</strong>l cliente, las operacionesque el usuario solicita por medio <strong>de</strong> la interfaz <strong>de</strong> usuario,el intérprete las convierte en una secuencia a<strong>de</strong>cuada <strong>de</strong> comandosFTP y se envían al servidor.En la parte <strong>de</strong>l servidor se interpretan los comandos recibidos, segeneran las respuestas correspondientes y se envían al cliente.Por tanto, el intérprete cliente <strong>de</strong>be analizar estas respuestas, porejemplo, para informar al usuario <strong>de</strong>l resultado <strong>de</strong> la operacióno para proseguir la secuencia <strong>de</strong> comandos FTP.ANOTACIONESb) El proceso <strong>de</strong> transferencia <strong>de</strong> datos, que está bajo el control<strong>de</strong>l intérprete <strong>de</strong> protocolo, se encarga <strong>de</strong> intercambiar los datosque <strong>de</strong>ben transferirse, es <strong>de</strong>cir, los contenidos <strong>de</strong> los ficheroso bien los listados <strong>de</strong> los directorios.Tanto en la parte <strong>de</strong>l cliente, como en la <strong>de</strong>l servidor este procesointeractúa directamente con el sistema <strong>de</strong> ficheros localespara leer sus datos o para almacenarlos en los mismos.210


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Figura 79.Los dos intérpretes <strong>de</strong> protocolo se comunican mediante una conexiónTCP llamada conexión <strong>de</strong> control. Cuando <strong>de</strong>ben transferirse datos <strong>de</strong>un sistema al otro, se establece otra conexión TCP entre los dos procesos<strong>de</strong> transferencia <strong>de</strong> datos <strong>de</strong>nominada conexión <strong>de</strong> datos. Generalmente,la parte activa <strong>de</strong> esta conexión (la que la inicia) constituye el proceso<strong>de</strong> transferencia <strong>de</strong>l servidor, y la parte pasiva, el <strong>de</strong>l cliente.La figura siguiente muestra la variación <strong>de</strong>l mo<strong>de</strong>lo general parael caso en que un cliente controle una transferencia entre dos servidores(uno <strong>de</strong> los cuales actuará como servidor activo y el otro,como servidor pasivo):NotaEl FTP permite efectuar más<strong>de</strong> una transferencia en unaúnica sesión. Según el modo<strong>de</strong> transmisión, es posibleque se abran y se cierren diferentesconexiones <strong>de</strong> datosdurante una misma conexión<strong>de</strong> control, o bien quese utilice la misma conexión<strong>de</strong> datos para las diferentestransferencias.Figura 80.ANOTACIONES211


ª FUOC • XP04/90786/00020Software libre18.1.2. Conceptos básicos <strong>de</strong>l FTPEl FTP está basado en conexiones TCP. El intérprete <strong>de</strong> protocolo <strong>de</strong>lservidor <strong>de</strong>be estar preparado para recibir peticiones <strong>de</strong> conexión enun puerto TCP que, por <strong>de</strong>fecto, es el asignado oficialmente al servicioFTP: el número 21.NotaConsultad la <strong>de</strong>scripción <strong>de</strong>las reglas especificadas porel protocolo Telnet (RFC854) en el apartado 18.1 <strong>de</strong>la unidad anterior.El intérprete <strong>de</strong> protocolo <strong>de</strong>l cliente establece una conexión <strong>de</strong> controlcon el puerto <strong>de</strong>l intérprete servidor. En esta conexión se utilizanlas reglas especificadas en el protocolo Telnet. Ello significa que, por<strong>de</strong>fecto, los intérpretes <strong>de</strong> protocolo se intercambian mensajes codificadoscon bytes <strong>de</strong> 8 bits, según el juego <strong>de</strong> caracteres ASCII, y representanlos finales <strong>de</strong> línea con la secuencia .NotaLas excepciones a la regla<strong>de</strong> la respuesta secuencialson los comandos obtenerel estado actual <strong>de</strong> unatransferencia, abortar unaoperación y cerrar la sesión.Los comandos FTP constituyen los mensajes que envía el intérpretecliente, y los que envía el intérprete servidor son respuestas a dichoscomandos. Las respuestas se generan siguiendo el or<strong>de</strong>n en que elcliente envía los comandos, puesto que en general el servidor efectúalas operaciones <strong>de</strong> manera secuencial (no empieza una nueva operaciónhasta que no ha acabado la anterior). A continuación, analizamospor separado los comandos y las respuestas:1) Comandos FTP: un comando FTP se representa por medio <strong>de</strong> uncódigo <strong>de</strong> comando <strong>de</strong> hasta cuatro letras (que pue<strong>de</strong>n ser indistintamentemayúsculas o minúsculas), seguido <strong>de</strong> una lista <strong>de</strong>cero o más argumentos, separados por espacios, acabada con unfinal <strong>de</strong> línea.ANOTACIONESNotaAlgunas implementaciones<strong>de</strong> servidores FTP soportanotros códigos <strong>de</strong> comandosno estándares, que pue<strong>de</strong>ntener más <strong>de</strong> cuatro letras.La especificación RFC 959 <strong>de</strong>fine treinta y tres comandos agrupadosen tres categorías diferentes (representamos entre paréntesis el códigocorrespondiente a cada comando):a) Comandos <strong>de</strong> control <strong>de</strong> acceso: nombre <strong>de</strong> usuario (USER),contraseña (PASS), cuenta (ACCT), cambiar <strong>de</strong> directorio (CWD),cambiar al directorio padre (CDUP), montar un sistema <strong>de</strong> ficheros(SMNT), reinicializar (REIN), acabar la sesión (QUIT).b) Comandos <strong>de</strong> parámetros <strong>de</strong> transferencia: estructura <strong>de</strong> fichero(STRU), modo <strong>de</strong> transmisión (MODE), tipo <strong>de</strong> representación(TYPE), puerto <strong>de</strong> datos (PORT), puerto pasivo (PASV).212


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020c) Comandos <strong>de</strong> servicio FTP: obtener (RETR), almacenar (STOR),almacenar con nombre único (STOU), añadir (APPE), listar(LIST), listar nombres (NLST), mostrar el directorio actual (PWD),reservar espacio (ALLO), abortar (ABOR), retomar (REST), borrar(DELE), nombre antiguo (RNFR), nombre nuevo (RNTO), crear undirectorio (MKD), borrar un directorio (RMD), estatus (STAT), sistema(SYST), servicios adicionales (SITE), ayuda (HELP) y operaciónnula (NOOP).2) Respuestas FTP: las respuestas constan <strong>de</strong> un código numérico<strong>de</strong> tres dígitos <strong>de</strong>cimales, que permite al intérprete <strong>de</strong>l protocolocliente saber cuál es el resultado <strong>de</strong> la operación, seguido <strong>de</strong> untexto explicativo <strong>de</strong>stinado al usuario humano.NotaDe este grupo <strong>de</strong> comandos<strong>de</strong> servicio, los seis siguientesson los comandos <strong>de</strong>transferencia; es <strong>de</strong>cir, losque utilizan la conexión <strong>de</strong>datos.– RETR– STOR– STOU– APPE– LIST– NLSTEl texto explicativo <strong>de</strong>l mensaje <strong>de</strong> respuesta pue<strong>de</strong> tener una línea omás:• Si tiene una línea, la respuesta se representa con el código numéricoseguido <strong>de</strong>l carácter espacio y, a continuación, el texto y unfinal <strong>de</strong> línea.• Si tiene más <strong>de</strong> una línea, la primera se representa con el códigonumérico seguido <strong>de</strong>l carácter “-” y, a continuación, las líneas <strong>de</strong>texto, acabadas con finales <strong>de</strong> línea, la última <strong>de</strong> las cuales <strong>de</strong>beempezar con el mismo código numérico <strong>de</strong> la primera línea seguido<strong>de</strong>l carácter espacio.Ejemplo <strong>de</strong> respuesta <strong>de</strong> una sola línea:Ejemplo220 Sistema preparado. Introducid nombre <strong>de</strong>usuario y contraseña.Ejemplo <strong>de</strong> respuesta con múltiples líneas:220-Sistema preparado.Introducid el nombre <strong>de</strong> usuario y lacontraseña para acce<strong>de</strong>r a los ficherosrestringidos, o utilizad el nombre"anonymous"220 para acce<strong>de</strong>r al directorio público.ANOTACIONES213


ª FUOC • XP04/90786/00020Software libreNotaLa estructura <strong>de</strong> los códigos<strong>de</strong> respuesta y el significado<strong>de</strong> cada dígito son comunesa todos los protocolos. Podéisencontrar una explicación<strong>de</strong> los mismos en elanexo 4.La especificación RFC 959 <strong>de</strong>fine los códigos <strong>de</strong> respuesta posiblespara cada uno <strong>de</strong> los comandos y su significado.Tabla 8.Códigos <strong>de</strong> respuestaCódigoSignificado110 Marca <strong>de</strong> reanudación.120 Esperar hasta que el servidor esté preparado.125 El servidor transfiere datos (la conexión <strong>de</strong> datos ya está abierta).150El servidor establece la conexión <strong>de</strong> datos e inicia latransferencia.200 Operación efectuada.202 Comando innecesario en este servidor.211Información <strong>de</strong> estado <strong>de</strong>l sistema o mensaje <strong>de</strong> ayuda <strong>de</strong>lsistema.212 Información <strong>de</strong> estado <strong>de</strong>l directorio.213 Información <strong>de</strong> estado <strong>de</strong>l fichero.214 Mensaje <strong>de</strong> ayuda (<strong>de</strong>stinado al usuario humano).215 Tipo <strong>de</strong> sistema.220 Servidor preparado.221 El servidor cierra la conexión <strong>de</strong> control.226 Operación efectuada y conexión <strong>de</strong> datos cerrada.227 El servidor está en modo pasivo (h1,h2,h3,h4,p1,p2).230 Proceso <strong>de</strong> autenticación completado satisfactoriamente.250 Operación <strong>de</strong> fichero efectuada.257 El directorio es el resultado <strong>de</strong> la operación.331 Enviar contraseña.332 Enviar cuenta.ANOTACIONES350 Enviar el comando siguiente para completar la operación.421Servicio no disponible (por ejemplo, por time out...), conexión <strong>de</strong>control cerrada.425 No se pue<strong>de</strong> establecer la conexión <strong>de</strong> datos.426 Transferencia abortada y conexión <strong>de</strong> datos cerrada.450No se pue<strong>de</strong> efectuar la operación sobre el fichero (por ejemplo,fichero ocupado).452 Espacio <strong>de</strong> disco insuficiente: transferencia no iniciada.500 Error <strong>de</strong> sintaxis en el comando.214


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Códigos <strong>de</strong> respuestaCódigoSignificado501 Error en los argumentos.502 Comando no implementado.503Error en la secuencia <strong>de</strong> comandos (este comando nocorrespon<strong>de</strong>).504 Argumento no soportado.530 El usuario no se ha autenticado correctamente.532 Se necesita cuenta para esta operación.550No se pue<strong>de</strong> acce<strong>de</strong>r al fichero o directorio (no existe, acceso<strong>de</strong>negado, etc.).552 Espacio <strong>de</strong> disco insuficiente: transferencia abortada.553 Nombre <strong>de</strong> fichero no permitido.Cuando ha establecido la conexión <strong>de</strong> control con el intérprete <strong>de</strong> protocolo<strong>de</strong>l servidor y antes <strong>de</strong> enviar ningún comando, el cliente <strong>de</strong>beesperar a recibir una respuesta, que pue<strong>de</strong> tener los códigos 220, 421ó 120. Si el código es 120, el cliente <strong>de</strong>be esperar hasta que el servidorenvíe una respuesta 220. Cuando el servidor indique que está preparado,pue<strong>de</strong> empezar el intercambio <strong>de</strong> comandos y respuestas. Por normageneral, el servidor cerrará la conexión <strong>de</strong> control cuando se losolicite el cliente (con el comando <strong>de</strong> acabar sesión).NotaEl texto explicativo <strong>de</strong> lasrespuestas es <strong>de</strong> formato libre,excepto en el caso <strong>de</strong>las respuestas 110 (comandoRETR), 227 (comandoPASV) y 257 (comandosPWD y MKD).Si el cliente <strong>de</strong>sea realizar operaciones <strong>de</strong> transferencia, su proceso<strong>de</strong> transferencia <strong>de</strong> datos <strong>de</strong>bería estar preparado para recibir peticiones<strong>de</strong> conexión en un puerto TCP, que por <strong>de</strong>fecto es el mismo<strong>de</strong>s<strong>de</strong> el que el intérprete ha iniciado la conexión <strong>de</strong> control.El encargado <strong>de</strong> establecer las conexiones <strong>de</strong> datos es el proceso<strong>de</strong> transferencia <strong>de</strong> datos <strong>de</strong>l servidor, <strong>de</strong>s<strong>de</strong> su puerto <strong>de</strong> datos.Por <strong>de</strong>fecto, este puerto es L − 1 (don<strong>de</strong> L es el número <strong>de</strong> puertocorrespondiente a la conexión <strong>de</strong> control). Es <strong>de</strong>cir, si el servidor harecibido la conexión <strong>de</strong> control en el puerto 21, su puerto <strong>de</strong> datospor <strong>de</strong>fecto será el 20. Evi<strong>de</strong>ntemente, el cliente pue<strong>de</strong> solicitar el uso<strong>de</strong> puertos diferentes <strong>de</strong> los pre<strong>de</strong>terminados por medio <strong>de</strong> los comandosa<strong>de</strong>cuados.Generalmente, las conexiones <strong>de</strong> datos las cierra el servidor, exceptocuando sea la otra parte (el cliente o un servidor pasivo) quien envíeANOTACIONES215


ª FUOC • XP04/90786/00020Software librelos datos y el modo <strong>de</strong> transmisión utilizado requiera el cierre <strong>de</strong> laconexión para indicar el final <strong>de</strong>l fichero.18.1.3. Funcionalidad <strong>de</strong>l FTPLas acciones que lleva a cabo el servidor para cada uno <strong>de</strong> los comandos<strong>de</strong>finidos en la especificación RFC 959 son los siguientes:1) Nombre <strong>de</strong> usuario (USER)El argumento <strong>de</strong> este comando es el nombre que es preciso suministraral sistema servidor para i<strong>de</strong>ntificar al usuario con el objetivo<strong>de</strong> acce<strong>de</strong>r a los ficheros. Éste suele ser el primer comandoque envía el cliente. Asimismo, es posible enviarlo en medio <strong>de</strong>una sesión; entonces el servidor se olvida <strong>de</strong> la i<strong>de</strong>ntidad <strong>de</strong>lusuario anterior y realiza las nuevas operaciones bajo el nombre<strong>de</strong>l nuevo usuario.Si el servidor envía la respuesta 230, significa que el proceso <strong>de</strong> autenticaciónya se ha completado; si envía la 530, significa que esteusuario no es admisible (por ejemplo, porque no hay ningún ususariocon este nombre) y, si envía la 331 o la 332, entonces se necesitauna contraseña o una cuenta, respectivamente.NotaEn muchos sistemas, un intento <strong>de</strong> conexión con unnombre <strong>de</strong> usuario inexistente dará como resultadouna respuesta 331, para no proporcionar informacióna los usuarios ajenos al sistema sobre qué nombresson válidos y cuáles no.ANOTACIONESEl código 332 indica que la operación solicitada se llevaráa cabo tan pronto como se reciba el comando ACCT.2) Contraseña (PASS)El argumento <strong>de</strong> este comando es la contraseña que necesita el sistemaservidor para verificar la i<strong>de</strong>ntidad <strong>de</strong>l usuario. Si no se necesitaninguna, la respuesta será 202; si se necesita pero es incorrecta,216


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020530, y si es correcta, pue<strong>de</strong> ser 230 (autenticación completada) o332 (se necesita una cuenta).3) Cuenta (ACCT)Algunos sistemas pue<strong>de</strong>n requerir que el usuario proporcione unai<strong>de</strong>ntificación <strong>de</strong> cuenta, bien en el proceso <strong>de</strong> autenticación inicial,bien para efectuar <strong>de</strong>terminadas operaciones, como almacenar ficheros.El servidor hará saber que necesita esta información enviandouna respuesta 332 en el proceso <strong>de</strong> autenticación, o unarespuesta 332 o 532 <strong>de</strong>spués <strong>de</strong> una <strong>de</strong>terminada operación.4) Estructura <strong>de</strong> fichero (STRU)Este comando sirve para especificar cómo estarán estructurados losficheros que <strong>de</strong>ben transferirse. El tipo <strong>de</strong> estructura afecta al modo<strong>de</strong> transmisión, como veremos a continuación. Los valores posibles<strong>de</strong>l argumento son los tres siguientes:• R: el fichero consta <strong>de</strong> una secuencia <strong>de</strong> registros.• P: la estructura se basa en páginas in<strong>de</strong>xadas. (La opción P eraútil en los sistemas <strong>de</strong> la época en que se <strong>de</strong>sarrolló el FTP; hoydía está prácticamente en <strong>de</strong>suso.)• F: el fichero se consi<strong>de</strong>ra simplemente una secuencia <strong>de</strong> bytes (eneste caso se consi<strong>de</strong>ra que sólo hay estructura <strong>de</strong> fichero).Si no se utiliza el comando STRU, el tipo <strong>de</strong> estructura por <strong>de</strong>fecto es F.5) Modo <strong>de</strong> transmisión (MODE)El argumento indica cómo se transmitirán los ficheros. Pue<strong>de</strong> tenerlos valores siguientes:• B: la transmisión se lleva a cabo en bloques <strong>de</strong> datos, cada unoprecedido <strong>de</strong> una cabecera con la longitud <strong>de</strong>l bloque (2 bytes) yun código <strong>de</strong>scriptor (1 byte). Este último sirve para indicar, porejemplo, si el bloque es el último <strong>de</strong> un registro o <strong>de</strong>l fichero.ANOTACIONES217


ª FUOC • XP04/90786/00020Software libre• C: la transmisión se realiza en bloques más compactos, con cabeceras<strong>de</strong> un solo byte, y permiten codificar una secuencia <strong>de</strong> hasta64 bytes repetidos en un bloque <strong>de</strong> 2 bytes.NotaLa combinación modostream y estructura <strong>de</strong> ficheroes la única que requierecerrar la conexión <strong>de</strong> datos<strong>de</strong>spués <strong>de</strong> cada transferencia.En los otros casos, elservidor pue<strong>de</strong> optar entremantenerla abierta o cerrarla,e informa <strong>de</strong> la mismaal cliente con unarespuesta 250 o 226, respectivamente.• S: la transmisión se efectúa en modo stream; es <strong>de</strong>cir, comouna simple secuencia <strong>de</strong> bytes. Si se utiliza con el tipo <strong>de</strong> estructuraen registros, se insertan códigos <strong>de</strong> control en la secuenciapara señalar los finales <strong>de</strong> registro y <strong>de</strong> fichero. Si eltipo <strong>de</strong> estructura es <strong>de</strong> fichero y la transmisión es en modostream, la única manera <strong>de</strong> indicar el final <strong>de</strong> fichero es cerrandola conexión <strong>de</strong> datos.Si no se utiliza el comando MODE, el modo <strong>de</strong> transmisión por <strong>de</strong>fectoes S.6) Tipo <strong>de</strong> representación (TYPE)Con este comando, se especifica cómo se representarán los datos<strong>de</strong> los ficheros que <strong>de</strong>ben transferirse. El proceso que los envía<strong>de</strong>be convertir el contenido <strong>de</strong> los ficheros en la representación especificada,y el proceso que los recibe, <strong>de</strong>be convertirlos en su representaciónlocal. Los valores posibles <strong>de</strong>l argumento son lossiguientes:• A: se utiliza la especificación NVT <strong>de</strong>finida en el protocolo Telnet(caracteres <strong>de</strong> 8 bits codificados en ASCII y finales <strong>de</strong> línea representadoscon la secuencia ).• E: se utilizan caracteres <strong>de</strong> 8 bits codificados en EBCDIC.ANOTACIONESNotaEn los tipos <strong>de</strong> representación A y E, un segundo argumentoopcional permite indicar cómo se especificala información <strong>de</strong> control para el formato vertical<strong>de</strong>l texto (separación entre párrafos, cambios <strong>de</strong> página,etc.) y pue<strong>de</strong> valer N (no hay información <strong>de</strong>formato), T (hay caracteres <strong>de</strong> control Telnet: AS-CII\EBCDIC) o C (se utiliza el formato <strong>de</strong>l estándarASA, RFC 740).218


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• I: se envía una imagen <strong>de</strong>l fichero consistente en una secuenciaarbitraria <strong>de</strong> bits, codificados en bytes (8 bits), que el receptor<strong>de</strong>be almacenar tal como le llega (o añadiendo ceros al final si elsistema local necesita que la longitud total sea múltiplo <strong>de</strong> algunacantidad).• L: se envía una secuencia <strong>de</strong> bytes lógicos <strong>de</strong> n bits, siendo n elvalor <strong>de</strong>l segundo argumento (obligatorio en este caso), con todoslos bits consecutivos agrupados en bytes <strong>de</strong> 8 bits. Según elvalor <strong>de</strong> n, es posible que el receptor necesite aplicar algunatransformación (reversible) para almacenar los datos.NotaSea cual sea el tipo <strong>de</strong> representación,la transferenciasiempre se realiza enbytes <strong>de</strong> 8 bits.Si no se utiliza el comando TYPE, el tipo <strong>de</strong> representación por <strong>de</strong>fectoes A (y sin información <strong>de</strong> formato vertical).7) Cambiar <strong>de</strong> directorio (CWD)Normalmente, cada usuario tiene asignado un directorio por <strong>de</strong>fectoen el sistema <strong>de</strong> ficheros <strong>de</strong>l servidor. Este comando sirve paracambiar el directorio <strong>de</strong> trabajo por el directorio que indica el argumento.8) Cambiar al directorio padre (CDUP)Este comando no recibe ningún argumento. Se trata <strong>de</strong> un caso particular<strong>de</strong>l anterior que el protocolo proporciona para facilitar el accesoal directorio padre <strong>de</strong>l actual con in<strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong> la sintaxisutilizada en el sistema <strong>de</strong> ficheros para referenciarlo.9) Montar un sistema <strong>de</strong> ficheros (SMNT)El argumento es un nombre que, en la sintaxis <strong>de</strong>l sistema <strong>de</strong> ficheros<strong>de</strong>l servidor, permite seleccionar un nuevo grupo <strong>de</strong> ficheros (por ejemplo,otro sistema <strong>de</strong> ficheros, otra partición <strong>de</strong>l disco, otro disco, etc.).10) Mostrar el directorio actual (PWD)En la respuesta a este comando (código 257), el servidor informa<strong>de</strong>l directorio actual. Para facilitar la interpretación <strong>de</strong> la respues-ANOTACIONES219


ª FUOC • XP04/90786/00020Software libreta, el nombre <strong>de</strong>l directorio <strong>de</strong>be ser la primera palabra que venga<strong>de</strong>spués <strong>de</strong>l código numérico, y <strong>de</strong>be ir <strong>de</strong>limitado por elcarácter “"”.11) Puerto <strong>de</strong> datos (PORT)NotaRecordad que el puerto <strong>de</strong>datos por <strong>de</strong>fecto <strong>de</strong>l clientees el mismo <strong>de</strong>s<strong>de</strong> el que haestablecido la conexión <strong>de</strong>control.Con este comando, el cliente indica cuál es su puerto <strong>de</strong> datos, encaso <strong>de</strong> que sea diferente <strong>de</strong>l puerto por <strong>de</strong>fecto. Para efectuar lastransferencias, el servidor <strong>de</strong>berá establecer la conexión <strong>de</strong> datos enel puerto especificado. Si ya había una conexión <strong>de</strong> datos establecidacon otro puerto cuando se recibe este comando, el servidor <strong>de</strong>berácerrarla.El argumento <strong>de</strong>be tener esta forma: h1,h2,h3,h4,p1,p2 (cadauno <strong>de</strong> los elementos es un número <strong>de</strong>cimal entre 0 y 255). Los cuatroprimeros números forman la dirección IP, y los dos últimos, el número<strong>de</strong> puerto (que se representa <strong>de</strong> más a menos peso).Cambio <strong>de</strong> puertoNotaCuando el modo <strong>de</strong> transmisión requiere cerrar la conexión<strong>de</strong>spués <strong>de</strong> cada transferencia, se suele utilizareste comando para ir variando el número <strong>de</strong> puerto yevitar así las <strong>de</strong>moras que pue<strong>de</strong> haber cuando se intentareutilizar un puerto TCP que se acaba <strong>de</strong> cerrar.ANOTACIONESNotaConsultad la figura mencionadaen el apartado 18.1.1.El cliente pue<strong>de</strong> especificar una dirección IP diferente <strong>de</strong> la suya; <strong>de</strong>esta manera, se pue<strong>de</strong> efectuar una transferencia entre dos servidores,como ilustra la figura <strong>de</strong>l mo<strong>de</strong>lo FTP, en que un cliente controlala transferencia <strong>de</strong> datos entre dos servidores.12) Puerto pasivo (PASV)Este comando sirve para indicar al servidor que, cuando se le envíe uncomando <strong>de</strong> transferencia, en lugar <strong>de</strong> establecer <strong>de</strong> manera activa laconexión <strong>de</strong> datos, <strong>de</strong>be quedar preparado para recibirla <strong>de</strong> manerapasiva. En la respuesta (código 227), el servidor <strong>de</strong>vuelve la dirección en220


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020que esperará las peticiones <strong>de</strong> conexión, y utilizará la misma notación<strong>de</strong>l argumento <strong>de</strong>l comando PORT.El comando PASV se utiliza en las transferencias entre servidores.El cliente <strong>de</strong>be establecer conexiones <strong>de</strong> control con los dos servidores,enviar un comando PASV a uno <strong>de</strong> los mismos y pasar ladirección <strong>de</strong>vuelta al otro con un comando PORT. Entonces <strong>de</strong>beenviar el comando <strong>de</strong> transferencia correspondiente (leer o almacenar)al servidor pasivo, y el comando complementario al activo.13) Reservar espacio (ALLO)Algunos sistemas pue<strong>de</strong>n requerir que se especifique la longitud<strong>de</strong> un fichero antes <strong>de</strong> almacenarlo. El argumento constituye elnúmero <strong>de</strong> bytes lógicos a reservar. Si es necesario, el primer argumentopue<strong>de</strong> ir seguido <strong>de</strong> la ca<strong>de</strong>na R n, don<strong>de</strong> n indica lalongitud máxima <strong>de</strong> los registros o páginas (para ficheros con tipo<strong>de</strong> estructura R o P).NotaRecordad que cada byte lógicotiene n bits, don<strong>de</strong> n esel argumento <strong>de</strong>l comandoTYPE L o, por <strong>de</strong>fecto, 8.14) Obtener (RETR)Ésta es la operación <strong>de</strong> transferencia <strong>de</strong> ficheros <strong>de</strong>l servidor haciael cliente (o hacia el servidor pasivo). El argumento es el nombre <strong>de</strong>lfichero que <strong>de</strong>be transferirse.Tanto en esta operación como en las <strong>de</strong> almacenar y añadir, si el modo<strong>de</strong> transmisión es B o C, el proceso que envía los datos pue<strong>de</strong> insertarun tipo especial <strong>de</strong> bloque <strong>de</strong>nominado marca <strong>de</strong> reanudación (su contenidoes un i<strong>de</strong>ntificador <strong>de</strong> la posición actual <strong>de</strong>l fichero), que <strong>de</strong>beráutilizarse en caso <strong>de</strong> error <strong>de</strong> la transferencia. Cuando encuentra lamarca, el receptor asocia a la posición actual un i<strong>de</strong>ntificador propio yse lo notifica al usuario. Si quien actúa <strong>de</strong> receptor es el servidor, activoo pasivo, la notificación se lleva a cabo por medio <strong>de</strong> una respuesta conel código 110 y el texto MARK c = s. (c y s son los i<strong>de</strong>ntificadores<strong>de</strong> la posición <strong>de</strong>l cliente y <strong>de</strong>l servidor, respectivamente).15) Almacenar (STOR)Ésta es la operación <strong>de</strong> transferencia <strong>de</strong> ficheros <strong>de</strong>l cliente hacia elservidor. El argumento es el nombre <strong>de</strong>l fichero en que el servidorANOTACIONES221


ª FUOC • XP04/90786/00020Software libre<strong>de</strong>be almacenar los datos. Si este fichero no existe, se crea; si ya existe,se <strong>de</strong>scarta su contenido y se sustituye por los datos recibidos.16) Almacenar con nombre único (STOU)Esta operación es como la anterior, pero sin argumento: el servidorelegirá un nombre para el fichero (en el directorio actual) que no coincidacon ninguno <strong>de</strong> los ya existentes. En la respuesta <strong>de</strong>be notificarseel nombre elegido.17) Añadir (APPE)Esta operación también es como la <strong>de</strong> almacenar, excepto que, si el ficheroya existe, los datos recibidos se añadirán al final <strong>de</strong> su contenido.18) Listar (LIST)El argumento <strong>de</strong> este comando es opcional. Si no hay argumento, elservidor envía por la conexión <strong>de</strong> datos una lista <strong>de</strong> los ficheros <strong>de</strong>ldirectorio actual y sus atributos, por lo general en un formato propio<strong>de</strong>l sistema. Si hay argumento, la lista se refiere al fichero o grupo <strong>de</strong>ficheros especificado, o a los ficheros contenidos en el directorio especificado.19) Listar nombres (NLST)ANOTACIONESNotaComo precaución, el clientese <strong>de</strong>bería asegurar que eltipo <strong>de</strong> representación es Ao E antes <strong>de</strong> enviar el comandoLIST o NLST.Este comando es como el anterior, pero con el formato <strong>de</strong> la listanormalizado, lo que significa que consta sólo <strong>de</strong> los nombres <strong>de</strong> losficheros, separados por finales <strong>de</strong> línea, que permite que la lista <strong>de</strong>vueltasea procesada, por ejemplo, para que el cliente pueda implementaruna operación para obtener un grupo <strong>de</strong> ficheros.20) Abortar (ABOR)Este comando hace que el servidor interrumpa la transferencia encurso (si hay) y, <strong>de</strong>spués, cierre la conexión <strong>de</strong> datos. Si no, simplementecierra la conexión <strong>de</strong> datos. En el primer caso, el servidor envíaun código 426 como respuesta al comando <strong>de</strong> transferencia y, acontinuación, un código 226 en respuesta al comando ABOR. En elsegundo caso, sólo envía la respuesta 226.222


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020NotaPara indicar que el servidor <strong>de</strong>be aten<strong>de</strong>r un comando(ABOR, STAT, QUIT) mientras se esté llevandoa cabo una transferencia, la especificación RFC959 sugiere que el cliente envíe para la conexión <strong>de</strong>control el código <strong>de</strong> función IP <strong>de</strong>l protocolo Telnet,seguido <strong>de</strong> una señal synch (es <strong>de</strong>cir, un envío <strong>de</strong>datos urgentes TCP combinado con el código DM),y a continuación el comando FTP.21) Retomar (REST)Si una transferencia ha sido interrumpida por cualquier causa (caída <strong>de</strong>lservidor, <strong>de</strong>l cliente, <strong>de</strong> la red, etc.) es posible retomarla a partir <strong>de</strong> unpunto indicado por una marca <strong>de</strong> reanudación. El cliente <strong>de</strong>be enviar elcomando REST con un argumento igual que el i<strong>de</strong>ntificador <strong>de</strong> posición<strong>de</strong>l servidor correspondiente a la marca <strong>de</strong>seada e, inmediatamente acontinuación, el comando <strong>de</strong> transferencia que <strong>de</strong>sea retomar.NotaRecordad que sólo pue<strong>de</strong>haber marcas <strong>de</strong> reanudaciónen los modos <strong>de</strong> transmisiónB o C.22) Borrar (DELE)El efecto <strong>de</strong> este comando es borrar el fichero especificado en el argumento.23) Nombre antiguo (RNFR)Para cambiar el nombre <strong>de</strong> un fichero, en primer lugar el cliente<strong>de</strong>be enviar este comando, con el nombre actual en el argumento e,inmediatamente, el comando RNTO.24) Nombre nuevo (RNTO)El argumento <strong>de</strong> este comando es el nombre nuevo que se <strong>de</strong>be conferiral fichero. Sólo se pue<strong>de</strong> utilizar inmediatamente a continuación<strong>de</strong> un comando RNFR.25) Crear un directorio (MKD)El servidor crea el directorio indicado por el argumento. Si la operacióntiene éxito, el formato <strong>de</strong>l código <strong>de</strong> respuesta (código 257) esidéntico al <strong>de</strong>l comando PWD.ANOTACIONES223


ª FUOC • XP04/90786/00020Software libreNotaSegún la especificación RFC 959, el nombre retornadoen la respuesta 257 <strong>de</strong>be ser apto para po<strong>de</strong>rlo utilizarcomo argumento <strong>de</strong>l comando CWD (cambiar directorio).Como en algunos sistemas (obsoletos) esteargumento no podía ser un nombre relativo al directorioactual, sino que <strong>de</strong>bía ser un nombre absoluto (yel <strong>de</strong>l comando MKD, en cambio, sí que podía ser relativo),por norma general los servidores respon<strong>de</strong>n alcomando MKD con el nombre completo <strong>de</strong>l directoriocreado.26) Borrar un directorio (RMD)El servidor borra el directorio indicado por el argumento.27) Estatus (STAT)Si se envía este comando durante una transferencia, el servidor incluyeen la respuesta información sobre el estado actual <strong>de</strong> la transferencia.Si no, se le pue<strong>de</strong> pasar un nombre <strong>de</strong> fichero como argumento paraque el servidor envíe información similar a la <strong>de</strong>l comando LIST, peropor la conexión <strong>de</strong> control, o bien se pue<strong>de</strong> utilizar sin argumento paraobtener información general sobre el proceso FTP.28) Sistema (SYST)ANOTACIONESNotaLa IANA (Internet AssignedNumbers Authority) es laencargada <strong>de</strong> publicar lalista <strong>de</strong> números asignados.En el momento <strong>de</strong> elaboraresta unidad, la última versión<strong>de</strong> la lista se pue<strong>de</strong> encontraren la especificaciónRFC 1700.ftp://ftp.isi.edu/in-notes/iana/assignments/El servidor envía una respuesta informando sobre qué tipo <strong>de</strong> sistemaes. La primera palabra <strong>de</strong>l texto <strong>de</strong>be ser uno <strong>de</strong> los nombres <strong>de</strong>sistema normalizados <strong>de</strong> la lista oficial <strong>de</strong> números asignados.EjemploUn cliente Unix pue<strong>de</strong> utilizar este comando para sabersi el servidor también es Unix y, si lo es, invocar automáticamenteel comando TYPE I para mejorar la eficiencia<strong>de</strong> las transmisiones.224


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002029) Servicios adicionales (SITE)Si el servidor ofrece servicios adicionales a<strong>de</strong>más <strong>de</strong> las operaciones estándar<strong>de</strong>l protocolo, el cliente pue<strong>de</strong> invocarlos por medio <strong>de</strong> los argumentos<strong>de</strong>l comando SITE, cuya sintaxis <strong>de</strong>pen<strong>de</strong> <strong>de</strong>l mismo servidor.30) Ayuda (HELP)Este comando, mediante el cual el servidor envía información generalsobre la implementación <strong>de</strong>l protocolo (por ejemplo, qué comandos soportay cuáles no), se pue<strong>de</strong> utilizar sin argumentos. No obstante, el servidortambién pue<strong>de</strong> proporcionar información más específica si se lepasan argumentos (por ejemplo, un nombre <strong>de</strong> comando).31) Operación nula (NOOP)El servidor simplemente envía una respuesta 200.32) Reinicializar (REIN)El servidor reinicializa la sesión olvidando la i<strong>de</strong>ntidad <strong>de</strong>l usuario yvolviendo a dar a los parámetros <strong>de</strong> transmisión los valores por <strong>de</strong>fecto.La sesión queda en el mismo estado en que se encontraba justo<strong>de</strong>spués <strong>de</strong> establecer la conexión <strong>de</strong> control.33) Acabar la sesión (QUIT)El servidor da la sesión por finalizada y cierra la conexión <strong>de</strong> control(si hay una transferencia en curso, <strong>de</strong>spués <strong>de</strong> enviar la respuesta correspondiente).La tabla siguiente resume la sintaxis <strong>de</strong> los comandos y los posiblescódigos <strong>de</strong> respuesta a cada uno <strong>de</strong> los mismos según la especificaciónRFC 959:Tabla 9.Sintaxis <strong>de</strong> los comandos y códigos <strong>de</strong> respuestaComandoEstablecimiento<strong>de</strong> conexión220, 120, 421USER usuario 230, 331, 332, 530RespuestaANOTACIONES225


ª FUOC • XP04/90786/00020Software libreSintaxis <strong>de</strong> los comandos y códigos <strong>de</strong> respuestaComandoRespuestaPASS contraseña 230, 202, 332, 530ACCT cuenta 230, 202, 530STRU F|R|P 200, 504MODE S|B|C 200, 504TYPE A|E|I|L[N|T|C|n]200, 504CWD directorio 250, 550CDUP 250, 550SMNT sist-ficheros 250, 202, 550PWD 257, 550PORTh1,h2,h3,h4,p1,p2200PASV 227ALLO long-1[R long-2]200, 202, 504RETR fichero 226, 250, 110, 125, 150, 550STOR ficheroSTOUAPPE fichero226, 250, 110, 125, 150, 452, 532, 552,553226, 250, 110, 125, 150, 452, 532, 552,553226, 250, 110, 125, 150, 452, 532, 550,552, 553LIST [nombre] 226, 250, 125, 150NLST [nombre] 226, 250, 125, 150ABOR 226REST marca 350DELE fichero 250, 550RNFR fichero 350, 450, 550RNTO fichero 250, 503, 532, 553MKD directorio 257, 550ANOTACIONESRMD directorio 250, 550STAT [nombre] 211, 212, 213SYST 215SITE ca<strong>de</strong>na... 200, 202HELP [ca<strong>de</strong>na] 211, 214NOOP 200REIN 220, 120, 421QUIT 221226


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020A<strong>de</strong>más <strong>de</strong> los códigos <strong>de</strong> respuesta específicos contenidos en estatabla, el cliente también pue<strong>de</strong> recibir códigos <strong>de</strong> respuesta generalesa cada comando, como 500, 501, 502, 530 y 421, o bien, en elcaso <strong>de</strong> los comandos <strong>de</strong> transferencia, 425, 426 y 450.NotaLa respuesta 502 sólo es válidapara los comandos nobásicos; es <strong>de</strong>cir, los que nopertenecen al grupo <strong>de</strong> la“implementación mínima”18.1.4. Implementaciones <strong>de</strong>l FTPA la hora <strong>de</strong> implementar el protocolo FTP, <strong>de</strong>bemos distinguir servidor<strong>de</strong> cliente:1) Servidores FTPSegún la especificación RFC 959, la implementación mínima <strong>de</strong> unservidor FTP <strong>de</strong>be soportar los comandos siguientes:• USER• RETR• TYPE A N• NOOP• STOR• MODE S• QUIT• PORT• STRU F• STRU RNotaMuchos servidores soportan el acceso público (posiblementerestringido) a una parte <strong>de</strong> su sistema <strong>de</strong> ficherossin necesidad <strong>de</strong> seguir el procedimiento normal <strong>de</strong> autenticación.Este tipo <strong>de</strong> servicio se conoce como FTP anónimo. Pornorma general, se acce<strong>de</strong> al mismo utilizando el nombre<strong>de</strong> usuario anonymous como argumento <strong>de</strong>l comandoUSER. Si el servidor pi<strong>de</strong> una contraseña,suele aceptar cualquier ca<strong>de</strong>na. En este caso, es costumbreproporcionar la dirección <strong>de</strong> correo electrónico<strong>de</strong>l usuario como contraseña.ANOTACIONES227


ª FUOC • XP04/90786/00020Software libre2) Clientes FTPEn la actualidad, existen muchas implementaciones <strong>de</strong> clientes FTPpara una gran variedad <strong>de</strong> sistemas diferentes (incluyendo los navegadoresWWW); sin embargo, el cliente más utilizado durante muchotiempo ha sido la utilidad <strong>de</strong>l sistema operativo Unix y <strong>de</strong> lasdistribuciones GNU/Linux <strong>de</strong>nominada precisamente ftp.Este cliente presenta al usuario la mayoría <strong>de</strong> las respuestas <strong>de</strong>l servidor,incluyendo los códigos numéricos. Los principales comandosque ofrece son los siguientes:NotaRecordad que los nombres<strong>de</strong> los comandos se pue<strong>de</strong>nabreviar siempre que no generenambigüeda<strong>de</strong>s.• open: permite especificar el nombre <strong>de</strong>l servidor al que es precisoconectarse, si no se ha pasado como argumento <strong>de</strong>l programa, yentonces pi<strong>de</strong> automáticamente el nombre <strong>de</strong> usuario y, si proce<strong>de</strong>,la contraseña.• cd, pwd, dir: envían los comandos CWD, PWD y LIST al servidor.• ascii, binary: envían los comandos TYPE A y TYPE I al servidor.• get: efectúa la secuencia PORT-RETR para copiar un fichero <strong>de</strong>lservidor.• put: efectúa la secuencia PORT-STOR para copiar un fichero enel servidor.• ^C (o el carácter que genere la señal <strong>de</strong> interrupción): envía el comandoABOR.• <strong>de</strong>lete, mkdir, rmdir: envían los comandos DELE, MKD yRMD.ANOTACIONES• rename: envía la secuencia RNFR-RNTO necesaria para cambiarel nombre <strong>de</strong> un fichero.• mget: envía el comando NLST para saber qué ficheros concuerdancon un patrón, y <strong>de</strong>spués una serie <strong>de</strong> comandos RETR parapo<strong>de</strong>rlos copiar.• mput: envía una serie <strong>de</strong> comandos STOR.• m<strong>de</strong>lete: envía el comando NLST y, a continuación, una serie <strong>de</strong>comandos DELE.228


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• quote: permite enviar un comando directamente al servidor (porejemplo, quote syst).• ?: muestra un mensaje <strong>de</strong> ayuda.• quit o bye: envía el comando QUIT y cierra el programa.18.1.5. Ejemplo <strong>de</strong> sesión FTPA continuación, mostramos los mensajes intercambiados entre uncliente y un servidor en una hipotética sesión <strong>de</strong> transferencia pormedio <strong>de</strong> la utilidad ftp.Después <strong>de</strong> cada comando <strong>de</strong> usuario, se muestran los mensajes enviados,y se indica su origen y el <strong>de</strong>stino (C para el cliente, S para elservidor), y el número <strong>de</strong> puerto:open ftp.uoc.esC:4695 → S:21 (establecimiento <strong>de</strong> conexión)S:21 → C:4695 220 tibet FTP server (5.6) ready.(usuari) anonymousC:4695 → S:21 USER anonymousS:21 → C:4695 331 Guest login ok, send i<strong>de</strong>ntas password.(contraseña) usuari@acme.comC:4695 → S:21 PASS usuari@acme.comS:21 → C:4695 230 Guest login ok, access restrictionsapply.cd pubC:4695 → S:21 CWD pubS:21 → C:4695 250 CWD command successful.dirC:4695 → S:21 PORT 193,146,196,254,18,88S:21 → C:4695 200 PORT command successful.C:4695 → S:21 LISTS:20 → C:4696 (establecimiento <strong>de</strong> conexión)S:21 → C:4695 150 ASCII data connection for /bin/ls(193.146.196.254,4696) (0 bytes).S:20 → C:4696 total 20drwxr-xr-x 7 0 other 512 Aug 3 07:10....S:20 → C:4696 (cierre <strong>de</strong> conexión)S:21 → C:4695 226 ASCII Transfer complete.ANOTACIONES229


ª FUOC • XP04/90786/00020Software librecd docC:4695 → S:21 CWD docS:21 → C:4695 250 CWD command successful.dirC:4695 → S:21 PORT 193,146,196,254,18,89S:21 → C:4695 200 PORT command successful.C:4695 → S:21 LISTS:20 → C:4697 (establecimiento <strong>de</strong> conexión)S:21 → C:4695 150 ASCII data connection for /bin/ls(193.146.196.254,4697) (0 bytes).S:20 → C:4697 total 886drwxr-xr-x 2 0 other 512 Oct 24 1996 ....S:20 → C:4697 (cierre <strong>de</strong> conexión)S:21 → C:4695 226 ASCII Transfer complete.get READMEC:4695 → S:21 PORT 193,146,196,254,18,91S:21 → C:4695 200 PORT command successful.C:4695 → S:21 RETR READMES:20 → C:4699 (establecimiento <strong>de</strong> conexión)S:21 → C:4695 150 ASCII data connection for README(193.146.196.254,4699) (95 bytes).S:20 → C:4699 (contenido <strong>de</strong>l fichero)S:20 → C:4699 (cierre <strong>de</strong> conexión)S:21 → C:4695 226 ASCII Transfer complete.byeC:4695 → S:21 QUITS:21 → C:4695 221 Goodbye.S:21 → C:4695 (cierre <strong>de</strong> conexión)18.2. El TFTPHay situaciones en las que se necesita transferir ficheros <strong>de</strong> un or<strong>de</strong>nadora otro y el FTP no es apropiado, principalmente a causa <strong>de</strong> sucomplejidad.ANOTACIONESNotaUn ejemplo típico en el que se observa la necesidad<strong>de</strong> transferir ficheros <strong>de</strong> un or<strong>de</strong>nador a otro es el <strong>de</strong>las estaciones <strong>de</strong> trabajo sin disco, que cargan el sistemaoperativo por medio <strong>de</strong> la red. En este caso,<strong>de</strong>be haber un or<strong>de</strong>nador que funcione como “servidor<strong>de</strong> arranque” <strong>de</strong> la estación, proporcionándole elfichero o ficheros en que se encuentra el código ejecutable<strong>de</strong>l sistema operativo.230


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Un pequeño programa resi<strong>de</strong>nte en la memoria ROM<strong>de</strong> la estación <strong>de</strong>be controlar la transferencia <strong>de</strong> los ficheros.Para esta operación el FTP no es a<strong>de</strong>cuado, puestoque requiere una implementación <strong>de</strong>l protocolo <strong>de</strong>transporte TCP, establecer en el mismo diferentes conexionessimultáneas, etc.Para satisfacer las necesida<strong>de</strong>s <strong>de</strong> transmisiones simplificadas,se ha <strong>de</strong>finido el TFTP, cuya última versión estáespecificada en el estándar RFC 1350.Este protocolo está basado en datagramas, sólo proporcionados operaciones (leer y escribir ficheros) y no hayningún tipo <strong>de</strong> i<strong>de</strong>ntificación ni autenticación <strong>de</strong> usuario.18.2.1. Conceptos básicos <strong>de</strong>l TFTPComo el TFTP se basa en datagramas, generalmente se utiliza con elprotocolo <strong>de</strong> transporte UDP. El número <strong>de</strong> puerto al que el cliente<strong>de</strong>be enviar las peticiones <strong>de</strong> servicio es el 69.Una transferencia TFTP se inicia con un datagrama enviado por elcliente en el que se solicita la operación <strong>de</strong>seada: leer o escribir unfichero. A partir <strong>de</strong> entonces, se establece un diálogo en el que cadaparte envía un datagrama <strong>de</strong> manera alternada. Cada uno <strong>de</strong> estosdatagramas sirve <strong>de</strong> confirmación <strong>de</strong> recepción <strong>de</strong>l anterior. Ello significaque en cada momento sólo pue<strong>de</strong> haber un datagrama pendiente<strong>de</strong> ser confirmado.De este modo, la recuperación <strong>de</strong> los errores <strong>de</strong> transmisión es muysimple: si pasa un tiempo sin que llegue la respuesta a un datagrama,se reenvía y si se recibe un datagrama que ya se había recibidocon anterioridad, se ignora. Por tanto, basta con guardar el últimodatagrama enviado por si <strong>de</strong>be retransmitirse.Lectura complementariaSi queréis más informaciónsobre el TFTP, consultad laobra siguiente:K. Sollins (1992, julio). RFC1350 - The TFTP protocol.ANOTACIONES231


ª FUOC • XP04/90786/00020Software libreEl cliente <strong>de</strong>be enviar su primer datagrama <strong>de</strong>s<strong>de</strong> un puerto C alpuerto 69 <strong>de</strong>l servidor. Cuando lo recibe, el servidor elige un número<strong>de</strong> puerto S que <strong>de</strong>bería ir cambiando en cada transferencia. Todoslos datagramas que envíe el servidor tendrán como puerto <strong>de</strong> origenel número S y como puerto <strong>de</strong> <strong>de</strong>stino el número C; todos los datagramasque envíe el cliente, excepto el primero, tendrán comopuerto <strong>de</strong> origen el número C y como puerto <strong>de</strong> <strong>de</strong>stino el número S.Ello permite <strong>de</strong>tectar una posible duplicación <strong>de</strong>l primer datagrama:si el servidor lo recibe dos veces o más, <strong>de</strong>be enviar ambas respuestas<strong>de</strong>s<strong>de</strong> puertos diferentes; el cliente aceptará la primera y enviarámensajes <strong>de</strong> error a los puertos <strong>de</strong> los que provengan las otras.NotaHabrá un último bloque <strong>de</strong>cero bytes sólo cuando lalongitud <strong>de</strong>l fichero que<strong>de</strong>ba transmitirse sea múltiplo<strong>de</strong> 512.En el transcurso <strong>de</strong> la transferencia, una <strong>de</strong> las partes envía los datos <strong>de</strong>lfichero y la otra sólo envía confirmaciones. Los datos se envían en bloques<strong>de</strong> longitud fija, 512 bytes, excepto el último bloque, que tendráentre 0 y 511 bytes. Cada bloque se envía en un datagrama.La transferencia se acaba cuando el receptor recibe el último bloque <strong>de</strong>datos y envía la confirmación correspondiente. En este momento, pue<strong>de</strong>dar por finalizada la comunicación. Opcionalmente, pue<strong>de</strong> esperar porsi vuelve a recibir el último bloque, lo que significaría que la última confirmaciónno ha llegado al emisor. Si suce<strong>de</strong> esto, sólo es preciso reenviaresta confirmación.Por su parte, el emisor dará por acabada la transferencia cuando recibala última confirmación o cuando haya transcurrido cierto tiempo retransmitiendoel último bloque <strong>de</strong> datos y no reciba respuesta. En esteúltimo caso, podría ser que la transferencia se hubiera efectuado correctamentey que el único problema estuviera en la transmisión <strong>de</strong> la últimaconfirmación.ANOTACIONES18.2.2. Funcionalidad <strong>de</strong>l TFTPEl TFTP ofrece dos operaciones básicas: leer ficheros <strong>de</strong>l servidor yescribir ficheros en el servidor. El datagrama inicial indica la operaciónque el cliente quiere llevar a cabo y tiene el formato siguiente:Figura 81.232


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020El código <strong>de</strong> operación es un número <strong>de</strong> dos bytes, que pue<strong>de</strong> serRRQ o WRQ si el cliente solicita leer o escribir un fichero, respectivamente.A continuación, existen dos ca<strong>de</strong>nas <strong>de</strong> caracteres, acabadascon un byte igual a cero: la primera es el nombre <strong>de</strong>l fichero y la segundaes el modo <strong>de</strong> transferencia (el equivalente <strong>de</strong>l tipo <strong>de</strong> representaciónen FTP). Esta segunda ca<strong>de</strong>na pue<strong>de</strong> ser netascii uoctet (en caracteres ASCII, y en cualquier combinación <strong>de</strong> mayúsculasy minúsculas). El primer valor indica que los datos son caracteresASCII tal como se usan en el protocolo Telnet, y el segundoindica que los datos son bytes arbitrarios <strong>de</strong> 8 bits.NotaEn versiones anteriores <strong>de</strong>l protocolo, había un tercermodo <strong>de</strong> transferencia llamado mail, sólo aplicable alas operaciones <strong>de</strong> escritura, en el que el nombre <strong>de</strong>lfichero era sustituido por el nombre <strong>de</strong> un usuario que<strong>de</strong>bía recibir los datos por correo.Los datagramas que contienen los datos y las confirmaciones <strong>de</strong> recepcióntienen los formatos siguientes:Figura 82.El primer campo es el código <strong>de</strong> operación y el segundo es el número<strong>de</strong> bloque que se envía o se confirma (ambos campos son <strong>de</strong> dos bytes).Cada bloque <strong>de</strong>l fichero tiene un número correlativo, empezandopor 1, que sirve para distinguir las confirmaciones duplicadas.Si el cliente envía un datagrama inicial RRQ, el servidor contesta conun datagrama DATA con número <strong>de</strong> bloque igual a 1 y, si el clienteenvía un datagrama inicial WRQ, el servidor contesta con un datagramaACK con número <strong>de</strong> bloque igual a 0 y, a continuación, el clienteANOTACIONES233


ª FUOC • XP04/90786/00020Software libreenvía el primer datagrama <strong>de</strong> datos. Entonces, cliente y servidor seintercambian datagramas ACK y DATA <strong>de</strong> manera alternada, con lasretransmisiones necesarias si no llega el datagrama que correspon<strong>de</strong>en cada momento.El TFTP también prevé la terminación <strong>de</strong> la transferencia si se producealgún error. Cuando se <strong>de</strong>tecta el error, se envía un datagramacon el formato siguiente:Figura 83.NotaSi llega un datagrama <strong>de</strong>lservidor con un número <strong>de</strong>puerto <strong>de</strong> origen incorrecto(probablemente a causa <strong>de</strong>un datagrama inicial duplicado),la transferencia coneste puerto queda interrumpida,pero la que utiliza elpuerto correcto <strong>de</strong>be continuarcon normalidad.Los dos primeros campos son el código <strong>de</strong> operación y el código <strong>de</strong>error (cada uno <strong>de</strong> dos bytes). A continuación, hay una ca<strong>de</strong>na <strong>de</strong> caracteres,acabada en 0, que pue<strong>de</strong> servir para <strong>de</strong>scribir a un usuariohumano la causa <strong>de</strong>l error.Un datagrama <strong>de</strong> error indica que se da por acabada la transferenciay no <strong>de</strong>be confirmarse ni, por tanto, retransmitirse. Ahora bien, sipor alguna razón se pier<strong>de</strong> este datagrama, la otra parte interpretaráque la transferencia ha acabado prematuramente cuando hayatranscurrido cierto tiempo retransmitiendo sin recibir nada.En las tablas siguientes se presenta una relación <strong>de</strong> los códigos numéricosasignados a cada operación y a cada tipo <strong>de</strong> error TFTP:Tablas 10 y 11.Código Operación Código ErrorANOTACIONES1 RRQ 0 Error in<strong>de</strong>finido (veáse el mensaje)2 WRQ 1 No se ha encontrado el fichero3 DATA 2 Acceso <strong>de</strong>negado4 ACK 3 Disco lleno5 ERROR 4 Operación no válida5 Número <strong>de</strong> puerto incorrecto6 Ya existe el fichero7 Usuario incorrecto (en modo mail)234


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002018.2.3. Implementaciones <strong>de</strong>l TFTPEn muchos sistemas Unix y distribuciones GNU/Linux hay un servidor<strong>de</strong>l TFTP llamado tftpd. Como no existe ningún tipo <strong>de</strong> i<strong>de</strong>ntificación<strong>de</strong> usuario, los clientes pue<strong>de</strong>n acce<strong>de</strong>r en principio a cualquierfichero con permisos <strong>de</strong> acceso público. En algunos sistemas, sin embargo,pue<strong>de</strong> restringirse el acceso a un directorio o unos directorios<strong>de</strong>terminados. No obstante, el servicio TFTP suele estar inhabilitado,y sólo lo ofrecen los sistemas en que se necesita por algún motivoconcreto (por ejemplo, los servidores <strong>de</strong> arranque <strong>de</strong> las estacionessin disco).NotaPor norma general hay undirectorio llamado /tftpbooten el que se guardanlas imágenes <strong>de</strong> los sistemasoperativos <strong>de</strong> los clientessin disco, y sólo sepermite a este directorio elacceso por medio <strong>de</strong>l TFTP.Asimismo, hay un programa cliente llamado tftp que funciona <strong>de</strong>manera similar a la utilidad ftp: admite comandos como get, put,ascii, binary o quit (pero no cd, dir, <strong>de</strong>lete, rename, etc.,porque el protocolo no los soporta).ANOTACIONES235


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002019. Correo electrónico InternetEl correo electrónico es la aplicación distribuida quepermite enviar mensajes electrónicos por medio <strong>de</strong> sistemasinformáticos.Al especificar esta aplicación, se consi<strong>de</strong>ró a<strong>de</strong>cuado que todas suscaracterísticas siguieran las i<strong>de</strong>as básicas <strong>de</strong>l correo postal:• Las operaciones permiten básicamente enviar mensajes y recibirlos.• Los elementos son equivalentes a los mensajes, los usuarios, lasoficinas <strong>de</strong> correo y los buzones.• La funcionalidad está basada en la filosofía <strong>de</strong>l almacenamiento yel reenvío: cuando un mensaje llega a una oficina <strong>de</strong> correos, estaúltima lo almacena y no lo reenvía hasta el momento en que lo consi<strong>de</strong>raoportuno. De este modo, los mensajes van <strong>de</strong> oficina <strong>de</strong> correosen oficina <strong>de</strong> correos hasta que llegan al <strong>de</strong>stinatario.Para llevar a cabo esta funcionalidad, se <strong>de</strong>finieron los protocolos siguientes:NotaLa filosofía <strong>de</strong>l almacenamientoy el reenvío permitesuperar problemas comolas caídas <strong>de</strong> la red; en estecaso, los mensajes no sepier<strong>de</strong>n, puesto que encada momento hay una oficinaresponsable <strong>de</strong>l mensaje.• SMTP (simple mail transfer protocol), para la transferencia <strong>de</strong>mensajes.• POP3 (post office protocol), para el acceso simple a buzones <strong>de</strong>correo.• IMAP4rev1 (Internet message access protocol), para el accesocomplejo a buzones <strong>de</strong> correo.También fue necesario <strong>de</strong>finir un formato <strong>de</strong> mensaje, el RFC 822,que con posterioridad se amplió y dio lugar al formato MIME.ANOTACIONES237


ª FUOC • XP04/90786/00020Software libre19.1. Formato <strong>de</strong> los mensajes: el RFC 822Lectura complementariaSi <strong>de</strong>seáis más informaciónsobre el formato <strong>de</strong> losmensajes <strong>de</strong> correo Internet,el RFC 822, consultad laobra siguiente:D. Crocker (1982, 13 <strong>de</strong>agosto). RFC 822 - Standardfor the format of ARPA Internettext messages.Antes <strong>de</strong> <strong>de</strong>scribir los diferentes protocolos relacionados con el correoelectrónico, es preciso ver cuál es el formato o la norma <strong>de</strong> losmensajes que se utiliza en el mismo. Este formato recibe el nombre<strong>de</strong>l estándar en que se especifica, RFC 822, y se basa en los elementostípicos <strong>de</strong> las cartas postales; es <strong>de</strong>cir, el sobre, que contiene lainformación <strong>de</strong>l <strong>de</strong>stinatario y <strong>de</strong>l remitente <strong>de</strong> la carta, el contenido,que es el mensaje en sí.El estándar especifica que los mensajes <strong>de</strong> correo electrónico estánformados por las dos partes siguientes:NotaConsultad en el anexo 3 lanotación que se utiliza para<strong>de</strong>scribir los campos <strong>de</strong> losmensajes.• La cabecera, que recoge la información general <strong>de</strong>l mensaje.Equivale al sobre <strong>de</strong> la carta postal y está formada por una serie<strong>de</strong> campos <strong>de</strong> cabecera, cada uno <strong>de</strong> los cuales incluye un tipoconcreto <strong>de</strong> información.• El cuerpo <strong>de</strong>l mensaje, que contiene el mensaje en sí. Correspon<strong>de</strong>al contenido <strong>de</strong> la carta postal. Esta parte es opcional.Cada campo <strong>de</strong> cabecera consta <strong>de</strong> un nombre <strong>de</strong>l campo (quei<strong>de</strong>ntifica el tipo <strong>de</strong> información) seguido por el carácter “:”, opcionalmenteacompañado por un cuerpo <strong>de</strong>l campo (que incluye la información<strong>de</strong>l campo), y acaba con un carácter . El formato<strong>de</strong> los campos es el siguiente:Nombre<strong>de</strong>lCampo:[Cuerpo<strong>de</strong>lCampo]ANOTACIONESPor norma general, cada campo <strong>de</strong> cabecera se representa en unasola línea, empezando <strong>de</strong>s<strong>de</strong> el primer carácter <strong>de</strong> la misma. En elcaso <strong>de</strong> que se necesite más <strong>de</strong> una, es preciso codificar estas líneasadicionales empezando por un carácter, o más, <strong>de</strong> espacio o tabulador.El cuerpo <strong>de</strong>l mensaje es simplemente una secuencia <strong>de</strong> líneas concaracteres ASCII. El cuerpo está separado <strong>de</strong> la cabecera por una líneanula (es <strong>de</strong>cir, por la secuencia ).238


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Algunos sistemas <strong>de</strong> correo electrónico permiten reenviar mensajes alos usuarios. Por este motivo, se incluyen en el mismo unos campos <strong>de</strong>cabecera con información sobre el reenvío. Estos campos son los quellevan el prefijo Resent- y tienen la misma semántica que los camposcorrespondientes que no lo llevan. No obstante, siempre convendrátener presente que, <strong>de</strong>ntro <strong>de</strong> un mensaje, los campos que llevanprefijo son los más recientes.19.1.1. Información <strong>de</strong> la cabeceraLos campos <strong>de</strong> cabecera <strong>de</strong>l mensaje <strong>de</strong>ben proporcionar informacióngeneral <strong>de</strong>l mensaje, incluyendo la información equivalente ala <strong>de</strong> un sobre postal; <strong>de</strong> este modo, encontramos los campos siguientes:NotaConsultad el formato <strong>de</strong> lasdirecciones para i<strong>de</strong>ntificarlos buzones <strong>de</strong> usuario en elapartado 19.2.2.1) Originador (From/Resent-From)La i<strong>de</strong>ntidad y la dirección <strong>de</strong>l buzón <strong>de</strong> la persona o las personasque originan el mensaje se pue<strong>de</strong> incluir en el campo Fromo Resent-From. En este campo, se pue<strong>de</strong> introducir la dirección<strong>de</strong>l buzón <strong>de</strong> un originador o más.From: 1#direcciónResent-From: 1#dirección2) Destinatario (To/Resent-To)El RFC 822 i<strong>de</strong>ntifica al <strong>de</strong>stinatario o <strong>de</strong>stinatarios principales <strong>de</strong>lmensaje por medio <strong>de</strong>l campo To o Resent-To. En este campo, sepue<strong>de</strong> introducir la dirección <strong>de</strong> un <strong>de</strong>stinatario o más.To: 1#direcciónResent-To: 1#dirección3) Destinatario <strong>de</strong> copia (Cc/Resent-cc)Asimismo, existe la posibilidad <strong>de</strong> enviar copias <strong>de</strong> un mensaje. En estecaso, la i<strong>de</strong>ntidad <strong>de</strong>l receptor o receptores secundarios <strong>de</strong>l mensajeANOTACIONES239


ª FUOC • XP04/90786/00020Software librese especifica con el campo Cc o Resent-cc. En este último, se pue<strong>de</strong>introducir la dirección <strong>de</strong> un <strong>de</strong>stinatario <strong>de</strong> copia o más.Cc: 1#direcciónResent-cc: 1#dirección4) Destinatario adicional (o <strong>de</strong> copia ciega) (Bcc/Resent-bcc)Cuando se <strong>de</strong>sea enviar una copia <strong>de</strong>l mensaje a <strong>de</strong>stinatarios adicionales,sin que ninguno <strong>de</strong> ellos (los principales, los <strong>de</strong> copia y los<strong>de</strong> copia ciega) sepan que otros <strong>de</strong>stinatarios la han recibido, se utilizael campo Bcc o Resent-bcc que no lo ve ninguno <strong>de</strong> ellos.Bcc: 1#direcciónResent-bcc: 1#dirección5) Destinatario <strong>de</strong> respuesta (Reply-To/Resent-Reply-To)La i<strong>de</strong>ntificación <strong>de</strong>l <strong>de</strong>stinatario o <strong>de</strong>stinatarios a los que <strong>de</strong>benenviarse las respuestas se pue<strong>de</strong> llevar a cabo por medio <strong>de</strong>lcampo Reply-To o Resent-Reply-To ; en este último se pue<strong>de</strong>introducir la dirección <strong>de</strong> un <strong>de</strong>stinatario <strong>de</strong> la respuesta omás.Reply-To: 1#direcciónResent-Reply-To:1# dirección6) Asunto (Subject)ANOTACIONESOtra posibilidad que ofrece el RFC 822 es enviar un texto explicativo<strong>de</strong>l asunto <strong>de</strong>l mensaje con el campo Subject.Subject: texto7) Data (Date/Resent-Date)Dentro <strong>de</strong> un mensaje también pue<strong>de</strong> incluirse la hora y la fecha enque se envía por medio <strong>de</strong>l campo Date o Resent-Date. El primer240


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020sistema <strong>de</strong> correo que recibe el mensaje genera automáticamenteeste campo.Date: fecha-horaResent-Date: fecha-hora8) Sistema remitente (Sen<strong>de</strong>r/Resent-Sen<strong>de</strong>r)Algunas veces el usuario que envía el mensaje no es el mismo que elautor. En estos casos, la i<strong>de</strong>ntidad <strong>de</strong>l agente (persona, sistema oproceso) que envía en realidad el mensaje se i<strong>de</strong>ntifica con el campoSen<strong>de</strong>r o Resent-Sen<strong>de</strong>r.Sen<strong>de</strong>r: buzónResent-Sen<strong>de</strong>r: buzón9) Camino <strong>de</strong> retorno hacia el originador (Return-path)El mensaje pue<strong>de</strong> incluir la i<strong>de</strong>ntificación <strong>de</strong>l camino <strong>de</strong> retorno haciael originador <strong>de</strong>l mensaje con el campo Return-path. Estecampo lo aña<strong>de</strong> el sistema <strong>de</strong> transporte final que entrega el mensajeal receptor.Return-path: addr-ruta10) Información <strong>de</strong> sistemas intermedios (Received)Existe la posibilidad <strong>de</strong> que cada sistema <strong>de</strong> transporte intermediopor el cual pasa el mensaje incluya información <strong>de</strong> los sistemas emisor(from) y receptor (by), <strong>de</strong>l mecanismo físico (via), <strong>de</strong>l i<strong>de</strong>ntificador<strong>de</strong>l mensaje (id), <strong>de</strong> las especificaciones originales (for) y <strong>de</strong> lahora <strong>de</strong> recepción por medio <strong>de</strong>l campo Received. Cada sistemaintermedio aña<strong>de</strong> una copia <strong>de</strong> este campo al mensaje.Received:[from dominio][by dominio][via atom]*(with atom)[id id-msg][for addr-spec]; fecha-horaANOTACIONES241


ª FUOC • XP04/90786/00020Software libre11) I<strong>de</strong>ntificador <strong>de</strong>l mensaje (Message-ID/Resent-Message-ID)Cada mensaje <strong>de</strong>be incluir un i<strong>de</strong>ntificador único <strong>de</strong>l mensaje, para quepueda ser contestado o referenciado con posterioridad, en el campoMessage-ID o Resent-Message-ID. El sistema que genera el i<strong>de</strong>ntificadores el encargado <strong>de</strong> asegurar que el i<strong>de</strong>ntificador sea único.Message-ID: id-msgResent-Message-ID: id-msg12) I<strong>de</strong>ntificador <strong>de</strong>l mensaje contestado (In-Reply-To)Cuando un mensaje constituye la respuesta <strong>de</strong> un mensaje anterior,el mensaje original se pue<strong>de</strong> referenciar por medio <strong>de</strong> su i<strong>de</strong>ntificador<strong>de</strong>ntro <strong>de</strong>l campo In-Reply-To.In-Reply-To:*(frase | id-msg)13) I<strong>de</strong>ntificador <strong>de</strong> mensajes referenciados (References)Si se <strong>de</strong>sea enviar un mensaje que se refiere a otros mensajes, eli<strong>de</strong>ntificador <strong>de</strong>l mensaje referenciado se pue<strong>de</strong> incluir <strong>de</strong>ntro <strong>de</strong>lcampo References.References:*(frase | id-msg)14) Palabras clave (Keywords)Las palabras clave o frases referentes al mensaje se pue<strong>de</strong>n incluir,separadas por comas, <strong>de</strong>ntro <strong>de</strong>l campo Keywords.ANOTACIONESKeywords: #frase15) Comentarios (Comments)Se pue<strong>de</strong> incluir un texto <strong>de</strong> comentario en el mensaje, sin interferirsu contenido, por medio <strong>de</strong>l campo Comments.Comments: texto242


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002016) I<strong>de</strong>ntificación <strong>de</strong>l mecanismo <strong>de</strong> cifrado (Encrypted)El RFC 822 permite cifrar el cuerpo <strong>de</strong>l mensaje. En este caso, es convenienteenviar una o dos palabras que i<strong>de</strong>ntifiquen el mecanismo<strong>de</strong> cifrado que se ha aplicado utilizando el campo Encrypted.Encrypted: 1#2palabrasNotaEl RFC 822 sólo <strong>de</strong>fine la sintaxis para especificar unmecanismo <strong>de</strong> cifrado; sin embargo, no especifica elmecanismo ni la manera <strong>de</strong> utilizarlo.17) Campos <strong>de</strong> uso personal.El estándar permite también que los usuarios <strong>de</strong>finan campos parauso personal. El nombre <strong>de</strong> los campos creados por un usuario <strong>de</strong>beempezar obligatoriamente por la ca<strong>de</strong>na X-.X-campo-uso-personal18) Campos <strong>de</strong> extensiónEn el futuro se pue<strong>de</strong>n estandarizar nuevos campos <strong>de</strong> cabecera.Para que no haya conflictos con los campos <strong>de</strong> uso personal, el nombre<strong>de</strong> los campos nunca empezará por la ca<strong>de</strong>na X-.campo-extensiónEl estándar RFC 822 establece que los únicos campos<strong>de</strong> cabecera que son obligatorios en un mensajeson los siguientes: fecha (Date), originadores(From), y <strong>de</strong>stinatario (To) o <strong>de</strong>stinatario <strong>de</strong> copiaciega (Bcc).ANOTACIONES243


ª FUOC • XP04/90786/00020Software libre19.1.2. EjemploEn este apartado se presenta un ejemplo <strong>de</strong> mensaje RFC 822 en elque se pue<strong>de</strong>n apreciar los campos <strong>de</strong> cabecera más típicos, asícomo un cuerpo breve <strong>de</strong>l mensaje. Conviene recordar que es unmensaje en ASCII <strong>de</strong> 7 bits.Date: 25 Jun 2003 0932 PDTFrom: Jordi Inyigo Subject: Ejemplo mensaje RFC 822Sen<strong>de</strong>r: jmmarques@uoc.eduReply-To: jinyigo@uoc.eduTo: Ramon Marti ,xperramon@uoc.eduCc: Llorenc Cerda ,Jose Barcelo ,epeig@uoc.eduComment: os envío esta información que os pue<strong>de</strong> interesarIn-Reply-To: Received: from uoc.edu by peru.uoc.es(8.8.5/8.8.5) with ESMTP id SAA14826for ; Fri, 20 Jun 200318:35:52 +0200 (MET DST)Received: from rectorat.uoc.edu(147.83.35.35)by uoc.es via smap (V2.0) id xma020193;Mon, 20 Jun 2003 18:38:50 +0200 forrmarti@uoc.eduMessage-Id: Este mensaje tiene formato RFC 822 e incluyealgunos <strong>de</strong> los campos <strong>de</strong> cabecera mas utilizados.ActividadCoged un mensaje <strong>de</strong> correo electrónico que hayáis recibidoy analizad toda la cabecera. I<strong>de</strong>ntificad todos loscampos y tratad <strong>de</strong> averiguar quién es el responsable<strong>de</strong> crear cada uno <strong>de</strong> los campos.19.2. El SMTPANOTACIONESLectura complementariaSi queréis más informaciónsobre el SMTP, consultad laobra siguiente:J. Postel (1982, 1 <strong>de</strong> agosto).RFC 821 - Simple MailTransfer Protocol.El SMTP es el protocolo más utilizado en Internet para transferir mensajes<strong>de</strong> correo electrónico. Proporciona la funcionalidad necesariapara conseguir una transferencia fiable y eficiente <strong>de</strong> mensajes <strong>de</strong> correoentre or<strong>de</strong>nadores que actúan como oficina <strong>de</strong> correos. Siguiendolas i<strong>de</strong>as <strong>de</strong>l correo postal, el SMTP se basa en el almacenamientoy el reenvío. Es <strong>de</strong>cir, cuando un mensaje llega a una oficina, quedaalmacenado en la misma cierto tiempo antes <strong>de</strong> ser entregado a otraoficina o al <strong>de</strong>stinatario final. Conviene señalar, asimismo, que cadausuario <strong>de</strong>be disponer <strong>de</strong> un buzón para recibir mensajes, el cualsiempre <strong>de</strong>be estar asociado a una oficina <strong>de</strong>terminada.244


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002019.2.1. Mo<strong>de</strong>lo <strong>de</strong>l SMTPDes<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong>l mo<strong>de</strong>lo, el SMTP <strong>de</strong>be proporcionar loselementos necesarios para la transferencia <strong>de</strong> mensajes. Por ello, se<strong>de</strong>finen los elementos siguientes:• Agente <strong>de</strong> usuario: se encarga <strong>de</strong> introducir los mensajes en elsistema <strong>de</strong> correo SMTP.• Emisor SMTP: se ocupa <strong>de</strong> realizar las conexiones y <strong>de</strong> enviarmensajes a receptores SMTP a partir <strong>de</strong> peticiones <strong>de</strong> los usuarios.Generalmente, cada emisor SMTP tiene asociada una cola <strong>de</strong>mensajes, en la que se almacenan los mensajes antes <strong>de</strong> ser reenviados(siguiendo la filosofía <strong>de</strong>l almacenamiento y el reenvío).• Receptor SMTP: se encarga <strong>de</strong> recibir los mensajes. Si el mensajeva <strong>de</strong>stinado a un usuario asociado al mismo sistema en que seencuentra el receptor SMTP, éste <strong>de</strong>posita el mensaje en el buzón<strong>de</strong>l <strong>de</strong>stinatario. En caso contrario, el receptor SMTP <strong>de</strong>posita elmensaje en la cola <strong>de</strong> mensajes <strong>de</strong>l emisor SMTP asociado, quelo recupera y lo reenvía hacia el receptor SMTP <strong>de</strong> otra oficinamás próxima al <strong>de</strong>stinatario.NotaEl agente <strong>de</strong> usuario, <strong>de</strong>finidoen la mayoría <strong>de</strong> los estándares,es equivalente alelemento usuario especificadoen el mo<strong>de</strong>lo cliente/servidor. Pue<strong>de</strong> ser tantootra aplicación, como unapersona por medio <strong>de</strong> unainterfaz <strong>de</strong> usuario.Conviene <strong>de</strong>stacar que los sistemas que actúan como oficina <strong>de</strong>bendisponer al mismo tiempo <strong>de</strong> un receptor SMTP (para recibir los mensajes),<strong>de</strong> buzones <strong>de</strong> los usuarios y <strong>de</strong> un emisor SMTP (para po<strong>de</strong>rreenviar los mensajes) con una cola <strong>de</strong> mensajes.La figura siguiente nos muestra el mo<strong>de</strong>lo <strong>de</strong> un sistema SMTP:Figura 84.ANOTACIONES245


ª FUOC • XP04/90786/00020Software libreNotaNotad que este mo<strong>de</strong>lo, así como los otros que se estudiaránen este módulo, sigue el mo<strong>de</strong>lo cliente/servidor<strong>de</strong>finido con anterioridad. Asimismo, convieneremarcar que cada estándar proporciona un nombrediferente a los elementos <strong>de</strong>l mo<strong>de</strong>lo cliente/servidor.En el estándard que nos ocupa, el usuario equivale alagente <strong>de</strong> usuario, el cliente equivale al emisor SMTPy el servidor equivale al receptor SMTP.19.2.2. Direcciones <strong>de</strong> correoNotaEl nombre <strong>de</strong> dominio sueleestar formado por la secuencia<strong>de</strong> nombres <strong>de</strong> lossubdominios <strong>de</strong> los que <strong>de</strong>pen<strong>de</strong>jerárquicamente separadospor el carácter “.”.Para que el sistema <strong>de</strong> correo sea capaz <strong>de</strong> entregar un mensaje, seprecisa algún mecanismo que permita <strong>de</strong>finir direcciones para losbuzones <strong>de</strong> los usuarios. En los protocolos Internet, la dirección <strong>de</strong>buzón está formada por una ca<strong>de</strong>na que i<strong>de</strong>ntifica a un usuario(persona, sistema o proceso) y una ca<strong>de</strong>na que i<strong>de</strong>ntifica el sistema(dominio) en que se encuentra el buzón.dirección = usuario@dominiodominio = subdominio*(.subdominio)Con este tipo <strong>de</strong> direccionamiento electrónico, se tiene la funcionalidadsiguiente:• El mensaje se envía al sistema i<strong>de</strong>ntificado por el nombre <strong>de</strong> dominioque se encuentra en la dirección a la <strong>de</strong>recha <strong>de</strong>l signo @(es <strong>de</strong>cir, dominio).ANOTACIONESNotaCada or<strong>de</strong>nador que actúacomo oficina <strong>de</strong> correossuele <strong>de</strong>finir un dominio <strong>de</strong>correo, que se i<strong>de</strong>ntifica conun nombre <strong>de</strong> dominio. Estenombre es el que se encuentraen la parte dominio <strong>de</strong>la dirección electrónica <strong>de</strong>los usuarios que tienen losbuzones en estas máquinas.• Una vez en el sistema, el mensaje se entrega al buzón <strong>de</strong>l usuarioi<strong>de</strong>ntificado en la dirección a la izquierda <strong>de</strong>l signo @ (es <strong>de</strong>cir,usuario).• El SMTP proporciona también la posibilidad <strong>de</strong> <strong>de</strong>finir listas <strong>de</strong>correo, que constituyen listas <strong>de</strong> <strong>de</strong>stinatarios i<strong>de</strong>ntificadas poruna única dirección. Esta última es la que se utiliza para enviarmensajes a la lista, y el sistema SMTP se encarga <strong>de</strong> expandirla yenviar el mensaje a todos los usuarios que sean miembros <strong>de</strong> la246


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020misma en aquel momento. Este método permite la modificación<strong>de</strong> la lista sin necesidad <strong>de</strong> cambiar la dirección.19.2.3. Envío <strong>de</strong> correo y mensajes a terminalesA<strong>de</strong>más <strong>de</strong>l envío <strong>de</strong> mensajes <strong>de</strong> correo a buzones (en el estándar,mail), que es su propósito principal, el SMTP también soporta la entrega<strong>de</strong> mensajes al terminal <strong>de</strong>l <strong>de</strong>stinatario (en el estándar, send).Como la implementación <strong>de</strong> estos dos métodos es muy similar, elSMTP <strong>de</strong>fine comandos en que combina.19.2.4. Conceptos básicos <strong>de</strong>l SMTPEl SMTP está basado en conexiones TCP y el puerto que tiene asignadoes el 25.Como hemos comentado al <strong>de</strong>scribir el mo<strong>de</strong>lo, el emisor SMTPhace llegar mensajes <strong>de</strong> correo al receptor. Para conseguirlo, se estableceun diálogo entre los dos con comandos que envía al emisory respuestas con las que contesta el receptor.Tanto los comandos como las respuestas SMTP siguen las reglas específicas<strong>de</strong>l protocolo Telnet. Es <strong>de</strong>cir, constituyen ca<strong>de</strong>nas <strong>de</strong> caracterescodificados con bytes según el código ASCII y se utiliza lasecuencia para representar el final <strong>de</strong> línea.• Los comandos SMTP están formados por un código constituidopor cuatro caracteres alfanuméricos y, según los comandos, unespacio y una serie <strong>de</strong> parámetros.• Las respuestas SMTP están formadas por un código numérico <strong>de</strong> tresdígitos que, habitualmente, va seguido <strong>de</strong> un texto <strong>de</strong>scriptivo.En los apartados siguientes se <strong>de</strong>scribirán los comandos <strong>de</strong>finidos ylas posibles respuestas.19.2.5. Funcionalidad <strong>de</strong>l SMTPEs preciso diferenciar entre funcionalidad básica y funcionalidad adicional.ANOTACIONES247


ª FUOC • XP04/90786/00020Software libreFuncionalidad básicaUna vez conectado, el emisor SMTP se i<strong>de</strong>ntifica ante el receptorSMTP con el comando HELO.HELO dominioCuando se quiere iniciar el envío <strong>de</strong> un mensaje <strong>de</strong> correo, se utilizael comando MAIL, que incluye la i<strong>de</strong>ntificación <strong>de</strong>l sistema <strong>de</strong>s<strong>de</strong> elque se envía el mensaje. Este comando da lugar al campo FROM:<strong>de</strong>l mensaje.MAIL FROM: originadorCon el comando RCPT se i<strong>de</strong>ntifican los receptores <strong>de</strong>l mensaje. Se<strong>de</strong>be utilizar uno para cada receptor, y cada llamada da lugar a uncampo <strong>de</strong> cabecera TO: en el mensaje.RCPT TO: receptorEl comando DATA indica el inicio <strong>de</strong>l envío <strong>de</strong>l cuerpo <strong>de</strong>l mensaje.Las líneas siguientes a este comando se tratan como contenido <strong>de</strong>lmensaje. Este último se acaba con una línea que sólo incluye un punto;es <strong>de</strong>cir, con la secuencia ..DATAANOTACIONESLos datos que se envían <strong>de</strong>ntro <strong>de</strong> este campo son mensajes RFC 822,por lo que pue<strong>de</strong>n incluir campos <strong>de</strong> cabecera en el inicio. Cuando ellosuce<strong>de</strong>, entre los campos <strong>de</strong> cabecera y el cuerpo <strong>de</strong>l mensaje <strong>de</strong>be haberuna línea en blanco, es <strong>de</strong>cir, la secuencia .Una vez iniciada la transacción <strong>de</strong> envío <strong>de</strong> mensaje, y antes <strong>de</strong> acabar,el emisor SMTP siempre pue<strong>de</strong> interrumpirla por medio <strong>de</strong>l comandoRSET.RSET248


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020El comando NOOP sirve para que el receptor SMTP envíe una respuestaafirmativa para informar <strong>de</strong> que la conexión todavía está abierta.NOOPPara cerrar el canal <strong>de</strong> transmisión, el SMTP proporciona el comandoQUIT. Cuando este último llega al receptor SMTP, éste envía unarespuesta afirmativa y cierra el canal <strong>de</strong> transmisión.QUITFuncionalidad adicionalEl protocolo STMP posibilita también una funcionalidad adicionalcon el objetivo <strong>de</strong> enviar mensajes a terminales.Para iniciar la entrega <strong>de</strong> un mensaje, o varios, a terminales, el emisorSMTP dispone <strong>de</strong>l comando SEND.SEND FROM: originadorEl comando SOML permite iniciar la entrega <strong>de</strong> un mensaje, o varios,a terminales si el usuario se encuentra en el terminal, o, en caso contrario,permite entregar el correo al buzón o a los buzones.SOML FROM: originadorEl comando SAML permite iniciar la entrega <strong>de</strong> un mensaje, o varios,a terminales y, al mismo tiempo, al buzón o a los buzones.SAML FROM: originadorEl emisor SMTP también pue<strong>de</strong> pedir la confirmación <strong>de</strong> que una ca<strong>de</strong>nai<strong>de</strong>ntifica a un usuario por medio <strong>de</strong>l comando VRFY.VRFY ca<strong>de</strong>naANOTACIONES249


ª FUOC • XP04/90786/00020Software libreEl comando EXPN permite solicitar confirmación para una ca<strong>de</strong>naque i<strong>de</strong>ntifica una lista <strong>de</strong> correo y, en caso <strong>de</strong> respuesta positiva, requerirla relación <strong>de</strong> los miembros <strong>de</strong> la lista.EXPN ca<strong>de</strong>naEl comando HELP permite pedir ayuda al receptor SMTP sobre loscomandos que soporta. En caso <strong>de</strong> incluir una ca<strong>de</strong>na como argumento,esta última pue<strong>de</strong> i<strong>de</strong>ntificar un comando, <strong>de</strong>l que se retornainformación específica.HELP [ca<strong>de</strong>na]El comando TURN permite cambiar el papel <strong>de</strong> emisor SMTP y receptorSMTP. El resultado <strong>de</strong> la petición pue<strong>de</strong> ser que el receptor SMTPenvíe una respuesta afirmativa y haga el papel <strong>de</strong> emisor SMTP, oque envíe una respuesta negativa y mantenga su papel.TURN19.2.6. Códigos <strong>de</strong> respuestaEl SMTP <strong>de</strong>fine una serie <strong>de</strong> códigos <strong>de</strong> respuesta para los diferentescomandos, tanto en caso <strong>de</strong> éxito (E), como en caso <strong>de</strong> resultado intermedio(I), <strong>de</strong> fallo (F) y <strong>de</strong> error (X). La tabla siguiente recoge estoscódigos:Tabla 12.Codigos <strong>de</strong> respuestaANOTACIONES211 Estatus <strong>de</strong>l sistema o respuestaa petición <strong>de</strong> ayudaEstablecimiento<strong>de</strong> connexiónHELOMAIL214 Mensaje <strong>de</strong> ayuda E220 El servidor está preparado ERCPTDATARSETSENDSOMLSAMLVRFYEXPNHELPENOOPQUITTURN250


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Codigos <strong>de</strong> respuestaEstablecimiento<strong>de</strong> connexiónHELOMAILRCPTDATARSETSENDSOMLSAMLVRFYEXPNHELPNOOPQUITTURN221 El servidor está cerrandoel canal <strong>de</strong> transmisión250 Acción completadacorrectamenteE E E E E E E E E E E E EE251 Usuario no local, el mensajese reenviaráEE354 Principio <strong>de</strong> entrada <strong>de</strong>mensaje; es preciso acabarcon .421 Servicio no disponible; cierre<strong>de</strong>l canal <strong>de</strong> transmisión450 Acción no ejecutada: buzónno accesibleIF X X X X X X X X X X XF451 Acción abortada por error local F F F F F F452 Acción abortada porcapacidad <strong>de</strong> almacenamientoinsuficiente500 Error <strong>de</strong> sintaxis; comandono reconocido501 Error <strong>de</strong> sintaxisen los parámetros o argumentosF F F F F FX X X X X X X X X X X X X XX X X X X X X X X X X502 Comando no implementado X X X X X X F503 Secuencia <strong>de</strong> comandoserrónea504 Parámetro <strong>de</strong> comando noimplementadoX X XX X X X X550 Acción no ejecutada: buzónno encontrado551 Usuario no local; intentar otradirección552 Acción abortada por exceso<strong>de</strong> capacidad almacenada553 Acción no ejecutada; nombre<strong>de</strong> buzón no permitido554 Fallo en la transacción FF F FFF F F F F FFFFANOTACIONES251


ª FUOC • XP04/90786/00020Software libreEl estándar establece el conjunto <strong>de</strong> comandos mínimoque <strong>de</strong>ben soportar todos los receptores SMTP:• HELO dominio• MAIL FROM: originador• RCPT TO: receptor• DATA• RSET• NOOP• QUIT19.2.7. Extensiones SMTP para mensajes <strong>de</strong> 8 bitsSe consi<strong>de</strong>ró oportuno añadir un mecanismo para exten<strong>de</strong>r el SMTP.Cuando un cliente SMTP <strong>de</strong>sea utilizar las extensiones SMTP, así comolas extensiones para mensajes <strong>de</strong> 8 bits, tiene que solicitarlo al receptorSMTP con el comando EHLO en lugar <strong>de</strong>l comando HELO:EHLO dominioANOTACIONESLectura complementariaPara saber más sobre las extensionesSMTP para mensajes<strong>de</strong> 8 bits, consultad lasobras siguientes:J. Klensin; N. Freed; M. Rose;E. Stefferud; D. Crocker(1995, noviembre). RFC 1869- SMTP Service Extensions.J. Klensin; N. Freed; M. Rose;E. Stefferud; D. Crocker(1994, julio). RFC 1652 - SMTPService Extension for 8bit-MIME transport.Si el receptor SMTP soporta las extensiones, retorna una respuesta omás <strong>de</strong> éxito (250) e indica las extensiones <strong>de</strong> fallo (550) o <strong>de</strong> error(501) que soporta. Si el receptor no las soporta, retorna una respuesta<strong>de</strong> error (500, 502, 504 ó 421).Una <strong>de</strong> las funcionalida<strong>de</strong>s adicionales es la posibilidad <strong>de</strong> enviarmensajes <strong>de</strong> 8 bits. Cuando el servidor acepta mensajes <strong>de</strong> 8 bits,la respuesta <strong>de</strong> éxito (250) incluye la ca<strong>de</strong>na 8BITMIME. Cuandose quiera enviar el mensaje, <strong>de</strong>be indicarse que es <strong>de</strong> 8 bits. Ellose aplica a los comandos MAIL, SEND, SAML o SOML <strong>de</strong> la manerasiguiente:MAIL FROM: originador BODY = valor-cuerpoSEND FROM: originador BODY = valor-cuerpoSAML FROM: originador BODY = valor-cuerpoSOML FROM: originador BODY = valor-cuerpovalor-cuerpo = 7BIT | 8BITMIME252


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002019.2.8. EjemploEn este apartado se presenta un ejemplo en el que se pue<strong>de</strong> observarla secuencia <strong>de</strong> comandos que envía un emisor SMTP (en negrita) y lasrespuestas <strong>de</strong>l receptor SMTP en una transacción <strong>de</strong> envío <strong>de</strong> correo:220 peru.uoc.es SMTP/smap Ready.HELO campus.uoc.es250 (campus.uoc.es) pleased to meet you.HELP214-Commands214-HELO MAIL RCPT DATA RSET214 NOOP QUIT HELP VRFY EXPNNOOP220 OKEXPN xc@campus.uoc.es250-Jordi Inyigo 250-Jose Barcelo250-Llorenc Cerda 250-Ramon Marti 250-Enric Peig 250 Xavier Perramon MAIL FROM: jinyigo@uoc.edu250 jinyigo@uoc.edu... Sen<strong>de</strong>r OKRCPT TO: rmarti@uoc.edu250 rmarti@uoc.edu OKRCPT TO: rmarti@uoc.edu501 Syntax errorRCPT TO: xperramon@uoc.edu250 xperramon@uoc.edu OKDATA354 Enter mail, end with "." on a line by itselfSubject: Master <strong>de</strong> software libreDate: 20 Jun 2003Esto es un mensaje <strong>de</strong> correo <strong>de</strong> ejemplo..250 Mail acceptedQUIT250 Closing connectionANOTACIONES253


ª FUOC • XP04/90786/00020Software libreNotaTelnet como cliente genérico <strong>de</strong> los protocolosEl programa telnet está pensado para hacer <strong>de</strong>cliente <strong>de</strong> servidores <strong>de</strong>l protocolo Telnet. Sin embargo,si se consi<strong>de</strong>ra que lo que hace es enviar al servidorca<strong>de</strong>nas <strong>de</strong> caracteres tal como se introducen porel teclado y <strong>de</strong>volver por pantalla lo que recibe <strong>de</strong>l servidor,también se pue<strong>de</strong> utilizar como cliente SMTPpuesto que, como hemos comentado al <strong>de</strong>scribirlo, losmensajes que se intercambian en este protocolo sonca<strong>de</strong>nas <strong>de</strong> caracteres ASCII. Este mismo razonamientose pue<strong>de</strong> aplicar al resto <strong>de</strong> protocolos que veremos:POP3, IMAP, NNTP y HTTP.De este modo, si se utiliza el programa telnet comocliente SMTP, se pue<strong>de</strong>n enviar comandos SMTP alservidor escribiéndolos por el teclado y viendo sus respuestaspor pantalla. Para ello, el programa telnet admitecomo segundo parámetro el número <strong>de</strong> puertodon<strong>de</strong> <strong>de</strong>be conectarse.Por ejemplo, el diálogo anterior se podría haber realizadohaciendo:telnet peru.uoc.es 2519.3. Acceso simple a los buzones <strong>de</strong> correo: el POP3ANOTACIONESEn sistemas pequeños no es práctico, ni usual, soportar el SMTP,puesto que implica tener el sistema conectado y dispuesto a recibirmensajes en cualquier momento. Por este motivo, se vio la necesidad<strong>de</strong> <strong>de</strong>finir un protocolo que permitiera la recuperación <strong>de</strong> mensajes<strong>de</strong> buzones <strong>de</strong> correo remotos y se <strong>de</strong>finió el POP3.NotaEl POP y el POP2, dos protocolos <strong>de</strong>finidos en las RFC918 y RFC 937 respectivamente, parten <strong>de</strong> la mismafilosofía que el POP3; sin embargo, disponían <strong>de</strong> unconjunto <strong>de</strong> comandos más reducido.254


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020No obstante, en este protocolo es preciso disponer <strong>de</strong> sistemas en losque se encuentren los buzones –un servidor POP3–, y <strong>de</strong>ben estar conectadosen todo momento, tanto para recibir los mensajes, comopara recibir las peticiones <strong>de</strong> acceso a los buzones. Por lo que respectaa los clientes POP3, sólo es necesario que se conecten cuandoquieran acce<strong>de</strong>r a su correo.El POP3 no especifica ningún método para el envío <strong>de</strong> correo; otrosprotocolos <strong>de</strong> transferencia <strong>de</strong> correo, como el SMTP, proporcionanesta funcionalidad.19.3.1. Mo<strong>de</strong>lo <strong>de</strong>l POP3Lectura complementariaSi queréis más informaciónsobre el SMTP, consultad laobra siguiente:J. Myers; M. Rose (1996,mayo). RFC 1939 - PostOffice Protocol - Version 3El mo<strong>de</strong>lo funcional <strong>de</strong>l POP3 se basa en los elementos siguientes:• Agente <strong>de</strong> usuario: utiliza el cliente POP3 para acce<strong>de</strong>r a sucorreo.• Cliente POP3: se comunica con el servidor POP3 por medio <strong>de</strong>lprotocolo POP3 para acce<strong>de</strong>r a su buzón <strong>de</strong> correo.• Servidor POP3: recibe peticiones <strong>de</strong> los clientes POP3 y se las sirveaccediendo a los buzones correspondientes.En la figura siguiente se presentan los elementos <strong>de</strong>l mo<strong>de</strong>lo funcional<strong>de</strong>l POP3 integrados en un sistema en el que se utiliza el SMTPpara enviar el correo, y el POP3 para acce<strong>de</strong>r a los buzones:Figura 85.ANOTACIONES255


ª FUOC • XP04/90786/00020Software libre19.3.2. Conceptos básicos <strong>de</strong>l POP3El POP3 se basa en comunicaciones TCP sobre el puerto 110.El mecanismo normal <strong>de</strong> utilización <strong>de</strong> dicho protocolo es el siguiente:cuando el cliente POP3 necesita acce<strong>de</strong>r al buzón, se conecta con el servidorPOP3, recupera la información que le interesa y cierra la conexión.Cada vez que sea necesario volver a acce<strong>de</strong>r al buzón, se estableceuna nueva conexión.• Los comandos POP3 constituyen ca<strong>de</strong>nas <strong>de</strong> caracteres ASCII imprimiblesacabados con . Todos los comandos incluyenun código alfanumérico <strong>de</strong> cuatro caracteres que i<strong>de</strong>ntifica el comando,seguido <strong>de</strong> cero o más parámetros.• Las respuestas POP3 también son ca<strong>de</strong>nas <strong>de</strong> caracteres ASCII,y se representan con un indicador <strong>de</strong> estado positivo (+OK) o negativo(-ERR) y, posiblemente, información adicional, <strong>de</strong> la manerasiguiente:+OK el comando se ha ejecutado con éxito-ERR el comando no se ha ejecutado con éxitoEstadosLa norma <strong>de</strong>fine tres estados por los que <strong>de</strong>be pasar toda sesiónPOP3:ANOTACIONES• Una vez se ha abierto la conexión, la sesión entra en el estado <strong>de</strong>autorización, en que el cliente <strong>de</strong>be i<strong>de</strong>ntificarse ante el servidorPOP3.• Una vez autorizado, la sesión pasa al estado <strong>de</strong> transacción. Eneste último, el cliente pi<strong>de</strong> acciones al servidor POP3 con los comandosnecesarios.• Cuando el cliente llama el comando QUIT, la sesión entra en elestado <strong>de</strong> actualización. El servidor libera los recursos, se <strong>de</strong>spi<strong>de</strong>y cierra la conexión TCP.256


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002019.3.3. Funcionalidad <strong>de</strong>l POP3Des<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong> funcionalidad, y retomando los planteamientos<strong>de</strong>l correo postal, el POP3 proporciona los comandos necesariospara el acceso a buzones <strong>de</strong> correo. A continuación,<strong>de</strong>scribiremos los comandos correspondientes a cada uno <strong>de</strong> los estadospor los que <strong>de</strong>be pasar una sesión POP3:1) Estado <strong>de</strong> autorización. En este estado el cliente se i<strong>de</strong>ntifica anteel servidor POP3. Para realizar el proceso <strong>de</strong> i<strong>de</strong>ntificación, se dispone<strong>de</strong> los comandos siguientes:a) I<strong>de</strong>ntificación <strong>de</strong> usuario (USER)Lo primero que <strong>de</strong>be hacer un cliente POP3 es i<strong>de</strong>ntificarse anteel servidor POP3. Uno <strong>de</strong> los métodos es hacerlo mediante el comandoUSER, <strong>de</strong>ntro <strong>de</strong>l cual se envía el nombre que i<strong>de</strong>ntifica alusuario.USER nombreb) Envío <strong>de</strong> la contraseña (PASS)Una vez i<strong>de</strong>ntificado el usuario mediante el comando USER, <strong>de</strong>bellevarse a cabo la autenticación por medio <strong>de</strong>l envío <strong>de</strong> una contraseñacon el comando PASS. El servidor utiliza la ca<strong>de</strong>na enviada eneste último junto con el nombre <strong>de</strong> usuario para dar acceso al usuarioal buzón o <strong>de</strong>negárselo.PASS contraseñac) I<strong>de</strong>ntificación y autenticación <strong>de</strong>l usuario con seguridad (APOP)El método <strong>de</strong> i<strong>de</strong>ntificación y autenticación mediante los comandosUSER y PASS tiene el problema <strong>de</strong> que tanto el nombre como la contraseñaviajan por la red sin ningún mecanismo <strong>de</strong> seguridad. Unmétodo alternativo <strong>de</strong> i<strong>de</strong>ntificación y autenticación <strong>de</strong>l usuario consisteen utilizar el comando APOP, que incorpora mecanismos <strong>de</strong> segurida<strong>de</strong>n el envío <strong>de</strong> la contraseña.APOP nombre resumenANOTACIONES257


ª FUOC • XP04/90786/00020Software libreNotaEl comando APOP actúa <strong>de</strong> la manera siguiente:Al conectarse, el servidor envía una ca<strong>de</strong>na al cliente.Este último concatena la ca<strong>de</strong>na recibida a la contraseñay crea un resumen <strong>de</strong> la misma por medio <strong>de</strong> un algoritmo<strong>de</strong> creación <strong>de</strong> resúmenes (hash criptográfico).Este resumen se envía junto con el nombre i<strong>de</strong>ntificativo<strong>de</strong>l usuario como argumentos <strong>de</strong>l comando APOP.El servidor, para verificar el ususario, genera el mismoresumen y lo compara con el que ha recibido.2) Estado <strong>de</strong> transacción. En este estado, el cliente solicita accionesal servidor POP3. Las acciones que pue<strong>de</strong> pedir son las siguientes:a) Estado (STAT)Una vez autenticado el usuario, el cliente POP3 pue<strong>de</strong> requerir informaciónsobre el estado <strong>de</strong>l buzón <strong>de</strong>l usuario por medio <strong>de</strong>l comandoSTAT que no tiene argumentos y <strong>de</strong>vuelve el número <strong>de</strong> mensajesy los bytes que ocupa el buzón <strong>de</strong>l usuario.STATb) Listado (LIST)ANOTACIONESCuando ya se sabe el número <strong>de</strong> mensajes que hay en el buzón, elpaso siguiente es la petición <strong>de</strong> información sobre uno <strong>de</strong> los mensajeso sobre todos. El POP3 proporciona el comando LIST paraesta tarea. Este comando <strong>de</strong>vuelve, para cada mensaje, un número<strong>de</strong> mensaje y los bytes que ocupa.LIST [mensaje]c) Recuperación <strong>de</strong> mensajes (RETR)Una vez se conocen los mensajes que hay en el buzón, <strong>de</strong>ben recuperarselos que quiere leer. Ello pue<strong>de</strong> hacerlo el cliente POP3, para258


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020cada mensaje, con el comando RETR, que incluye como argumentoel i<strong>de</strong>ntificador <strong>de</strong>l mensaje que se quiere recuperar.RETR mensajed) Borrado <strong>de</strong> mensajes (DELE)Tras leer un mensaje, pue<strong>de</strong> interesar borrarlo. El comando DELE indicaal servidor POP3 que marque como mensaje a borrar el i<strong>de</strong>ntificadocomo tal en el argumento; sin embargo, el mensaje no seborrará hasta que no se entre en el estado <strong>de</strong> actualización.DELE mensajee) Operación nula (NOOP)El comando NOOP sirve para saber si la conexión con el servidor todavíaestá abierta. Con dicho comando, el servidor POP3 no hacenada, excepto <strong>de</strong>volver una respuesta afirmativa.NOOPf) Desmarcado <strong>de</strong> mensajes para borrar (RSET)Una vez se ha llevado a cabo una llamada al comando DELE, y antes<strong>de</strong> entrar en el estado <strong>de</strong> actualización, el usuario pue<strong>de</strong> echarseatrás y pedir al servidor POP3, mediante el comando RSET, que <strong>de</strong>smarquetodos los mensajes marcados para borrar.RSETg) Recuperación <strong>de</strong> la parte superior <strong>de</strong> un mensaje (TOP)En ocasiones, pue<strong>de</strong> interesar recuperar sólo la parte superior <strong>de</strong> unmensaje para <strong>de</strong>cidir si vale la pena recuperarlo todo o no. El comandoTOP permite recuperar la cabecera y n líneas <strong>de</strong>l mensajei<strong>de</strong>ntificado en el argumento.TOP mensaje nANOTACIONES259


ª FUOC • XP04/90786/00020Software libreh) Lista <strong>de</strong> i<strong>de</strong>ntificadores únicos (UIDL)Todos los mensajes <strong>de</strong>l buzón tienen un i<strong>de</strong>ntificador único (uniqueid)permanente (a diferencia <strong>de</strong>l número <strong>de</strong> mensaje, que es único<strong>de</strong>ntro <strong>de</strong>l buzón, pero que pue<strong>de</strong> ir variando). El comando UIDLpermite obtener el número <strong>de</strong> mensaje y el i<strong>de</strong>ntificador único <strong>de</strong> uno<strong>de</strong> los mensajes <strong>de</strong>l buzón o <strong>de</strong> todos.UIDL [mensaje]i) Paso al estado <strong>de</strong> actualización (QUIT)Una vez finalizadas las transacciones, el cliente POP3 <strong>de</strong>be llamar elcomando QUIT para pasar al estado <strong>de</strong> actualización.QUIT3) Estado <strong>de</strong> actualización. En este estado, el servidor POP3, enprimer lugar, borra todos los mensajes marcados para borrar y,con posterioridad, libera todos los recursos y cierra la conexiónTCP. El estado <strong>de</strong> actualización no dispone <strong>de</strong> ningún comandoasociado.El estándar establece que los servidores POP3 <strong>de</strong>bensoportar como mínimo los comandos siguientes:ANOTACIONESUSER nombrePASS ca<strong>de</strong>naSTATLIST [mensaje]RETR mensajeDELE mensajeNOOPRSETQUIT260


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002019.3.4. EjemploA continuación, se presenta un ejemplo <strong>de</strong> los comandos <strong>de</strong> acceso<strong>de</strong> un cliente POP3 (en negrita) a un servidor POP3 para recuperarel mensaje enviado en el ejemplo anterior:+OK QPOP (version 2.52) at pop.uoc.es starting.USER rmarti+OK Password required for rmarti.PASS prueba-ERR Password supplied for "rmarti" is incorrect.+OK Pop server at pop.uoc.es signing off.PASS password+OK rmarti has 6 message(s) (190885 bytes).STAT+OK 6 190885LIST+OK 6 messages (190885 bytes)1 31402 33263 19114 1808465 8616 801.RETR 6+OK 801Received: from campus.uoc.es by peru.uoc.es(8.8.5/8.8.5) with ESMTP id SAA14826for ; Fri, 27 Jun 200318:35:52 +0200 (MET DST)From: Jordi Inyigo Message-Id:To: rmarti@uoc.edu, xperramon@uoc.eduSubject: Master <strong>de</strong> software libreDate: 27 Jun 2003Content-Type: textStatus: ROEste es un mensaje <strong>de</strong> correo <strong>de</strong> ejemplo..QUIT+OK Pop server at dns signing offANOTACIONES261


ª FUOC • XP04/90786/00020Software libre19.4. Acceso complejo a los buzones <strong>de</strong> correo:el IMAP4rev1El protocolo <strong>de</strong> acceso a mensajes Internet, versión 4rev1,IMAP4rev1, permite al cliente acce<strong>de</strong>r a los mensajes <strong>de</strong> correoelectrónico <strong>de</strong> un servidor y manipularlos.El IMAP4rev1 (a partir <strong>de</strong> ahora lo llamaremos IMAP4) permite alusuario disponer <strong>de</strong> diferentes buzones estructurados <strong>de</strong> manera jerárquicay, al mismo tiempo, po<strong>de</strong>rlos manipular <strong>de</strong> manera remota,tal como se hace con los buzones locales.NotaEl IMAP4rev1 surgió <strong>de</strong> laevolución <strong>de</strong> las especificacionesIMAP2 [RFC 1176],IMAP3 [RFC 1203] e IMAP4[RFC 1730].El IMAP4 también proporciona a los clientes la capacidad <strong>de</strong> resincronizacióncon el servidor.El IMAP4 no especifica ningún método para el envío <strong>de</strong> correo; otrosprotocolos <strong>de</strong> transferencia <strong>de</strong> correo, como el SMTP, proporcionanesta funcionalidad.19.4.1. Mo<strong>de</strong>lo <strong>de</strong>l IMAP4El mo<strong>de</strong>lo funcional <strong>de</strong>l IMAP4 se basa en los elementos que presentamosa continuación:• Agente <strong>de</strong> usuario: utiliza el cliente IMAP4 para leer el correo <strong>de</strong>su buzón.ANOTACIONESLectura complementariaSi queréis más informaciónsobre el IMAP4rev1, consultadla obra siguiente:M. Crispin (1996, <strong>de</strong>ciembre).RFC 2060 - InternetMessage Access Protocol -Version 4rev1.• Cliente IMAP4: se comunica con el servidor IMAP4 por medio <strong>de</strong>lIMAP4 para acce<strong>de</strong>r a su buzón <strong>de</strong> correo.• Servidor IMAP4: recibe peticiones <strong>de</strong> los clientes IMAP4 y se lassirve accediendo a los buzones correspondientes.La figura siguiente presenta los elementos <strong>de</strong>l mo<strong>de</strong>lo funcional <strong>de</strong>lIMAP4 integrados en un sistema en el que se utiliza SMTP para enviarel correo e IMAP4 para acce<strong>de</strong>r a los buzones:262


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Figura 86.19.4.2. Conceptos básicos <strong>de</strong>l IMAP4El IMAP4 pue<strong>de</strong> utilizarse con cualquier protocolo <strong>de</strong> transporte fiable.Por norma general, se utiliza el TCP y, en este caso, se utiliza elpuerto 143. Todas las interacciones entre cliente y servidor se llevana cabo en forma <strong>de</strong> líneas ASCII acabadas con un carácter .Cada comando <strong>de</strong>l cliente empieza con un i<strong>de</strong>ntificador (por lo general,una ca<strong>de</strong>na alfanumérica corta) llamado tag. El cliente <strong>de</strong>begenerar un tag diferente para cada comando.El servidor pue<strong>de</strong> enviar datos tanto en respuesta a un comando <strong>de</strong>lcliente, como <strong>de</strong> manera unilateral, y el cliente <strong>de</strong>be estar a puntopara recibirlos en todo momento. Los datos transmitidos por el servidorhacia el cliente y las respuestas <strong>de</strong> estatus que no implican lafinalización <strong>de</strong>l comando empiezan con el token. La respuesta final<strong>de</strong> culminación <strong>de</strong> comando empieza con el mismo tag que el comando<strong>de</strong>l cliente que ha dado lugar a la respuesta.ANOTACIONES263


ª FUOC • XP04/90786/00020Software libreA<strong>de</strong>más <strong>de</strong> las respuestas específicas <strong>de</strong> cada comando, casi todoslos comandos disponen, como mínimo, <strong>de</strong> los resultados <strong>de</strong> estatussiguientes:OK [Parámetros]: el comando se ha ejecutado.NO [Parámetros]: el comando no se ha ejecutado.BAD [Parámetros]: comando <strong>de</strong>sconocido o argumentos inválidos.NotaConsultad el comandoLOGOUT en el apartado19.4.3.a006 logout* BYE IMAP4rev1 server terminating connectiona006 OK LOGOUT completedEjemploLa primera línea es la llamada al comando precedida<strong>de</strong>l tag (a006). En este caso, el comando LOGOUT.Después, se pue<strong>de</strong> observar la respuesta, que estáformada por dos líneas. La última línea <strong>de</strong> la respuestaempieza con el mismo tag que la llamada,mientras que las líneas anteriores lo hacen con eltoken.El cliente pue<strong>de</strong> enviar un comando <strong>de</strong>spués <strong>de</strong> otro sin esperar elresultado <strong>de</strong>l primero. De manera similar, un servidor pue<strong>de</strong> empezara procesar un comando antes <strong>de</strong> acabar <strong>de</strong> procesar el que seejecuta en aquel momento.A<strong>de</strong>más <strong>de</strong>l texto, cada mensaje tiene asociados diferentes atributosque se encuentran almacenados <strong>de</strong>ntro <strong>de</strong>l buzón y que son son lossiguientes:ANOTACIONES1) I<strong>de</strong>ntificador único (UID, unique i<strong>de</strong>ntifier): a cada mensaje sele asocia un valor <strong>de</strong> 32 bits que, cuando se utiliza conjuntamentecon los valores <strong>de</strong> vali<strong>de</strong>z <strong>de</strong> i<strong>de</strong>ntificador único (unique i<strong>de</strong>ntifiervalidity value), forma un valor <strong>de</strong> 64 bits que i<strong>de</strong>ntifica <strong>de</strong> maneraúnica un mensaje <strong>de</strong>ntro <strong>de</strong> un buzón. Los UID se asignan <strong>de</strong> maneraascen<strong>de</strong>nte <strong>de</strong>ntro <strong>de</strong>l buzón, pero no necesariamente <strong>de</strong>manera contigua.2) Número <strong>de</strong> secuencia <strong>de</strong>l mensaje (message sequence number):este atributo proporciona la posición relativa <strong>de</strong>l mensaje <strong>de</strong>ntro<strong>de</strong>l buzón, <strong>de</strong>s<strong>de</strong> el 1 hasta al número total <strong>de</strong> mensajes.264


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Esta posición <strong>de</strong>be or<strong>de</strong>narse siguiendo los UID ascen<strong>de</strong>ntes. Los números<strong>de</strong> secuencia <strong>de</strong>l mensaje se pue<strong>de</strong>n reasignar durante la sesión(por ejemplo, cuando se elimina un mensaje <strong>de</strong>l buzón).3) Indicadores: cada mensaje tiene asociada una lista <strong>de</strong> cero indicadores,o más, que informan <strong>de</strong>l estado:• \Seen: mensaje leído• \Answered: mensaje contestado• \Flagged: mensaje marcado por atención urgente/especial• \Deleted: mensaje marcado para ser borrado por un Expungeposterior• \Draft: mensaje no editado <strong>de</strong>l todo• \Recent: mensaje acabado <strong>de</strong> llegar en esta sesión4) Fecha interna (internal date): fecha y hora que cada mensaje llevaasociadas <strong>de</strong> manera interna <strong>de</strong>ntro <strong>de</strong>l servidor, que reflejancuándo ha llegado el mensaje al servidor. No es la fecha <strong>de</strong>lmensaje RFC 822.5) Longitud [RFC 822] ([RFC 822] size): es el número <strong>de</strong> bytes <strong>de</strong>lmensaje expresado en el formato RFC 822.6) Estructura <strong>de</strong>l sobre (envelope structure): representación analizada<strong>de</strong> la información <strong>de</strong>l sobre RFC 822.7) Estructura <strong>de</strong>l cuerpo (body structure): representación analizada<strong>de</strong> la información <strong>de</strong> la estructura <strong>de</strong>l cuerpo MIME.8) Textos <strong>de</strong> mensaje: a<strong>de</strong>más <strong>de</strong> permitir la recuperación <strong>de</strong> losmensajes RFC 822 enteros, con el IMAP4 también se pue<strong>de</strong>n efectuarrecuperaciones parciales. En concreto, permite recuperar lacabecera y/o el cuerpo <strong>de</strong>l mensaje RFC 822, una parte <strong>de</strong>l cuerpoMIME o una cabecera MIME.El IMAP4 especifica cuatro estados:• Estado no autenticado: el cliente <strong>de</strong>be proporcionar sus cre<strong>de</strong>nciales.Se llega a este estado cuando se empieza una conexión,salvo que ya se haya preautenticado.• Estado autenticado: el cliente <strong>de</strong>be seleccionar un buzón al queacce<strong>de</strong>rá antes <strong>de</strong> tener permiso para efectuar comandos sobrelos mensajes.ANOTACIONES265


ª FUOC • XP04/90786/00020Software libre• Estado seleccionado: se entra en este estado cuando se ha seleccionadocon éxito un buzón.• Estado <strong>de</strong> logout: la conexión se acaba y el servidor la cerrará.Se pue<strong>de</strong> entrar en este estado como resultado <strong>de</strong> una petición<strong>de</strong>l cliente o <strong>de</strong> manera unilateral por parte <strong>de</strong>l servidor.La figura siguiente muestra el diagrama <strong>de</strong> flujo entre los diferentesestados <strong>de</strong>finidos por el IMAP4:Figura 87.ANOTACIONESCada usuario tiene su correo en el servidor, <strong>de</strong>positado en un conjunto<strong>de</strong> buzones estructurados jerárquicamente que se pue<strong>de</strong>n manipularremotamente a través <strong>de</strong>l IMAP4.NotaAunque el IMAP4 utiliza la palabra buzón para i<strong>de</strong>ntificartodos los sitios don<strong>de</strong> se pue<strong>de</strong>n guardar mensajes, enrealidad lo que se entien<strong>de</strong> por buzón don<strong>de</strong> se recibenlos mensajes es la ban<strong>de</strong>ja <strong>de</strong> entrada (buzón inbox),mientras que los otros buzones son más bien carpetas enlas que se clasifican estos mensajes recibidos.266


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Cada buzón se i<strong>de</strong>ntifica por un nombre relativo, una ca<strong>de</strong>na <strong>de</strong> caracteresque lo diferencia <strong>de</strong> los buzones hermanos. Asimismo, cada buzóndispone <strong>de</strong> un nombre que lo i<strong>de</strong>ntifica <strong>de</strong>ntro <strong>de</strong> la estructura formadapor la secuencia <strong>de</strong> los nombres relativos <strong>de</strong> los buzones que <strong>de</strong>finen losniveles <strong>de</strong> jerarquía superiores, <strong>de</strong> izquierda a <strong>de</strong>recha, separados con unúnico carácter (por norma general, el carácter “/”). Debe utilizarse el mismoseparador en todos los niveles <strong>de</strong> la jerarquía <strong>de</strong>ntro <strong>de</strong> un nombre.19.4.3. Funcionalidad <strong>de</strong>l IMAP4La funcionalidad proporcionada por el IMAP4, como la <strong>de</strong>l POP3,imita la que se requiere para el acceso a los buzones <strong>de</strong> correo postal.Como mejora respecto al POP3, el IMAP4 proporciona una estructurajerárquica <strong>de</strong>l buzón en forma <strong>de</strong> carpetas, así comofacilida<strong>de</strong>s <strong>de</strong> suscripción, lo que da lugar a nuevos comandos quepermiten gestionar todos estos elementos.Las funciones que se utilizarán según el estado en que se encuentrela comunicación serán las siguientes:1) Cualquier estado (comandos/estados universales). Sea cual sea elestado <strong>de</strong> la conexión, se pue<strong>de</strong>n utilizar los comandos siguientes:a) Petición <strong>de</strong> capacida<strong>de</strong>s (CAPABILITY)El comando CAPABILITY, que no tiene ningún argumento, sirvepara solicitar la lista <strong>de</strong> capacida<strong>de</strong>s que soporta el servidorCAPABILITYb) Operación nula (NOOP)El comando NOOP permite al cliente IMAP4 averiguar si la conexióncon el servidor todavía está abierta.NOOPc) Finalización <strong>de</strong> conexión (LOGOUT)El comando LOGOUT permite al cliente notificar al servidor quequiere acabar la conexión.LOGOUTANOTACIONES267


ª FUOC • XP04/90786/00020Software libre2) Estado no autenticado. En este estado, un cliente proporcionasus cre<strong>de</strong>nciales; para ello, se utilizan los comandos siguientes:a) Indicador <strong>de</strong> autenticación (AUTHENTICATE)El comando AUTHENTICATE sirve para indicar al servidor IMAP4un mecanismo <strong>de</strong> autenticación; es <strong>de</strong>cir, cuál <strong>de</strong> los diferentesmecanismos <strong>de</strong> autenticación posibles utiliza el cliente.AUTHENTICATE tipo_autenticaciónb) I<strong>de</strong>ntificación <strong>de</strong> usuario (LOGIN)Como todo protocolo, el IMAP4 proporciona un comando parapermitir que el cliente se i<strong>de</strong>ntifique ante el servidor por medio <strong>de</strong>lenvío <strong>de</strong> un i<strong>de</strong>ntificador <strong>de</strong> usuario y una contraseña. Este comandoes LOGIN.LOGIN id_usuario contraseña3) Estado autenticado. En este estado el IMAP4 proporciona algunasfuncionalida<strong>de</strong>s nuevas:a) Selección <strong>de</strong> un buzón (SELECT)Una vez autenticado, el cliente IMAP4 pue<strong>de</strong> seleccionar un buzónpara acce<strong>de</strong>r a sus mensajes. El comando SELECT proporcionaesta funcionalidad.SELECT buzónEste comando, a<strong>de</strong>más <strong>de</strong> los resultados <strong>de</strong> estatus, retorna lasrespuestas obligatorias sin tag siguientes:ANOTACIONESFLAGS: informa <strong>de</strong> los i<strong>de</strong>ntificadores que se pue<strong>de</strong>naplicar al buzón <strong>de</strong>l comando.EXISTS: número <strong>de</strong> mensajes existentes en el buzón.RECENT: número <strong>de</strong> mensajes con el indicador \Recent.También pue<strong>de</strong> retornar las respuestas OK sin tag:NSEEN: número <strong>de</strong>l primer mensaje sin el indicador \Seen.PERMANENTFLAGS: lista <strong>de</strong> indicadores que pue<strong>de</strong>n modificarsepermanentemente.268


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020b) Examen <strong>de</strong> un buzón (EXAMINE)El comando EXAMINE permite un acceso al buzón similar al <strong>de</strong>lcomando SELECT, pero <strong>de</strong> manera que el buzón sea sólo <strong>de</strong> lectura.Este comando, a<strong>de</strong>más <strong>de</strong> los resultados <strong>de</strong> estatus, pue<strong>de</strong>retornar las mismas respuestas que el comando SELECT.EXAMINE buzónc) Creación <strong>de</strong> un buzón (CREATE)Al usuario le pue<strong>de</strong> interesar crear un buzón con un nombre <strong>de</strong>terminado.El IMAP4 proporciona el comando CREATE para ello.CREATE buzónd) Borrado <strong>de</strong> un buzón (DELETE)El IMAP4 también facilita la eliminación permanente <strong>de</strong> un buzóncon un nombre <strong>de</strong>terminado por medio <strong>de</strong>l comando DELETE.DELETE buzóne) Renombramiento <strong>de</strong> un buzón (RENAME)En ocasiones, el usuario <strong>de</strong>sea cambiar el nombre <strong>de</strong> un buzónpor uno nuevo. El cliente IMAP4 pue<strong>de</strong> solicitar esta acción al servidorpor medio <strong>de</strong>l comando RENAME.RENAME buzón nuevobuzónf) Suscripción <strong>de</strong> un buzón (SUBSCRIBE)En el IMAP4, no es preciso que todos los buzones estén activos acada momento. Con el comando SUBSCRIBE, el nombre <strong>de</strong>l buzónpasa a formar parte <strong>de</strong> la lista <strong>de</strong> buzones activos o suscritos.SUBSCRIBE buzóng) Eliminación <strong>de</strong> la suscripción <strong>de</strong> un buzón (UNSUBSCRIBE)El comando UNSUBSCRIBE permite <strong>de</strong>sactivar un buzón eliminandosu nombre <strong>de</strong> la lista <strong>de</strong> buzones activos o suscritos.UNSUBSCRIBE buzónANOTACIONES269


ª FUOC • XP04/90786/00020Software libreh) Listado <strong>de</strong> buzones (LIST)El comando LIST permite obtener los nombres <strong>de</strong> buzones quecumplen los criterios <strong>de</strong> búsqueda <strong>de</strong>seados <strong>de</strong>ntro <strong>de</strong> un buzón<strong>de</strong> referencia.LIST buzón 1*criterio_búsquedaEste comando, a<strong>de</strong>más <strong>de</strong> los resultados <strong>de</strong> estatus, pue<strong>de</strong> retornarla respuesta sin tag siguiente:LIST: nombre <strong>de</strong>l buzón que cumple los criterios<strong>de</strong> búsqueda <strong>de</strong>seados.Pue<strong>de</strong> haber más <strong>de</strong> una respuesta LIST.i) Listado <strong>de</strong> buzones suscritos (LSUB)El comando LSUB permite obtener los nombres <strong>de</strong> los buzonesactivos o suscritos que cumplen los criterios <strong>de</strong> búsqueda <strong>de</strong>seados<strong>de</strong>ntro <strong>de</strong> un buzón <strong>de</strong> referencia.LSUB buzón 1*criterio_búsquedaEste comando, a<strong>de</strong>más <strong>de</strong> los resultados <strong>de</strong> estatus, pue<strong>de</strong> retornarla respuesta sin tag siguiente:LSUB:nombre <strong>de</strong>l buzón que cumple los criterios <strong>de</strong> búsqueda<strong>de</strong>seados.Pue<strong>de</strong> haber más <strong>de</strong> una respuesta LSUB.j) Estado <strong>de</strong>l buzón (STATUS)El comando STATUS permite conocer el estado <strong>de</strong> un buzón.ANOTACIONESLos atributos <strong>de</strong> estado <strong>de</strong>finidos son los siguientes:• MESSAGE: número <strong>de</strong> mensajes en el buzón.• RECENT: número <strong>de</strong> mensajes con el indicador \Recent.• UIDNEXT: UID que se asignará al mensaje siguiente que llegueal buzón.• UIDVALIDITY: valor <strong>de</strong>l UID <strong>de</strong>l buzón.• UNSEEN: número <strong>de</strong> mensajes sin el indicador \Seen.STATUS buzón(1#atributo_estado)270


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Este comando, a<strong>de</strong>más <strong>de</strong> los resultados <strong>de</strong> estatus, pue<strong>de</strong> retornarla respuesta sin tag siguiente:STATUS: nombre <strong>de</strong> buzón que cumple el estatus <strong>de</strong>seado yla información <strong>de</strong> estatus requerida.k) Añadido <strong>de</strong> un mensaje al buzón (APPEND)El comando APPEND permite al cliente el IMAP4 añadir un textoliteral como nuevo mensaje al final <strong>de</strong> un buzón seleccionado,con la fecha, la hora y los indicadores <strong>de</strong>seados.APPEND buzón[lista_flags][fecha_hora] literal4) Estado seleccionado. En el estado seleccionado, el IMAP4 proporcionanuevas funcionalida<strong>de</strong>s, a<strong>de</strong>más <strong>de</strong> los comandos universalesy los <strong>de</strong>l estado autenticado:a) Control <strong>de</strong>l buzón (CHECK)El comando CHECK permite al cliente IMAP4 pedir al servidor un punto<strong>de</strong> control <strong>de</strong>l buzón seleccionado en un momento <strong>de</strong>terminado.CHECKb) Cierre <strong>de</strong>l buzón (CLOSE)El comando CLOSE permite cerrar un buzón seleccionado y eliminarpermanentemente todos sus mensajes que tienen el indicador\Deleted.CLOSEc) Eliminación <strong>de</strong> mensajes (EXPUNGE)El comando EXPUNGE permite eliminar <strong>de</strong> manera permanente todoslos mensajes que tienen el indicador \Deleted <strong>de</strong>l buzón seleccionadoy sin necesidad <strong>de</strong> cerrarlo.EXPUNGEEste comando, a<strong>de</strong>más <strong>de</strong> los resultados <strong>de</strong> estatus, pue<strong>de</strong> retornarla respuesta sin tag siguiente:EXPUNGE: número <strong>de</strong> secuencia <strong>de</strong> mensaje especificado queha sido eliminado permanentemente.ANOTACIONES271


ª FUOC • XP04/90786/00020Software libred) Búsqueda <strong>de</strong> mensaje (SEARCH)El comando SEARCH permite al cliente IMAP4 buscar <strong>de</strong>ntro <strong>de</strong>lbuzón los mensajes que contienen un conjunto <strong>de</strong> caracteres especificadoy que cumplen unos criterios <strong>de</strong> búsqueda <strong>de</strong>seados.SEARCH [CHARSETconjunto_caracteres]1#criterio_búsquedaEste comando, a<strong>de</strong>más <strong>de</strong> los resultados <strong>de</strong> estatus, pue<strong>de</strong> retornarla respuesta sin tag siguiente:SEARCH: un número <strong>de</strong> secuencia o más <strong>de</strong> los mensajes quecumplen el criterio <strong>de</strong> búsqueda <strong>de</strong>seado.e) Recuperación <strong>de</strong> mensajes (FETCH)El comando FETCH permite la recuperación <strong>de</strong> un conjunto <strong>de</strong>mensajes (total o parcialmente), especificando unos atributos <strong>de</strong>recuperación.FETCH conjunto_mensajes ALL | FULL| FAST |atrib_recup | (1#atrib_recup)Este comando, a<strong>de</strong>más <strong>de</strong> los resultados <strong>de</strong> estatus, pue<strong>de</strong> retornarla respuesta sin tag siguiente:FETCH: información <strong>de</strong>l mensaje que presenta los atributos<strong>de</strong> recuperación especificados.f) Modificación <strong>de</strong> almacén (STORE)El comando STORE permite modificar los indicadores <strong>de</strong>l almacénque proporcionan los atributos a un conjunto <strong>de</strong> mensajes <strong>de</strong>l buzón.STORE conjunto_mensajesindicadores_atrib_almacénANOTACIONESEste comando, a<strong>de</strong>más <strong>de</strong> los resultados <strong>de</strong> estatus, pue<strong>de</strong> retornarla respuesta sin tag siguiente:FETCH: información <strong>de</strong> los mensajes.g) Copia <strong>de</strong> mensaje(s) (COPY)El comando COPY permite copiar un conjunto <strong>de</strong> mensajes al final<strong>de</strong> un buzón especificado.COPY conjunto_mensajes buzón272


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020h) Retorno <strong>de</strong> i<strong>de</strong>ntificador único (UID)La sentencia UID, seguida <strong>de</strong> los parámetros COPY, FETCH, STO-RE o SEARCH, en lugar <strong>de</strong> retornar el número o números <strong>de</strong> secuencia<strong>de</strong> mensaje, retorna sus i<strong>de</strong>ntificadores únicos.UID (COPY ... | FETCH ... |SEARCH ... | STORE ...)Este comando, a<strong>de</strong>más <strong>de</strong> los resultados <strong>de</strong> estatus, pue<strong>de</strong> retornarlas respuestas sin tag siguientes:FETCH: información <strong>de</strong>l mensaje que presenta los atributos<strong>de</strong> recuperación especificados.SEARCH: un UID o más indican los mensajes que cumplen elcriterio <strong>de</strong> búsqueda <strong>de</strong>seado.5) Experimental/expansiónComando experimental (X)El IMAP4 permite especificar comandos experimentales que no sonuna parte <strong>de</strong> la especificación, siempre que su nombre empiece conel prefijo X.X1*carácter19.4.4. EjemploA continuación, se presenta un ejemplo <strong>de</strong> los comandos <strong>de</strong> un clienteIMAP4 (en negrita) que acce<strong>de</strong> a un servidor IMAP4 para entrar ensus buzones. En el ejemplo se ve cómo se recupera la información<strong>de</strong>l mensaje 12 (fetch 12 full). En la información retornada porel servidor, se ve la información “parseada” <strong>de</strong> la cabecera. A continuación,se recupera toda la cabecera <strong>de</strong>l mismo mensaje(fetch12 body [hea<strong>de</strong>r]). Al final, antes <strong>de</strong> cerrar la conexión,se marca el mensaje para que sea borrado.* OK IMAP4rev1 Service Readya001 login rmarti secreta001 OK LOGIN completeda002 select inbox* 18 EXISTS* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)* 2 RECENTANOTACIONES273


ª FUOC • XP04/90786/00020Software libre* OK [UNSEEN 17] Message 17 is the first unseen message* OK [UIDVALIDITY 3857529045] UIDs valida002 OK [READ-WRITE] SELECT completeda003 fetch 12 full* 12 FETCH (FLAGS (\Seen) INTERNALDATE "27-Jun-200302:44:25 -0700" RFC 822.SIZE 4286 ENVELOPE("Fri, 27 Jun 2003 02:23:25 -0700 (PDT)""Ejemplo <strong>de</strong> acceso IMAP4rev1"(("Jordi Inyigo" NIL "jinyigo" "uoc.edu"))(("Jordi Inyigo" NIL "jinyigo" "uoc.edu"))(("Jordi Inyigo" NIL "jinyigo"((NIL NIL "rmarti" "uoc.edu"))((NIL NIL "xperramon" "uoc.edu")("JM Marques" NIL "jmmarques" "uoc.edu"))NIL NIL“")BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL"7BIT" 3028 92))a003 OK FETCH completeda004 fetch 12 body[hea<strong>de</strong>r]* 12 FETCH (BODY[HEADER] {350}Date: Fri, 27 Jun 2003 02:23:25 -0700 (PDT)From: Jordi Inyigo Subject: Ejemplo <strong>de</strong> acceso IMAP4rev1To: rmarti@uoc.educc: xperramon@uoc.edu,JM Marques Message-Id: MIME-Version: 1.0Content-Type: TEXT/PLAIN; CHARSET=US-ASCII)a004 OK FETCH completeda005 store 12 +flags \<strong>de</strong>leted* 12 FETCH (FLAGS (\Seen \Deleted))a005 OK +FLAGS completeda006 logout* BYE IMAP4rev1 server terminating connectiona006 OK LOGOUT completed19.5. Extensiones multimedia: el formato MIMELa norma RFC 822 <strong>de</strong>fine un formato <strong>de</strong> mensaje y un contenido con unaúnica parte <strong>de</strong> texto en ASCII <strong>de</strong> 7 bits. Se vio que este formato era muypobre y que se precisaba algún método para superar sus limitaciones.ANOTACIONESEl formato MIME (multipurpose Internet mail extensions ) re<strong>de</strong>fine elformato <strong>de</strong>l mensaje para permitir, sin per<strong>de</strong>r la compatibilidad conel formato <strong>de</strong>finido por el RFC 822, las características siguientes:• Contenido <strong>de</strong> texto no sólo ASCII <strong>de</strong> 7 bits.• Contenido no texto.• Contenido con múltiples partes.• Cabeceras con texto no sólo ASCII <strong>de</strong> 7 bits.274


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002019.5.1. Nuevos campos <strong>de</strong> cabeceraPara permitir todas las nuevas extensiones, el MIME <strong>de</strong>fine nuevoscampos <strong>de</strong> cabecera: MIME-Version, Content-Type, Content-Transfer-Encoding, Content-ID y Content-Description.Indicador <strong>de</strong> versión (MIME-Version)El campo <strong>de</strong> cabecera MIME-Version indica la versión MIME quese utiliza en el mensaje (la versión <strong>de</strong> MIME que se utiliza actualmente,y que especificamos en este apartado, es la 1.0.). Este campo esútil para que el receptor <strong>de</strong>l mensaje pueda interpretar los campos<strong>de</strong> cabecera MIME.MIME-Version: 1*digit.1*digitIndicador <strong>de</strong>l tipo y subtipo <strong>de</strong> datos (Content-Type)El campo <strong>de</strong> cabecera Content-Type permite indicar los tipos ysubtipos <strong>de</strong> los datos que se encuentran <strong>de</strong>ntro <strong>de</strong>l mensaje. Deeste modo, el receptor podrá conocer los tipos <strong>de</strong> datos que contieneel mensaje y podrá visualizarlos a<strong>de</strong>cuadamente. Según el tipoo subtipo <strong>de</strong> dato, pue<strong>de</strong> incluir algún parámetro adicional.Content-Type: tipo/subtipo *(; parámetro)tipo = tipo-discreto | tipo-compuestotipo-discreto = text | image | audio | vi<strong>de</strong>o |application | extension-tokentipo-compuesto = message | multipart |extension-tokenPara obtener más información sobre el formato <strong>de</strong>mensajes MIME, podéis consultar las obras siguientes:N. Freed; N. Borenstein (1996, noviembre). RFC2045 - Multipurpose Internet Mail Extensions (MIME)Part One: Format of Internet Message Bodies.ANOTACIONES275


ª FUOC • XP04/90786/00020Software libreN. Freed; N. Borenstein (1996, noviembre). RFC2046 - Multipurpose Internet Mail Extensions (MIME)Part Two: Media Types.K. Moore (1996, noviembre). RFC 2047 - MIME(Multipurpose Internet Mail Extensions) Part Three:Message Hea<strong>de</strong>rExtensions for Non-ASCII Text.N. Freed; J. Klensin; J. Postel (1996, noviembre). RFC2048 - Multipurpose Internet Mail Extensions (MIME)Part Four: Registration Procedures.N. Freed; N. Borenstein (1996, noviembre). RFC2049 - Multipurpose Internet Mail Extensions (MIME)Part Five: Conformance Criteria and Examples.La norma <strong>de</strong>fine cinco tipos <strong>de</strong> contenido (tipo-discreto), conlos subtipos correspondientes. Estos tipos correspon<strong>de</strong>n a datos monomedia:• text: para información <strong>de</strong> texto.• image: para imágenes.• audio: para sonido.• vi<strong>de</strong>o: para ví<strong>de</strong>o.• application: para cualquier otro tipo <strong>de</strong> datos, por norma generalen formato específico <strong>de</strong> alguna aplicación.La norma también <strong>de</strong>fine dos tipos <strong>de</strong> datos compuestos (tipocompuesto):ANOTACIONES• multipart: para datos formados <strong>de</strong> muchas partes o para datosin<strong>de</strong>pendientes <strong>de</strong>ntro <strong>de</strong> un mismo mensaje.NotaEn los mensajes <strong>de</strong> tipo multipart, el parámetroboundary incluye una ca<strong>de</strong>na, precedida por dos caracteres<strong>de</strong> guión, “--“, que se utiliza como separadorentre las diferentes partes <strong>de</strong>l mensaje.276


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Para indicar que se han acabado todas las partes, seutiliza la ca<strong>de</strong>na <strong>de</strong>l parámetro boundary, precedida yseguida <strong>de</strong> dos caracteres <strong>de</strong> guión, “--“.• message: para encapsular otro mensaje <strong>de</strong>ntro <strong>de</strong>l mensaje.La tabla siguiente presenta los valores <strong>de</strong> tipo, subtipo y parámetrospara los Content-Type <strong>de</strong>finidos en la norma:Tabla 13.Valores <strong>de</strong>finidos para Content-TypeTipo Subtipo Parámetrostextplainenrichedcharset = ISO-8859-(1 | ... | 9) | us-ASCIIcharset = ISO-8859-(1 | ... | 9) | us-ASCIIimagegif —jpeg —audio basic —vi<strong>de</strong>o mpeg quicktimeapplicationtype = ca<strong>de</strong>na;octet-streampadding = enteropostscript —multipartmixedalternativeparalleldigestboundary = ca<strong>de</strong>naboundary = ca<strong>de</strong>naboundary = ca<strong>de</strong>naboundary = ca<strong>de</strong>narfc 822 —id = ca<strong>de</strong>na;partialnumber = entero[;total = entero ]messageexternal-bodyaccess-type = ftp | anon-ftp | tftp |afs | local-file | mail-server[;expiration = date-time ][;size = entero ][;permission=read | read-write][;name = ca<strong>de</strong>na ][;site = ca<strong>de</strong>na ][;dir = ca<strong>de</strong>na ][;mo<strong>de</strong> = netascii | octet | mail |ascii | ebcdic | image | localn ][;server = ca<strong>de</strong>na ][;subject = ca<strong>de</strong>na ]ANOTACIONES277


ª FUOC • XP04/90786/00020Software libreEspecificador <strong>de</strong>l tipo <strong>de</strong> codificación (Content-Transfer-Encoding)En algunos protocolos, como el SMTP, la información que se envía<strong>de</strong>be ser en ASCII <strong>de</strong> 7 bits. En ocasiones, los datos originales no tendráneste formato y, entonces, será preciso aplicarles algún tipo <strong>de</strong>codificación antes <strong>de</strong> enviarlos.El campo <strong>de</strong> cabecera Content-Transfer-Encoding sirve paraespecificar el tipo <strong>de</strong> codificación que se ha aplicado al contenido <strong>de</strong>lmensaje para que el receptor pueda <strong>de</strong>scodificarlo, si es preciso. Lanorma <strong>de</strong>fine diferentes tipos <strong>de</strong> codificación:Content-Transfer-Encoding: mecanismomecanismo = 7bit | 8bit | binary | quoted-printable | base64a) Codificación 7bit | 8bit | binaryLos mecanismos <strong>de</strong> codificación 7bit, 8bit y binary sólo sirvenpara indicar <strong>de</strong> qué tipo son los datos transmitidos. En estos casos,los datos no se codifican y, por norma general, se utilizan para aplicacionesque no restringen la representación <strong>de</strong> datos en 8 bits.b) Codificación quoted-printableEl mecanismo <strong>de</strong> codificación quoted-printable se utiliza para larepresentación y codificación en ASCII <strong>de</strong> 7 bits <strong>de</strong> datos, la mayoría <strong>de</strong>los cuales ya es <strong>de</strong> bytes representables en este formato. Es <strong>de</strong>cir, estemecanismo se aplica cuando la información es mayoritariamente <strong>de</strong> caracteres<strong>de</strong> texto. Las normas básicas <strong>de</strong> codificación son las siguientes:ANOTACIONES• Cualquier byte se pue<strong>de</strong> representar con el carácter “=” seguidopor la notación hexa<strong>de</strong>cimal en dos dígitos (y letras en mayúscula)<strong>de</strong>l valor <strong>de</strong>l byte.• Los bytes con valores <strong>de</strong>cimales entre 33-60 y 62-126, incluídos loscuatro, se pue<strong>de</strong>n representar con el carácter ASCII correspondiente.c) Codificación Base64El mecanismo <strong>de</strong> codificación Base64 ofrece una codificación <strong>de</strong> informaciónbinaria en ASCII <strong>de</strong> 7 bits que no <strong>de</strong>ba ser legible. Los algoritmos<strong>de</strong> codificación y <strong>de</strong>scodificación son muy simples.278


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020El proceso <strong>de</strong> codificación se lleva a cabo tomando grupos <strong>de</strong> 3 bytes(24 bits). Manteniendo el or<strong>de</strong>n <strong>de</strong> bits original, estos 24 bits se reagrupanen 4 bloques <strong>de</strong> 6 bits (6 bits = 64 combinaciones).El fichero codificado se obtiene tomando cada uno <strong>de</strong> estos bloques<strong>de</strong> 6 bits y codificándolo como un carácter alfanumérico a partir <strong>de</strong>lvalor binario <strong>de</strong> los 6 bits, según la tabla siguiente:NotaLa codificación <strong>de</strong> datos enBase64 utiliza 4 caracterespara cada 3 bytes. Por estemotivo, Base64 aumenta eltamaño <strong>de</strong> la información un33% (4/3).Tabla 14.Tabla <strong>de</strong> codificación Base64Valor Carácter Valor Carácter Valor Carácter Valor Carácter01...‘A’‘B’26...‘a’52...‘0’6263pad‘+’‘/’‘=’25‘Z’51‘z’61‘9’NotaSi <strong>de</strong>be codificarse un número <strong>de</strong> bytes que no seamúltiplo <strong>de</strong> 3 (la codificación, por tanto, no sería múltiplo<strong>de</strong> 4 bytes), se codifican todos los bytes y, al final<strong>de</strong> la ca<strong>de</strong>na <strong>de</strong> caracteres ya codificada, se aña<strong>de</strong>ntantos caracteres “=” (carácter para rellenar, pad)como sean necesarios (máximo dos) hasta llegar a unnúmero <strong>de</strong> caracteres múltiplo <strong>de</strong> 4.En el proceso <strong>de</strong> <strong>de</strong>scodificación, se toman los caracteres alfanuméricosrecibidos y se reconvierten en su valor binario correspondiente(6 bits) según la tabla. Cada 4 caracteres recibidos dan lugar a 24bits, y sólo es preciso irlos reagrupando en 3 bytes para generar elfichero <strong>de</strong>scodificado. Antes <strong>de</strong> <strong>de</strong>scodificar todo el mensaje, es precisoeliminar todos los caracteres “=” que se encuentren al final.I<strong>de</strong>ntificador <strong>de</strong>l contenido <strong>de</strong>l mensaje (Content-ID)El campo <strong>de</strong> cabecera Content-ID se utiliza para proporcionar uni<strong>de</strong>ntificador único al contenido <strong>de</strong>l mensaje. Con dicho i<strong>de</strong>ntificador,se hace referencia al contenido <strong>de</strong> manera no ambigua.Content-ID: id-msgANOTACIONES279


ª FUOC • XP04/90786/00020Software libreInformador <strong>de</strong>scriptivo <strong>de</strong>l contenido(Content-Description)El campo Content-Description proporciona información <strong>de</strong>scriptiva<strong>de</strong>l contenido en forma <strong>de</strong> texto.Content-Description: texto19.5.2. Extensiones para texto no ASCIIen las cabecerasEl MIME también permite codificar texto no ASCII en las cabeceras <strong>de</strong>los mensajes RFC 822 <strong>de</strong> manera no ambigua. Este método permitecodificar toda la cabecera o sólo una parte. El texto (que pue<strong>de</strong> ser<strong>de</strong> más <strong>de</strong> un carácter) ya codificado, precedido por el conjunto <strong>de</strong>caracteres y un i<strong>de</strong>ntificador <strong>de</strong>l tipo <strong>de</strong> codificación que se ha aplicado,se incluye en el lugar correspondiente <strong>de</strong> la cabecera entre loscaracteres “=?” y “?=”:=? charset ? codificación ? texto-codificado ?=charset = ISO-8859-(1 | ... | 9) | us-ASCIIcodificación = Q | BNotaa) Conjunto <strong>de</strong> caracteres (charset): es válido cualquiera<strong>de</strong> los caracteres permitidos en el Content-Typetext/plain.ANOTACIONESb) Codificaciones : el formato MIME permite dos tipos<strong>de</strong> codificación similares a las codificaciones quese pue<strong>de</strong>n aplicar al cuerpo <strong>de</strong>l mensaje:• Q: es parecida al Content-Transfer-Encodingquoted-printable. Es la que se recomiendacuando la mayoría <strong>de</strong> los caracteres que <strong>de</strong>bencodificarse son ASCII.• B: es idéntica al Content-Transfer-EncodingBase64. Es a<strong>de</strong>cuada para el resto <strong>de</strong> casos.280


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002019.5.3. Mensajes multiparteEn los mensajes multiparte, cada una <strong>de</strong> las partes suele estar formadapor una pequeña cabecera y el contenido. En la cabecera sepue<strong>de</strong>n encontrar los campos Content-Type, Content-Transfer-Encoding,Content-ID y Content-Description. Todosse refieren al contenido <strong>de</strong> la parte en cuestión.19.5.4. EjemploEn este ejemplo se pue<strong>de</strong> contemplar un mensaje RFC 822 con extensionesMIME versión 1.0. Es un mensaje <strong>de</strong> dos partes: la primeraes <strong>de</strong> texto codificado con quoted-printable y la segunda esuna imagen en formato .gif codificada en Base64. Asimismo, sepue<strong>de</strong> ver un campo <strong>de</strong> cabecera con una letra í codificada con codificaciónQ.Date: 27 Jun 2003 0932 PDTFrom: Jordi Inyigo To: Ramon =?iso-8859-1?Q?Mart=ED?=MIME-Version: 1.0Content-Type: multipart/mixed;boundary="=_250699_"NotaLa “í" <strong>de</strong> Ramon Martí se hacodificado con codificación Q--=_250699_Content-Type: text/plain; charset="iso-8859-1"Content-Transfer-Encoding: quoted-printableEsto es un mensaje RFC 822 que contiene MIME.--=_250699_Content-Type: image/gif; name="Readme.gif"Content-Transfer-Encoding: base64R0lGODlhIAAgAIAAAAAAAP///yH5BAEAAAAALAAAAAAgACAAAAJzjI+pywoQXoSywoaontzeRhnXKJYc82GOuaoL2brJlx7pg+eSzc9yHAHqhpmi8ddLspCT3Y2pXNZ+UxpUpGNNZVsYdBsMf4lBsMocuqLFyCHO5I6/MWY2sy7PL4F3+nU/kxcHePTl91dnR+WSyAcimGVQAAA7--=_250699_--ANOTACIONES281


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002020. Servicio <strong>de</strong> noticias: el NNTPEl servicio <strong>de</strong> noticias (en inglés, news) permite el envío <strong>de</strong> mensajes,como el servicio <strong>de</strong> correo electrónico, pero con la diferencia<strong>de</strong> que el originador no especifica el <strong>de</strong>stinatario o <strong>de</strong>stinatarios,sino que cualquier usuario con acceso al servicio pue<strong>de</strong> leerlos.Esta funcionalidad, pues, se pue<strong>de</strong> comparar a la <strong>de</strong> un tablón <strong>de</strong>anuncios, en el que todo el mundo pue<strong>de</strong> leer los mensajes que seencuentran colgados.El servicio <strong>de</strong> noticias en Internet se conoce con el nombre Usenet,que proviene <strong>de</strong>l <strong>de</strong> la red en que se <strong>de</strong>sarrolló originariamenteeste servicio. En la actualidad, la distribución <strong>de</strong> noticias se ha extendidopor todo Internet, <strong>de</strong> manera que los anuncios enviados sepue<strong>de</strong>n leer en cualquier parte <strong>de</strong>l mundo. En la práctica, sin embargo,es posible restringir el ámbito en que se quiere distribuir losmensajes, puesto que algunos sólo serán interesantes, por ejemplo,en una <strong>de</strong>terminada zona geográfica.20.1. El mo<strong>de</strong>lo NNTPEn el servicio <strong>de</strong> noticias, la distribución <strong>de</strong> los mensajes o anuncios,que en Usenet se <strong>de</strong>nominan artículos, se efectúa <strong>de</strong> manera <strong>de</strong>scentralizada.Teniendo en cuenta el enorme volumen <strong>de</strong> tráfico quegenera este servicio, no sería viable tener un servidor central en elque todo el mundo <strong>de</strong>jara sus artículos y fuera a leer los <strong>de</strong> los <strong>de</strong>más.Por este motivo, se utiliza un mecanismo <strong>de</strong> propagación en elque el autor <strong>de</strong> un artículo lo envía a un servidor <strong>de</strong> noticias, el cualse encargará <strong>de</strong> reenviarlo a una serie <strong>de</strong> servidores próximos o conlos que esté conectado directamente, que a su vez lo reenviarán aotros servidores, y así sucesivamente.Con este mecanismo <strong>de</strong> propagación, se consigue que un artículoesté disponible para ser leído, i<strong>de</strong>almente, en todos los servidores <strong>de</strong>ANOTACIONES283


ª FUOC • XP04/90786/00020Software librela red. Los usuarios que <strong>de</strong>seen leer los artículos podrán hacerlo,pues, conectándose a cualquier servidor, preferiblemente al que tenganmás próximo.Por otro lado, los servidores sólo almacenan cada artículo durantecierto tiempo. Hay artículos que tienen una fecha <strong>de</strong> caducidad pre<strong>de</strong>terminada,y el servidor los borra automáticamente en la misma.Otros se borran, por ejemplo, cuando el servidor <strong>de</strong>ci<strong>de</strong> que losusuarios que puedan estar interesados en los mismos ya han tenidobastante tiempo para leerlos.Lectura complementariaSi queréis más informaciónsobre el NNTP, consultad laobra siguiente:B. Kantor; P. Lapsley(1986, febrero). RFC 977 -Network News TransferProtocol.El método utilizado para propagar los artículos tiene ciertas limitaciones;por ejemplo, no se pue<strong>de</strong> garantizar que un artículo lleguea todos los servidores en un plazo <strong>de</strong>terminado (o, en ocasiones,que llegue a un servidor concreto), es preciso controlar el camino pordon<strong>de</strong> pasa cada artículo para evitar bucles, etc. Sin embargo,este método es más práctico y eficiente que la solución <strong>de</strong> un soloservidor central.Los servidores <strong>de</strong> noticias se comunican entre sí para intercambiarseartículos por medio <strong>de</strong>l NNTP (network news transfer protocol), especificadoen el documento RFC 977.NotaANOTACIONESNotaAntiguamente se utilizabanotros métodos <strong>de</strong> transmisión<strong>de</strong> artículos entre servidores,como el UUCP (Unixto Unix copy protocol).Un usuario que <strong>de</strong>see acce<strong>de</strong>r al servicio, tantopara enviar artículos como para leerlos, pue<strong>de</strong> serque tenga acceso directo a alguno <strong>de</strong> los servidores<strong>de</strong> noticias. En este caso, la comunicación con elservidor es un asunto local. El caso más general, sinembargo, es que el usuario quiera acce<strong>de</strong>r al servicio<strong>de</strong>s<strong>de</strong> otro sistema, caso en que dicho sistemaactuará como cliente. Entonces, la comunicaciónentre el cliente y el servidor se lleva a cabo tambiénpor medio <strong>de</strong>l NNTP.Tanto si se trata <strong>de</strong> un cliente local, como <strong>de</strong> un cliente remoto,por norma general habrá otro proceso encargado <strong>de</strong> la interfazcon el usuario. Este tipo <strong>de</strong> programa se suele llamar lector <strong>de</strong>noticias.284


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Asimismo, existe la posibilidad <strong>de</strong> que un grupo <strong>de</strong> clientes acceda aun servidor central <strong>de</strong> una organización por medio <strong>de</strong> un servidor esclavo:Figura 88.NotaEl servidor esclavo pue<strong>de</strong> mejorar la eficiencia en elacceso, por ejemplo, almacenando localmente copias<strong>de</strong> los últimos artículos leídos, por si los solicitan otrosclientes.Los artículos disponibles en un servidor <strong>de</strong>ben estar organizados engrupos, según su tema, para facilitar el acceso a los usuarios quequieran leerlos. Esta organización sigue un mo<strong>de</strong>lo jerárquico: en elnivel más alto <strong>de</strong> los grupos se encuentran los temas generales que,ANOTACIONES285


ª FUOC • XP04/90786/00020Software libreen un segundo nivel, están divididos en subtemas, los cuales, a suvez, pue<strong>de</strong>n estar subdivididos en niveles inferiores.NotaEs posible que un mismo artículo pertenezca a más <strong>de</strong>un grupo. Cuando un usuario envía un artículo al sistema<strong>de</strong> noticias, a<strong>de</strong>más <strong>de</strong> po<strong>de</strong>r especificar en quéámbito se <strong>de</strong>be distribuir, es preciso que indique obligatoriamentea qué grupo o grupos lo quiere enviar.La nomenclatura que se utiliza para <strong>de</strong>signar los grupos consiste en concatenarlos nombres <strong>de</strong> cada nivel, <strong>de</strong> más alto a más bajo, separándoloscon “.” (por ejemplo, news.announce o comp.os.linux.hardware).En el nivel más alto <strong>de</strong> la jerarquía, los grupos originales <strong>de</strong> Useneteran los siguientes:• comp: temas relacionados con or<strong>de</strong>nadores e informática.• news: artículos sobre el sistema <strong>de</strong> noticias mismo.• rec: activida<strong>de</strong>s recreativas, hobbies, etc.• soc: temas sociales, culturales, humanísticos, etc.• sci: temas científicos.Nota• talk: <strong>de</strong>bates, discusiones, opiniones, etc.Actualmente, existen otrosgrupos <strong>de</strong>l nivel superior,como los que sólo contienenartículos <strong>de</strong>stinados a unaregión geográfica. Porejemplo eu para Europa,es para España, fr paraFrancia, etc.ANOTACIONES• misc: otros temas no clasificables en los apartados anteriores.• alt: la jerarquía alternativa, que algunos aprovechan para saltarselas normas establecidas en los grupos “oficiales”.En la comunidad Usenet se han establecido una serie <strong>de</strong> reglas, basadasen un sistema <strong>de</strong> votaciones, para <strong>de</strong>cidir la creación <strong>de</strong> nuevosgrupos o la eliminación <strong>de</strong> alguno <strong>de</strong> los ya existentes. Estecarácter <strong>de</strong> <strong>de</strong>mocracia asamblearia, y otros aspectos como la posibilidad<strong>de</strong> publicar escritos (fotografías, ví<strong>de</strong>os, etc.) o dar a conocerlas i<strong>de</strong>as <strong>de</strong> una persona <strong>de</strong> manera global y casi instantánea (un286


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020sueño que, hasta la llegada <strong>de</strong> Internet, sólo estaba al alcance <strong>de</strong> losgran<strong>de</strong>s medios <strong>de</strong> comunicación), hicieron <strong>de</strong> Usenet el gran fenómenosociológico <strong>de</strong> Internet durante unos cuantos años.Hoy día el servicio Usenet está eclipsado por la enorme popularidad<strong>de</strong>l servicio WWW, que tiene una orientación mucho más comercial,pero no es tan participativo.20.2. Conceptos básicos <strong>de</strong>l NNTPPor norma general, el NNTP utiliza el protocolo <strong>de</strong> transporte TCP. Elnúmero <strong>de</strong> puerto asignado al servicio <strong>de</strong> noticias es el 119.En el NNTP, se utiliza un esquema <strong>de</strong> peticiones y respuestas comoel <strong>de</strong>l SMTP. Cada petición constituye una línea acabada con que contiene un comando, posiblemente con parámetros.Las respuestas también siguen la estructura general utilizada en elFTP o el SMTP. Cada respuesta se representa con una línea que empiezacon un código numérico <strong>de</strong> tres dígitos. A continuación, segúnel código <strong>de</strong> respuesta, pue<strong>de</strong> haber una serie <strong>de</strong> parámetros seguidos<strong>de</strong> un texto arbitrario opcional, hasta el final <strong>de</strong> la línea, queacaba con .NotaLa especificación NNTP estableceque las líneas <strong>de</strong> comandosno <strong>de</strong>ben tenermás <strong>de</strong> 512 caracteres. Porotro lado, los comandos ylos parámetros se pue<strong>de</strong>nescribir indistintamente enmayúsculas o minúsculas.Los significados <strong>de</strong>l primer dígito <strong>de</strong>l código <strong>de</strong> respuesta son similaresa los <strong>de</strong>l FTP y el SMTP; los <strong>de</strong>l segundo son los siguientes:NotaVéase el anexo 4.• x0x: respuesta referente a la conexión, inicialización, etc.• x1x: selección <strong>de</strong> un grupo <strong>de</strong> noticias.• x2x: selección <strong>de</strong> un artículo.• x3x: distribución <strong>de</strong> artículos.• x4x: envío <strong>de</strong> artículos.• x8x: extensiones no estándar.• x9x: mensajes informativos <strong>de</strong> prueba (<strong>de</strong>bugging).Algunas respuestas van seguidas <strong>de</strong> un texto formado por una secuencia<strong>de</strong> líneas. En este caso, cada línea acaba con , yel final <strong>de</strong> la secuencia se indica con una línea en la que sólo seencuentra el carácter “.” antes <strong>de</strong> . Si alguna <strong>de</strong> las lí-ANOTACIONES287


ª FUOC • XP04/90786/00020Software libreneas <strong>de</strong> la respuesta <strong>de</strong>be empezar con “.”, el emisor inserta otro“.” al principio <strong>de</strong> la línea y, por consiguiente, el receptor <strong>de</strong>be eliminartodos los “.” iniciales que encuentre antes <strong>de</strong>l final <strong>de</strong> larespuesta.Cuando el cliente establece la conexión, el servidor respon<strong>de</strong> con uncódigo 200 ó 201 para indicar que permite que el cliente envíe artículoso que no lo permite, respectivamente.20.3. Formato <strong>de</strong> los artículosLectura complementariaSi queréis más informaciónsobre el formato <strong>de</strong> los artículosUsenet, consultad laobra siguiente:M.R. Horton; R. Adams(1987, diciembre). RFC 1036- Standard for interchange ofUSENET messages.El formato <strong>de</strong> los artículos Usenet está <strong>de</strong>finido en la especificaciónRFC 1036, y se basa en el <strong>de</strong> los mensajes <strong>de</strong> correo electrónico (<strong>de</strong>finidoen la especificación 822), aunque con algunas restriccionesadicionales. Por tanto, cada artículo consta <strong>de</strong> una cabecera formadapor una serie <strong>de</strong> campos, y <strong>de</strong> un cuerpo separado <strong>de</strong> la mismapor una línea en blanco.Hay seis campos obligatorios en la cabecera, que son los que se exponena continuación:• From: dirección <strong>de</strong> correo electrónico <strong>de</strong>l originador <strong>de</strong>l artículo(y, opcionalmente, también su nombre).• Date: día y hora en que se ha originado el artículo.• Newsgroups: lista <strong>de</strong> los grupos a los que se envía el artículo,separados por comas si hay más <strong>de</strong> uno.ANOTACIONES• Subject: asunto <strong>de</strong>l que trata el artículo, que se utilizará comotítulo.• Message-ID: i<strong>de</strong>ntificador único <strong>de</strong>l artículo. Aparte <strong>de</strong> estei<strong>de</strong>ntificador único, para facilitar el acceso a los artículos, cadaservidor les asigna un i<strong>de</strong>ntificador local consistente en el nombre<strong>de</strong>l grupo y un número correlativo <strong>de</strong>ntro <strong>de</strong>l grupo. Por lo tanto,si un artículo se ha enviado a diferentes grupos, tendrá más <strong>de</strong> uni<strong>de</strong>ntificador. Dichos i<strong>de</strong>ntificadores sólo son significativos paraun servidor, puesto que otro servidor probablemente asignarái<strong>de</strong>ntificadores locales diferentes a los mismos artículos.288


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020• Path: lista <strong>de</strong> servidores por los que ha pasado el artículo, separadoscon símbolos <strong>de</strong> puntuación que no sean “.” (por normageneral, se utiliza el carácter “!”). Cada servidor <strong>de</strong>be añadir sunombre al principio <strong>de</strong> la lista. El valor <strong>de</strong> este campo permite queun servidor sepa si el artículo ya ha pasado por otro servidor y,por tanto, no es preciso volvérselo a enviar.Asimismo, la cabecera <strong>de</strong> un artículo pue<strong>de</strong> incluir los campos opcionalessiguientes:• Reply-To: dirección a la que <strong>de</strong>ben enviarse los mensajes <strong>de</strong> correoen respuesta al artículo (por <strong>de</strong>fecto, la misma <strong>de</strong>l campo From).• Sen<strong>de</strong>r: i<strong>de</strong>ntificación <strong>de</strong>l usuario que ha enviado el artículo alsistema <strong>de</strong> noticias, si no coinci<strong>de</strong> con el <strong>de</strong>l campo From.• Followup-To: lista <strong>de</strong> grupos <strong>de</strong> noticias, separados por comas,a los que <strong>de</strong>ben enviarse los artículos <strong>de</strong> respuesta (por <strong>de</strong>fecto,los mismos <strong>de</strong>l campo Newsgroups).• Expires: fecha y hora en que el artículo se pue<strong>de</strong> consi<strong>de</strong>rar caducadoy, por tanto, pue<strong>de</strong> ser borrado por los servidores (en ausencia<strong>de</strong> este campo, el servidor <strong>de</strong>ci<strong>de</strong> cuándo los borrará).• References: lista <strong>de</strong> i<strong>de</strong>ntificadores <strong>de</strong> otros artículos a los quese hace referencia en el artículo.• Control: sirve para indicar que el artículo contiene un mensaje<strong>de</strong> control <strong>de</strong>l sistema <strong>de</strong> noticias. El mensaje se especifica en elvalor <strong>de</strong> este campo y sólo es interesante para los servidores (losusuarios no necesitan leer estos artículos). Los mensajes <strong>de</strong> controlsirven para cancelar artículos, crear y borrar grupos, informar<strong>de</strong> qué artículos tiene un servidor y cuáles pi<strong>de</strong> otro, etc.• Distribution: lista <strong>de</strong> distribuciones a la que se <strong>de</strong>be enviar elartículo. Cada distribución es un conjunto <strong>de</strong> servidores que, pornorma general, pertenecen a una misma área geográfica, unamisma organización, etc.• Organization: nombre <strong>de</strong> la organización (empresa, institución,etc.) a la que pertenece el originador <strong>de</strong>l artículo.• Keywords: lista <strong>de</strong> palabras clave relacionadas con el contenido<strong>de</strong>l artículo.ANOTACIONES289


ª FUOC • XP04/90786/00020Software libre• Summary: breve resumen <strong>de</strong>l contenido <strong>de</strong>l artículo.• Approved: algunos grupos <strong>de</strong> noticias son mo<strong>de</strong>rados, lo que significaque los usuarios no pue<strong>de</strong>n enviar los artículos directamente.En este caso, los artículos <strong>de</strong>ben enviarse por correo electrónico auna persona, llamada mo<strong>de</strong>rador <strong>de</strong>l grupo, que es la única queestá autorizada para poner artículos en el grupo. De la totalidad <strong>de</strong>mensajes que recibe, el mo<strong>de</strong>rador <strong>de</strong>ci<strong>de</strong> cuáles envía al grupo ycuáles no. Los mensajes que finalmente se envían <strong>de</strong>ben llevar en elcampo Approved la dirección <strong>de</strong> correo <strong>de</strong>l mo<strong>de</strong>rador.• Lines: número <strong>de</strong> líneas <strong>de</strong>l cuerpo <strong>de</strong>l artículo.• Xref: este campo lo genera cada servidor y no <strong>de</strong>be transmitirse<strong>de</strong> un servidor a otro. Contiene el nombre <strong>de</strong>l servidor y una lista<strong>de</strong> i<strong>de</strong>ntificadores locales que tiene el mismo artículo en otros gruposa los que se haya enviado. Una vez que el usuario ha leído elartículo, este campo permite a los lectores <strong>de</strong> noticias marcarlocomo leído en todos los grupos en que aparezca.La especificación RFC 1036 permite que la cabecera incluya otroscampos no estándar.Ejemplo <strong>de</strong> artículo UsenetEjemploANOTACIONESFrom: usuari@acme.com (Ernest Udiant)Path: News.uoc.es!news.rediris.es!news.eu.net!newsfeed.omninet.org!nntp.acme.com!usuariNewsgroups: soc.culture.espanolSubject: Nuevo libro <strong>de</strong> recetas tradicionalesMessage-ID: Date: Thu, 12 Dec 2002 09:12:30 GMTExpires: Sat, 19 Dec 2002 00:00:00 GMTOrganization: ACME Inc.Lines: 2La semana que viene se publicará un nuevolibro <strong>de</strong> recetas <strong>de</strong> cocina tradicional.Seguiremos informando...290


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002020.4. Comandos <strong>de</strong>l NNTPA continuación, se <strong>de</strong>tallan los comandos <strong>de</strong>finidos en la especificaciónRFC 977 <strong>de</strong>l NNTP:1) Listar grupos (LIST)NotaConsultad la tabla <strong>de</strong> loscódigos <strong>de</strong> respuesta al final<strong>de</strong> este subapartado.Este comando sirve para obtener una lista <strong>de</strong> los grupos <strong>de</strong> noticias disponibles.El servidor respon<strong>de</strong> con un código 215 y, a continuación, envíauna secuencia <strong>de</strong> líneas (acabada con “.”), una para cada grupo <strong>de</strong>noticias disponible, cada una con el formato siguiente:grupo último primero permisoNota• grupo: nombre <strong>de</strong>l grupo.• último: número correlativo (i<strong>de</strong>ntificador local)<strong>de</strong>l último artículo que hay en este grupo.• primero: número <strong>de</strong>l primer artículo.• permiso: pue<strong>de</strong> ser y o n para indicar si se pue<strong>de</strong>nenviar artículos a este grupo, o no, respectivamente.LIST2) Seleccionar un grupo (GROUP)Este comando permite seleccionar un grupo concreto. El servidor envíauna respuesta 211 con los parámetros siguientes (por este or<strong>de</strong>n):número estimado <strong>de</strong> artículos <strong>de</strong>l grupo, número <strong>de</strong>l primerartículo, número <strong>de</strong>l último y nombre <strong>de</strong>l grupo. Si el grupo no existe,la respuesta es 411.NotaEl número <strong>de</strong> artículos que hay en el grupo no tienepor qué coincidir con la diferencia entre el número <strong>de</strong>lúltimo artículo y el anterior al primero, puesto quepue<strong>de</strong> ser que se hayan borrado artículos intermedios.GROUP grupANOTACIONES291


ª FUOC • XP04/90786/00020Software libre3) Leer el artículo (ARTICLE)El parámetro pue<strong>de</strong> ser un i<strong>de</strong>ntificador único <strong>de</strong> artículo o un número<strong>de</strong> artículo <strong>de</strong>ntro <strong>de</strong>l grupo actualmente seleccionado (el artículoleído pasa a ser consi<strong>de</strong>rado como el artículo actual). Sin parámetro,este comando lee el artículo actual. El servidor respon<strong>de</strong> con un código220 seguido <strong>de</strong> dos parámetros: el número <strong>de</strong>l artículo y sui<strong>de</strong>ntificador único. A continuación, envía el contenido <strong>de</strong>l artículo(cabecera y cuerpo), acabado en “.”. Si hay algún error, el servidorrespon<strong>de</strong> con los códigos 412, 420, 423 o 430, según el caso.ARTICLE [ < i<strong>de</strong>ntificador > |número]4) Leer la cabecera (HEAD)Este comando es idéntico a ARTICLE; sin embargo, el servidor sólo<strong>de</strong>vuelve la cabecera <strong>de</strong>l artículo. El código <strong>de</strong> respuesta será el 221en lugar <strong>de</strong>l 220, con los mismos parámetros.HEAD [ < i<strong>de</strong>ntificador > |número]5) Leer el cuerpo (BODY)Este comando es idéntico a ARTICLE; sin embargo, el servidor sólo<strong>de</strong>vuelve el cuerpo <strong>de</strong>l artículo. El código <strong>de</strong> respuesta será el 222 enlugar <strong>de</strong>l 220, con los mismos parámetros.BODY [ < i<strong>de</strong>ntificador > |número]6) Obtener el estatus (STAT)ANOTACIONESEste comando es idéntico a ARTICLE; sin embargo, el servidor no<strong>de</strong>vuelve ningún texto, sino sólo la línea <strong>de</strong> respuesta. El código seráel 223 en lugar <strong>de</strong>l 220, con los mismos parámetros.STAT [ < i<strong>de</strong>ntificador > |número]7) Seleccionar el artículo siguiente (NEXT)Este comando selecciona el artículo siguiente <strong>de</strong>l grupo y hace quepase a ser consi<strong>de</strong>rado el artículo actual (es <strong>de</strong>cir, lo que se leerá si292


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020se envía el comando llamado ARTICLE sin parámetro). El código <strong>de</strong>respuesta normal será el 223, como en el comando STAT. Un código<strong>de</strong> error específico es el 421.NEXT8) Seleccionar el artículo anterior (LAST)Este comando selecciona el artículo anterior al actual. Los códigos <strong>de</strong>respuesta son como los <strong>de</strong>l comando NEXT, pero cambiando el 421por el 422.LAST9) Listar grupos nuevos (NEWGROUPS)NEWGROUPS dispone <strong>de</strong> las mismas funciones que el comandoLIST, excepto que el código <strong>de</strong> respuesta es 231 (en lugar <strong>de</strong> 215)y la lista <strong>de</strong> grupos está restringida a los que se han creado <strong>de</strong>spués<strong>de</strong> la fecha indicada por los parámetros (el primero son seis dígitosque representan año, mes y día, y el segundo, seis más que representanhora, minutos y segundos). Opcionalmente, se pue<strong>de</strong> restringirtodavía más la lista especificando una o más jerarquías <strong>de</strong> altonivel separadas por comas (por ejemplo, news, rec, etc.).NEWGROUPS aammdd hhmmss[GMT][< jerarquias >]10) Listar artículos nuevos (NEWNEWS)El servidor respon<strong>de</strong> a este comando con un código 230 y, a continuación,envía una secuencia <strong>de</strong> líneas (acabada con “.”), una paracada artículo <strong>de</strong> los grupos especificados en el primer parámetro quese haya enviado o recibido <strong>de</strong>spués <strong>de</strong> la fecha indicada por el segundoy el tercero. Las líneas contienen los i<strong>de</strong>ntificadores únicos <strong>de</strong>los artículos.NEWNEWS grups aammdd hhmmss[GMT][< jerarquias >]El primer parámetro es un nombre <strong>de</strong> grupo o una lista <strong>de</strong> nombresseparados por comas. En un nombre, pue<strong>de</strong> aparecer el carácter es-ANOTACIONES293


ª FUOC • XP04/90786/00020Software librepecial “*”. En este caso, se consi<strong>de</strong>ra que equivale a todos los nombres<strong>de</strong> grupos que, en lugar <strong>de</strong>l “*”, tengan una secuenciacualquiera <strong>de</strong> caracteres, que pue<strong>de</strong> incluir el separador “.” (Porejemplo, alt.biz* pue<strong>de</strong> equivaler a alt.biz.misc, alt.bizarre,etc.). Por otro lado, si un nombre tiene el prefijo “!”, el grupo ogrupos correspondientes se excluirán <strong>de</strong> la lista (por ejemplo,comp.lang.*, !comp.lang.c.* equivale a los grupos que empiecenpor comp.lang., pero no por comp.lang.c.).Opcionalmente, se pue<strong>de</strong> restringir la lista <strong>de</strong> artículos a un conjunto<strong>de</strong> una o más jerarquías si se especifican en el último parámetro separadaspor comas. La lista sólo contendrá artículos que pertenezcanal menos a un grupo <strong>de</strong> las jerarquías.11) Enviar un artículo (POST)Este comando se utiliza para enviar un artículo. El servidor respon<strong>de</strong>con un código 440 para indicar que no se permite la operación, ocon un 340 para solicitar el artículo. En el segundo caso, el cliente<strong>de</strong>be enviar el contenido <strong>de</strong>l artículo (cabecera y cuerpo) con el formato<strong>de</strong>finido en la especificación RFC 1036 y acabado con una líneaen que sólo haya un “.”. Entonces, el servidor enviará la respuesta <strong>de</strong>finitiva,que será 240 o, si ha habido algún error, 441.POST12) Ofrecer un artículo (IHAVE)Cuando un servidor se conecta a otro, pue<strong>de</strong> utilizar el comandoIHAVE para hacerle saber <strong>de</strong> qué artículos dispone.ANOTACIONESNotaUn servidor no <strong>de</strong>bería ofrecera otro servidor artículosque ya le haya enviado anteso que ya hayan pasado poreste último (el campo Path<strong>de</strong> la cabecera lo indica).Esta situación se conocecomo doble ofrecimiento.IHAVE < i<strong>de</strong>ntificador >En cada artículo, el servidor receptor enviará en la respuesta un código335 si quiere recibir una copia <strong>de</strong>l mismo o 435 si no le interesa.Si es preciso pasar el artículo, se hace por medio <strong>de</strong>l comandoPOST, y el servidor receptor enviará en la respuesta un código 235o, en caso <strong>de</strong> error, uno 436. Asimismo, pue<strong>de</strong> suce<strong>de</strong>r que al receptorno le interese el artículo <strong>de</strong>spués <strong>de</strong> examinar su contenido;en este caso, la respuesta será 437.294


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002013) Conexión <strong>de</strong>s<strong>de</strong> un servidor esclavo (SLAVE)Este comando sirve para informar al servidor <strong>de</strong> que la conexión proviene<strong>de</strong> un servidor esclavo. El servidor pue<strong>de</strong> <strong>de</strong>cidir, por ejemplo,dar más prioridad a esta conexión que a las que provienen directamente<strong>de</strong> clientes porque se supone que atien<strong>de</strong> a más usuarios. Elcódigo <strong>de</strong> respuesta es el 202.SLAVE14) Mensaje <strong>de</strong> ayuda (HELP)Este comando se utiliza para obtener un mensaje <strong>de</strong> ayuda. El servidorrespon<strong>de</strong> con un código 100 y, a continuación, un texto informativo<strong>de</strong> los comandos que acepta, acabado con una línea con uncarácter “.”.HELP15) Cerrar la conexión (QUIT)Este comando se utiliza para cerrar la conexión. El servidor respon<strong>de</strong>enviando un código 205 y cerrando la conexión.QUITLa especificación RFC 977 permite que las implementaciones añadanotros comandos a los estándares; sin embargo, recomienda queel nombre <strong>de</strong> estos nuevos comandos empiece con X para evitar posiblesconflictos con posteriores extensiones oficiales.Algunos ejemplos <strong>de</strong> comandos implementados por muchos servidoresson los siguientes:• XGTITLE: confiere un título <strong>de</strong>scriptivo <strong>de</strong> uno o más grupos.• XHDR y XOVER: dan, respectivamente, el valor <strong>de</strong> un campo y unresumen <strong>de</strong> la cabecera <strong>de</strong> uno o más artículos.ANOTACIONES295


ª FUOC • XP04/90786/00020Software libre• XPAT: proporciona los valores <strong>de</strong> un campo <strong>de</strong> la cabecera queconcuerdan con un patrón, junto con los números <strong>de</strong> los artículoscorrespondientes.La tabla siguiente resume los códigos <strong>de</strong> respuesta <strong>de</strong>l protocolo NNTP:Tabla 15.Códigos <strong>de</strong> respuestaCódigoSignificado100 Mensaje <strong>de</strong> ayuda.200 Servidor preparado; se permite enviar artículos.201 Servidor preparado; no se permite enviar artículos.202 Conexión <strong>de</strong>s<strong>de</strong> servidor esclavo.205 El servidor cierra la conexión.211 Grupo seleccionado.215 Lista <strong>de</strong> grupos.220 Contenido <strong>de</strong>l artículo.221 Cabecera <strong>de</strong>l artículo.222 Cuerpo <strong>de</strong>l artículo.223 I<strong>de</strong>ntificador <strong>de</strong>l artículo.230 Lista <strong>de</strong> artículos nuevos.231 Lista <strong>de</strong> grupos nuevos.235 Artículo recibido.240 Artículo enviado.335 Preparado para recibir un artículo <strong>de</strong> otro servidor.340 Preparado para recibir un artículo <strong>de</strong>l cliente.400 Servicio no disponible.411 No existe el grupo.ANOTACIONES412 No hay ningún grupo seleccionado.420 No hay ningún artículo seleccionado.421 No hay artículo siguiente.422 No hay artículo anterior.423 No hay ningún artículo con este número.430 No hay ningún artículo con este i<strong>de</strong>ntificador.435 No se <strong>de</strong>sea recibir el artículo.436 Error en la recepción <strong>de</strong>l artículo.296


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Códigos <strong>de</strong> respuestaCódigoSignificado437 Artículo rechazado.440 No se permite enviar artículo.441 No se ha podido enviar el artículo.500 Comando <strong>de</strong>sconocido.501 Error <strong>de</strong> sintaxis en el comando.502 Permiso <strong>de</strong>negado.503 Error interno.ActividadEstableced una conexión con un servidor NNTP (porejemplo, con telnet servidor 119). Efectuad algunasoperaciones como listar los grupos que haya(¡atención: en algunos servidores la lista pue<strong>de</strong> tenermás <strong>de</strong> 10.000 líneas!), entrar en un grupo, ver la cabecera<strong>de</strong> algún artículo, leer alguno entero, etc., y observadlos códigos numéricos <strong>de</strong> respuesta que envía elservidor.ANOTACIONES297


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002021. Servicio hipermedia: WWW21.1. Documentos hipermediaEl servicio WWW (world wi<strong>de</strong> web) ofrece acceso a información multimedia,que pue<strong>de</strong> incluir contenidos <strong>de</strong> diferentes tipos (texto, imágenes,audio, ví<strong>de</strong>o, etc.) y referencias a otros elementos <strong>de</strong> información,según el mo<strong>de</strong>lo <strong>de</strong> los sistemas hipertexto.Un sistema hipertexto permite recorrer un documento <strong>de</strong> manera nonecesariamente lineal o secuencial, sino siguiendo las referencias oenlaces que el usuario selecciona y saltando a la parte referenciada.Es <strong>de</strong>cir, en lugar <strong>de</strong> seguir un único camino lineal, se pue<strong>de</strong> realizarun recorrido por el documento pasando por los arcos <strong>de</strong> un grafo.Esta manera <strong>de</strong> acce<strong>de</strong>r a la información se suele llamar familiarmentenavegar.Cuando se generaliza la funcionalidad hipertextualpara que permita navegar por elementos <strong>de</strong> informaciónmultimedia y no sólo por texto, se suele hablar <strong>de</strong>sistemas hipermedia.En la terminología WWW, cada uno <strong>de</strong> los elementos <strong>de</strong> informacióna los que se pue<strong>de</strong> acce<strong>de</strong>r se llama recurso. Los documentos hipermediaconstituyen un caso particular <strong>de</strong> recurso que contiene informaciónestructurada, posiblemente con diferentes tipos <strong>de</strong> contenidoy enlaces a otros recursos.En la estructura <strong>de</strong> un documento, en general, se pue<strong>de</strong>n distinguirlos elementos siguientes:1) La estructura lógica, es <strong>de</strong>cir, la división <strong>de</strong>l contenido en partesque se encuentran en diferentes niveles, como capítulos, secciones,apartados, subapartados, títulos, párrafos, figuras, tablas,encabezamientos, notas, etc.ANOTACIONES299


ª FUOC • XP04/90786/00020Software libre2) La estructura física, es <strong>de</strong>cir, la disposición <strong>de</strong> las partes <strong>de</strong>l documentoen el medio <strong>de</strong> presentación (por norma general, papel opantalla): la división <strong>de</strong>l documento en páginas y grupos <strong>de</strong> páginas,la distribución <strong>de</strong>l área <strong>de</strong> cada página en zonas para cabeceras ypies, los márgenes, los espacios reservados a figuras, tablas, etc.En el mo<strong>de</strong>lo general <strong>de</strong> procesado <strong>de</strong> los documentos estructurados,el autor crea la estructura lógica, con el contenido correspondiente,y pue<strong>de</strong> incluir ciertas directrices para controlar el aspectovisual que <strong>de</strong>berá tener el documento. En numerosas ocasiones, a un<strong>de</strong>terminado conjunto <strong>de</strong> directrices <strong>de</strong> este tipo se le da el nombre<strong>de</strong> estilo. A partir <strong>de</strong> esta información, un proceso <strong>de</strong>nominado <strong>de</strong>formateo se encarga <strong>de</strong> generar la estructura física.Existen diferentes representaciones normalizadas <strong>de</strong> los documentosestructurados, las cuales van <strong>de</strong>stinadas a objetivos diferentes:a) Representaciones que se centran en la especificación <strong>de</strong> la estructuralógica, como el SGML (Standard Generalized MarkupLanguage, publicado en el estándar internacional ISO 8879).NotaSPDL está basado en otrolenguaje muy popular quesirve para representar documentosformateados:el lenguaje PostScript.b) Representaciones que se centran en la especificación <strong>de</strong> la estructurafísica, como el SPDL (Standard Page Description Language,publicado en el estándar ISO/IEC 10180).c) Representaciones que compren<strong>de</strong>n tanto la estructura lógicacomo la física, por ejemplo el estándar ODA (Open DocumentArchitecture, publicado en el estándar ISO/IEC 8613 y en la serie<strong>de</strong> recomendaciones ITU-T T.410).ANOTACIONESNotaDSSSL es la sigla <strong>de</strong> documentstyle semantics andspecification language , publicadoen el estándar ISO/IEC 1017921.2. Marcado: el SGMLEl SGML contiene la especificación <strong>de</strong> un lenguaje que sólo permiterepresentar la estructura <strong>de</strong> un documento <strong>de</strong>s<strong>de</strong> el punto <strong>de</strong> vista lógico.En principio, un usuario pue<strong>de</strong> aplicar los estilos que quierapara visualizar el documento. Sin embargo, lo más habitual es quelas aplicaciones que utilizan este lenguaje proporcionen una serie <strong>de</strong>reglas para interpretar la estructura <strong>de</strong>l documento y, en particular,para formatearlo. Por otro lado, se ha publicado otro estándar, lla-300


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020mado DSSSL, que permite <strong>de</strong>finir estilos <strong>de</strong> presentación con lastransformaciones necesarias para convertir un documento SGML enotra notación, como el SPDL.Un ejemplo <strong>de</strong> aplicación basada en SGML es el HTML (HypertextMarkup Language) diseñado para especificar documentos hipermedia.NotaActualmente, la especificación oficial <strong>de</strong>l HTML estábajo el control <strong>de</strong> un grupo <strong>de</strong> empresas y organizacionesconocido como World Wi<strong>de</strong> Web Consortium(W3C). Con anterioridad, la responsabilidad era <strong>de</strong> ungrupo <strong>de</strong> trabajo <strong>de</strong> la Internet Engineering Task Force(IETF), que cesó sus activida<strong>de</strong>s en 1996 tras publicar eldocumento RFC 1866 con la especificación HTML 2.0.El SGML se publicó en 1986 con el objetivo <strong>de</strong> facilitar la especificación<strong>de</strong> documentos estructurados. El lenguaje <strong>de</strong>finido en este estándar,sin embargo, es lo suficientemente general para permitir larepresentación <strong>de</strong> muchos otros tipos <strong>de</strong> información estructurada(bases <strong>de</strong> datos, etc.).Lectura complementariaPodéis ampliar la informaciónsobre el SGML en laobra siguiente:Charles Goldfarb (1990).The SGML Handbook.Oxford: Oxford UniversityPress.21.3. Transferencia <strong>de</strong> hipermedia: el HTTPEl HTTP (hipertext transfer protocol) es la base <strong>de</strong>l servicio WWW. Susorígenes fueron los trabajos <strong>de</strong> un grupo <strong>de</strong> investigadores <strong>de</strong>l CERN(Centro Europeo <strong>de</strong> Investigación Nuclear) que, al final <strong>de</strong> los añosochenta y principios <strong>de</strong> los noventa, <strong>de</strong>finieron un protocolo para acce<strong>de</strong>r<strong>de</strong> manera sencilla y cómoda a la información distribuida enlas diferentes se<strong>de</strong>s <strong>de</strong>l centro. Cuando el conjunto <strong>de</strong> sistemas accesiblescon este mecanismo se extendió a otras organizaciones ypaíses <strong>de</strong> todo el mundo, nació lo que hoy conocemos como WWW(World Wi<strong>de</strong> Web).De la misma manera que el HTML, el HTTP también evoluciona constantementea medida que los implementadores incorporan nuevas funcionalida<strong>de</strong>spara adaptarlo a diferentes tipos <strong>de</strong> aplicaciones particulares.En 1996, se publicó el documento RFC 1945, en que se <strong>de</strong>fine la versiónANOTACIONES301


ª FUOC • XP04/90786/00020Software libreHTTP/1.0 (este documento también contiene las especificaciones <strong>de</strong> la<strong>de</strong>nominada versión 0.9 para facilitar la interoperabilidad con implementacionesantiguas). Sin embargo, el año siguiente ya se publicó la especificaciónHTTP/1.1 en el documento RFC 2068.A continuación, veremos las características principales <strong>de</strong> la funcionalidadque ofrece el HTTP. Sin embargo, antes <strong>de</strong> entrar en los <strong>de</strong>talles<strong>de</strong>l protocolo, estudiaremos el método general utilizado en el servicioWWW para i<strong>de</strong>ntificar la información a la que se quiere acce<strong>de</strong>r.21.3.1. Direccionamiento: i<strong>de</strong>ntificadores uniformes<strong>de</strong> recurso (URI)NotaLa <strong>de</strong>finición <strong>de</strong> URI constituyeotro ejemplo <strong>de</strong> especificaciónen constante evolución,al menos hasta que se publicóel documento RFC2396, en 1998.Des<strong>de</strong> un documento se pue<strong>de</strong>n referenciar recursos especificandosus direcciones, que se representan por medio <strong>de</strong> lo que en la terminologíaWWW se <strong>de</strong>nomina i<strong>de</strong>ntificador uniforme <strong>de</strong> recurso o URI.La forma general <strong>de</strong> un URI se pue<strong>de</strong> expresar <strong>de</strong>l modo siguiente:esquema: i<strong>de</strong>ntificadorÉsta es la forma correspondiente a un URI absoluto. La palabra quese encuentra antes <strong>de</strong>l separador “:” es el esquema, que <strong>de</strong>terminala sintaxis <strong>de</strong>l i<strong>de</strong>ntificador. Esta sintaxis también pue<strong>de</strong> permitir laespecificación <strong>de</strong> URI relativos, en que se omite el esquema y el separador“:”.Un URI pue<strong>de</strong> ser un localizador (URL), si especifica cómo se acce<strong>de</strong>al recurso, y/o un nombre (URN) si i<strong>de</strong>ntifica el recurso por medio<strong>de</strong> un conjunto <strong>de</strong> atributos:ANOTACIONESftp://[usuario[:contraseña]@]servidor/caminoSegún el esquema, éstas son algunas sintaxis posibles <strong>de</strong> los URL:a) ftpEste tipo <strong>de</strong> URL i<strong>de</strong>ntifica un recurso accesible por medio <strong>de</strong>lprotocolo FTP: servidor es el nombre <strong>de</strong>l or<strong>de</strong>nador servidor302


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020y camino es el nombre completo <strong>de</strong> un fichero o directorio. Si elnombre <strong>de</strong> usuario no se encuentra presente, significa que es precisoutilizar anonymous y, como contraseña, cualquier ca<strong>de</strong>na <strong>de</strong>caracteres.b) newsEste URL i<strong>de</strong>ntifica un conjunto <strong>de</strong> artículos si i<strong>de</strong>ntificador es elnombre <strong>de</strong> un grupo <strong>de</strong> noticias Usenet, en el caso <strong>de</strong> que sólo seaun i<strong>de</strong>ntificador <strong>de</strong> mensaje (campo Message-ID), entonces sóloi<strong>de</strong>ntificará un <strong>de</strong>terminado artículo:news: i<strong>de</strong>ntificadorc) mailtoEste i<strong>de</strong>ntificador URL representa una dirección <strong>de</strong> correo electrónico:mailto: direcciónd) telnetEste URL representa un servicio accesible por medio <strong>de</strong>l protocolo Telneten el servidor y el puerto especificados:telnet://[usuario[:contraseña]@]servidor[:puerto][/]e) httpCuando <strong>de</strong>ba acce<strong>de</strong>rse al recurso i<strong>de</strong>ntificado por medio <strong>de</strong>l HTTP,se utilizará un URL <strong>de</strong> acuerdo con la sintaxis siguiente:URL-HTTP = URL-HTTP-absoluto | URL-HTTP-relativoURL-HTTP-absoluto = http://servidor[:puerto][camino-absoluto]URL-HTTP-relativo = camino-absoluto | camino-relativocamino-absoluto = /camino-relativocamino-relativo = [camino] *(;parámetro)[? consulta][# fragmento]camino = segmento *(/segmento)ANOTACIONES303


ª FUOC • XP04/90786/00020Software libreEn esta sintaxis, servidor es el nombre <strong>de</strong>l or<strong>de</strong>nador con quees preciso establecer la conexión HTTP para acce<strong>de</strong>r al recurso, ypuerto es el número <strong>de</strong> puerto en que <strong>de</strong>be efectuarse la conexiónque, por <strong>de</strong>fecto, es el número asignado al servicio WWW,es <strong>de</strong>cir, el 80.Notasegmento, parámetro,consulta o fragmentopue<strong>de</strong>n ser una ca<strong>de</strong>navacía.Cada uno <strong>de</strong> los segmentos que forman el camino se asocia, pornorma general, a un nombre <strong>de</strong> directorio o <strong>de</strong> fichero. Estos nombresno pue<strong>de</strong>n incluir los caracteres “/”, “ ;”, “?”, “\”, “#”, “"”, “ ” o espacio. El carácter “/” sí que pue<strong>de</strong> estar presente en un parámetro,y tanto “/” como “;” y “?” también pue<strong>de</strong>n estar presentesen los componentes consulta y fragmento.Si en el camino aparece el carácter “%”, <strong>de</strong>be ir seguido <strong>de</strong> dos dígitoshexa<strong>de</strong>cimales, y esta secuencia <strong>de</strong> tres caracteres equivale alcarácter que tenga el código indicado por los dígitos. Por tanto, sepue<strong>de</strong> utilizar una secuencia “%HH” para representar cualquiera <strong>de</strong>los caracteres no permitidos en un URL, incluyendo el mismo carácter“%” (que se representaría con “%25”).NotaA continuación, presentamos diferentes ejemplos <strong>de</strong> URLcon esquemas diferentes (lo dos últimos son URL HTTPrelativos):ANOTACIONESftp://ftp.uoc.es/pub/doc/READMEnews:comp.infosystems.www.miscmailto:Ernest.Udiant@campus.uoc.eduhttp://www.uoc.es/http://www.acme.com/%7Eadmin/http://www.acme.com/buscador/busca.cgi?nom=Internethttp://www.acme.com/doc/ayuda.html#buscador/doc/ayuda.html#buscadorayuda.html#buscadorLos URL relativos se pue<strong>de</strong>n utilizar en documentos HTML, en concretoen los atributos que representan direcciones <strong>de</strong> otros recursos(HREF, SRC, ACTION). Estos URL se consi<strong>de</strong>ran relativos a una <strong>de</strong>terminadadirección base, que es la indicada por el elemento BASE <strong>de</strong>ldocumento o, si este elemento no se encuentra presente, la direcciónque se ha utilizado para acce<strong>de</strong>r al mismo documento HTML.304


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Para obtener el correspondiente URL absoluto, es preciso aplicar lasreglas siguientes:1) Si el URL relativo contiene un camino absoluto, sustituye al camino<strong>de</strong> la dirección base.2) Si el URL relativo contiene un camino relativo (y el camino no está vacío),se sustituye el último segmento <strong>de</strong> la dirección base (la parte <strong>de</strong>lcamino que se encuentre <strong>de</strong>spués <strong>de</strong>l último “/”) por éste. Comocaso especial, cada segmento con nombre “..” que se encuentre enel inicio <strong>de</strong>l camino relativo <strong>de</strong>be suprimirse junto con el último segmentoque que<strong>de</strong> al final <strong>de</strong>l camino <strong>de</strong> la dirección base.3) Si el camino <strong>de</strong>l URL relativo está vacío, pero hay alguno <strong>de</strong> losotros componentes (parámetros, consulta, fragmento), se toma elcamino <strong>de</strong> la dirección base y se sustituyen los componentes correspondientespor los <strong>de</strong>l mismo.NotaInterpretación <strong>de</strong>l URL relativoNotaSi el URL relativo está completamentevacío, se tomadirectamente toda la direcciónbase, incluyendo elfragmento, si hay (en losotros casos, el fragmento <strong>de</strong>la dirección base no se consi<strong>de</strong>ra).Dada la dirección base http://www.uoc.edu/extern/ct/home/home.html, los URL relativos siguientes <strong>de</strong>beríaninterpretarse <strong>de</strong> este modo:Tabla 16.URL relativo/accesset98/otras/pagina.html../../logo.jpegURL absolutohttp://www.uoc.edu/accesset98/http://www.uoc.edu/extern/ct/home/otras/pagina.htmlhttp://www.uoc.edu/extern/logo.jpeg#finalhttp://www.uoc.edu/extern/ct/home/home.html#final21.3.2. Conceptos básicos <strong>de</strong>l HTTPEl HTTP sigue el mo<strong>de</strong>lo general <strong>de</strong> peticiones y respuestas entre uncliente y un servidor. Se basa en un servicio <strong>de</strong> transporte fiable; pero,es in<strong>de</strong>pendiente <strong>de</strong>l mecanismo <strong>de</strong> transporte concreto utilizado. Noobstante, lo más habitual es que cliente y servidor se comuniquen porANOTACIONES305


ª FUOC • XP04/90786/00020Software libremedio <strong>de</strong>l TCP. En este caso, el puerto por <strong>de</strong>fecto para establecer lasconexiones es el asignado oficialmente al servicio WWW, es <strong>de</strong>cir, el 80.En el HTTP/1.0, el cliente establece una conexión con el servidor y leenvía un mensaje HTTP con la petición; y, a continuación, el servidorenvía al cliente otro mensaje HTTP con la respuesta y cierra la conexión.Si quiere efectuar más peticiones, el cliente <strong>de</strong>be estableceruna nueva conexión para cada una. En el HTTP/1.1, en cambio, esposible intercambiar diferentes peticiones y respuestas en una mismaconexión que se <strong>de</strong>nomina conexión persistente. Éste es el modo <strong>de</strong>funcionamiento por <strong>de</strong>fecto en el HTTP/1.1.Un mensaje HTTP consta <strong>de</strong> una primera línea, en la que hay informaciónespecífica <strong>de</strong>l protocolo, seguida <strong>de</strong> un mensaje con el mismoformato que los mensajes <strong>de</strong> correo electrónico, según laespecificación RFC 822. Es <strong>de</strong>cir, <strong>de</strong>spués <strong>de</strong> la primera línea <strong>de</strong>behaber una cabecera formada por una serie <strong>de</strong> campos, una línea enblanco y un cuerpo. En casos particulares, la cabecera y/o el cuerpopue<strong>de</strong>n estar vacíos, pero la línea en blanco que los separa siempre<strong>de</strong>be estar presente.El cuerpo <strong>de</strong>l mensaje, junto con los campos <strong>de</strong> la cabecera que proporcionaninformación sobre su contenido, forman lo que en el HTTPse <strong>de</strong>nomina una entidad. Cada entidad correspon<strong>de</strong> a un recurso.Dependiendo <strong>de</strong> si el mensaje HTTP es una petición o una respuesta,la primera línea recibe el nombre <strong>de</strong> línea <strong>de</strong> petición o línea <strong>de</strong> estatus,respectivamente.La sintaxis <strong>de</strong> una línea <strong>de</strong> petición es la siguiente:ANOTACIONESmétodo URI versión En esta línea, método especifica qué tipo <strong>de</strong> operación (o, en la terminologíaHTTP, qué método) solicita el cliente, URI i<strong>de</strong>ntifica el recursoa que se <strong>de</strong>be aplicar la operación y versión <strong>de</strong>be ser laca<strong>de</strong>na HTTP/1.0 o HTTP/1.1, según la versión <strong>de</strong>l protocolo. ElURI <strong>de</strong>be ser un URL HTTP relativo que contenga un camino absoluto;es <strong>de</strong>cir, que empiece por “/” (excepto cuando el servidor sea unproxy, como veremos más a<strong>de</strong>lante).306


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020NotaSiempre que un usuario quiera utilizar un clientepara obtener el recurso dado por la direcciónhttp://www.acme.com:8000/doc/principal.html,el cliente <strong>de</strong>be conectarse al puerto 8000 <strong>de</strong>l servidorwww.acme.com y enviarle una petición que empiececon esta línea:GET /doc/principal.html HTTP/1.0En este caso, el método utilizado es GET (obtener recurso).Ahora bien, si la dirección fuera http://www.acme.com:8000/, la línea que <strong>de</strong>bería enviarsesería simplemente la siguiente:GET / HTTP/1.0La sintaxis <strong>de</strong> las líneas <strong>de</strong> estatus es la siguiente:versión código frase La ca<strong>de</strong>na versión es igual que en la línea <strong>de</strong> petición, el códigoes un número <strong>de</strong> tres dígitos, el primero <strong>de</strong> los cuales indica <strong>de</strong> quétipo <strong>de</strong> respuesta se trata, y frase es un texto explicativo en formatolibre, inteligible para los usuarios humanos.Los posibles códigos <strong>de</strong> una respuesta HTTP/1.0 son los siguientes:Tabla 17.NotaCódigoSignificado200 Operación efectuada.201 Se ha creado un nuevo recurso.202 Petición aceptada.204 La respuesta está vacía.301 El recurso solicitado ha cambiado <strong>de</strong> dirección.302 El recurso solicitado ha cambiado temporalmente <strong>de</strong> dirección.304 El contenido <strong>de</strong>l recurso no ha cambiado.400 Petición incorrecta.401 Usuario no autorizado.En el HTTP, el significado<strong>de</strong>l primer dígito <strong>de</strong>l código<strong>de</strong> respuesta varía un poco<strong>de</strong> lo que se consi<strong>de</strong>ra común(que encontraréis en elanexo 4) y es el siguiente:• 1: Información.• 2: Éxito.• 3: Redireccionamiento.• 4: Error en el cliente.• 5: Error en el servidor.ANOTACIONES307


ª FUOC • XP04/90786/00020Software libreCódigoSignificado403 Acceso prohibido.404 No se ha encontrado el recurso.500 Error interno <strong>de</strong>l servidor.501 Operación no implementada.502 Error en otro servidor.503 Servicio no disponible en la actualidad.NotaEn el HTTP/1.1 se han añadido a esta lista hasta 22nuevos códigos <strong>de</strong> respuesta. No obstante, si un clienterecibe un código xyz que no conoce, <strong>de</strong>be interpretarlocomo si fuera x00. En este sentido, el código 100significa ‘continuar’ y el código 300 quiere <strong>de</strong>cir ‘recursoaccesible en una dirección o más’.Almacenamiento local <strong>de</strong> respuestas (memoria caché)Para optimizar el tráfico <strong>de</strong> la red, es habitual que los clientes HTTPguar<strong>de</strong>n una copia <strong>de</strong> las respuestas que reciben <strong>de</strong> los servidores, juntocon el URL que han utilizado en la petición. El almacén <strong>de</strong>stinado a estefin recibe el nombre <strong>de</strong> memoria caché. Si el usuario quiere volver a acce<strong>de</strong>ra un recurso que ya había solicitado previamente, el cliente pue<strong>de</strong>utilizar la copia <strong>de</strong> la memoria caché en lugar <strong>de</strong> volver a enviar la mismapetición al servidor.ANOTACIONESNotaConsultad los servidores intermediariosen el apartado21.3.4 <strong>de</strong> esta unidad.El cliente pue<strong>de</strong> <strong>de</strong>cidir, o el usuario pue<strong>de</strong> configurar, el tiempo quese guardarán los elementos <strong>de</strong> la memoria caché, su dimensiónmáxima o la política que <strong>de</strong>berá seguirse para borrar sus elementoscuando esté llena. Asimismo, el HTTP también proporciona directricespara <strong>de</strong>terminar qué recursos se pue<strong>de</strong>n guardar en la memoriacaché y cuáles no, o cuánto tiempo se pue<strong>de</strong> guardar como máximoun <strong>de</strong>terminado recurso.Sin embargo, no sólo los clientes pue<strong>de</strong>n guardar copias <strong>de</strong> las respuestasobtenidas <strong>de</strong> los servidores; también pue<strong>de</strong>n hacerlo los servidoresintermediarios o proxies.308


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Cabeceras <strong>de</strong> los mensajes HTTPLos campos que pue<strong>de</strong> haber en la cabecera <strong>de</strong> un mensaje HTTP sepue<strong>de</strong>n clasificar en cuatro grupos:1) Campos generales que pue<strong>de</strong>n estar presentes tanto en los mensajes<strong>de</strong> petición, como en los <strong>de</strong> respuesta.2) Campos referentes a la entidad contenida en el cuerpo <strong>de</strong>l mensajey que también pue<strong>de</strong>n estar presentes en peticiones y respuestas.3) Campos propios <strong>de</strong> las peticiones.4) Campos propios <strong>de</strong> las respuestas.El HTTP proporciona un mecanismo <strong>de</strong> extensión que permite incluircampos no estándar en las cabeceras. Si una implementación no reconoceun <strong>de</strong>terminado campo, lo que <strong>de</strong>be hacer es simplementeignorarlo (o retransmitirlo tal como lo encuentra si es un servidor intermediario).Los campos que pue<strong>de</strong> contener la cabecera son los siguientes:1) Campos generales <strong>de</strong>finidos en HTTP/1.0:a) Date: fecha. Indica la fecha y la hora en que se originó el mensaje.Los valores <strong>de</strong> los campos HTTP que representan fechas se<strong>de</strong>ben expresar <strong>de</strong> una <strong>de</strong> estas tres maneras, siempre referidasal tiempo universal (TU, anteriormente conocido como hora <strong>de</strong>lmeridiano <strong>de</strong> Greenwich o GMT):Fri, 06 Dec 2002 09:22:15 GMT (RFC 1123, forma recomendada)Friday, 06-Dec-2002 09:22:15 GMT (RFC 850)Fri Dec 6 09:22:15 2002 (formato ANSI C)b) Pragma: 1#directriz. Este campo sirve para proporcionaruna lista <strong>de</strong> directrices a los sistemas que intervienen en la transferencia(clientes o servidores). La semántica <strong>de</strong> las directrices<strong>de</strong>pen<strong>de</strong> <strong>de</strong> las implementaciones; sin embargo, hay una <strong>de</strong>finidapor el protocolo, que se representa con la palabra no-cache.Si un mensaje <strong>de</strong> petición contiene esta directriz, significaANOTACIONES309


ª FUOC • XP04/90786/00020Software libreque <strong>de</strong>be enviarse la petición al servidor correspondiente aunqueexista una copia <strong>de</strong> la respuesta guardada en la memoriacaché.NotaLa especificación HTTP/1.1 aña<strong>de</strong> cinco nuevos camposgenerales:• Cache-Control: directrices sobre la política <strong>de</strong>memoria caché.• Connection: opciones <strong>de</strong> conexión. La opciónclose indica que el emisor cerrará la conexión<strong>de</strong>spués <strong>de</strong> que se haya enviado la respuesta.• Transfer-Encoding: codificación aplicada alcuerpo <strong>de</strong>l mensaje.• Upgra<strong>de</strong>: versiones <strong>de</strong>l protocolo soportadas.• Via: intermediarios por los que ha pasado el mensaje.2) Campos referentes a la entidad <strong>de</strong>finidos en el HTTP/1.0:ANOTACIONESNotaConsultad los nuevos campos<strong>de</strong> cabeceras en elsubapartado 19.5.1.a) Content-Length: 1*dígito. Indica la longitud en bytes <strong>de</strong>lcuerpo <strong>de</strong> la entidad. Si este campo no está presente en una respuesta,el cliente sólo pue<strong>de</strong> saber cuál es el final <strong>de</strong>l cuerpocuando el servidor cierra la conexión. En un mensaje <strong>de</strong> peticiónque incluya un cuerpo, el campo Content-Length es obligatorio,puesto que <strong>de</strong> otro modo el servidor no podría enviar la respuestay no se podría cerrar la conexión.b) Content-Type: tipo. Indica el tipo <strong>de</strong> contenido <strong>de</strong>l cuerpo <strong>de</strong>la entidad (por ejemplo, text/html si es un documento HTML).El valor <strong>de</strong> este campo se representa según la especificación MIMEy, por tanto, pue<strong>de</strong> incluir parámetros (por ejemplo, charset=ISO-8859-1si los caracteres están codificados según el alfabetolatín1). Todos los mensajes HTTP con cuerpo <strong>de</strong>beríanincluir el campo Content-Type.310


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020c) Content-Encoding: codificación. Indica si se ha aplicadoalguna transformación al contenido <strong>de</strong> la entidad (por ejemplo:x-gzip). El valor <strong>de</strong> este campo se representa según la especificaciónMIME.d) Last-Modified: fecha. Indica la fecha y la hora en que el recursocontenido en el cuerpo se modificó por última vez.e) Expires: fecha. Indica la fecha y la hora a partir <strong>de</strong> la cualel contenido <strong>de</strong>l cuerpo se pue<strong>de</strong> consi<strong>de</strong>rar obsoleto o caducadoal efecto <strong>de</strong> su almacenamiento en la memoria caché. Lapresencia <strong>de</strong> este campo significa que, posiblemente, el recursose modificará en la fecha indicada o <strong>de</strong>jará <strong>de</strong> existir; sinembargo, no implica que los cambios, si se producen, <strong>de</strong>banefectuarse necesariamente en esta fecha. Ahora bien, si la fecha<strong>de</strong> caducidad es igual o anterior a la especificada en elcampo Date, la entidad no <strong>de</strong>be almacenarse en la memoriacaché.f) Allow: 1#método. Indica los métodos HTTP que se pue<strong>de</strong>naplicar al recurso solicitado.NotaLa especificación HTTP/1.1 aña<strong>de</strong> seis nuevos campos<strong>de</strong> entidad adicionales:• Content-Base: dirección base para interpretarURL relativos.• Content-Language: lenguaje que se ha utilizado.• Content-Location: URI <strong>de</strong> la entidad, en caso<strong>de</strong> que el recurso correspondiente disponga <strong>de</strong>más <strong>de</strong> una.• Content-MD5: secuencia <strong>de</strong> bits para comprobarla integridad <strong>de</strong>l contenido.• Content-Range: por si una entidad se envía endiferentes fragmentos.• ETag: etiqueta asociada a la entidad, por si el recursodispone <strong>de</strong> más <strong>de</strong> una.ANOTACIONES311


ª FUOC • XP04/90786/00020Software libre3) Campos propios <strong>de</strong> las peticiones HTTP/1.0:a) From: dirección . Este campo contiene la dirección <strong>de</strong> correoelectrónico <strong>de</strong>l usuario que solicita el recurso.EjemploEjemplos <strong>de</strong> listas <strong>de</strong> productos:• Lynx/2.8rel.2libwww-FM/2.14.• NCSA_Mosaic/2.6(X11;SunOS 4.1.4sun4m) libwww/2.12.• Harvest/1.5.17.b) User-Agent: 1*implementación. Este campo permitei<strong>de</strong>ntificar la implementación <strong>de</strong>l cliente. Se expresa como unalista <strong>de</strong> “productos” (por ejemplo, tipo <strong>de</strong> navegador, librerías<strong>de</strong> soporte que utiliza, etc.) con números <strong>de</strong> versión opcionales(separados <strong>de</strong> los nombres con “/”), que pue<strong>de</strong> incluir comentariosentre paréntesis. El servidor pue<strong>de</strong> utilizar esta informaciónpara generar estadísticas, <strong>de</strong>tectar qué implementacionesproducen ciertos errores, adaptar las respuestas al tipo <strong>de</strong>cliente, etc.c) Referer: URI. Si el usuario selecciona un enlace <strong>de</strong> un documentoHTML o <strong>de</strong> otro recurso que tiene dirección propia, elcliente pue<strong>de</strong> incluirla en el campo Referer <strong>de</strong>l mensaje <strong>de</strong>petición. El servidor pue<strong>de</strong> utilizar esta información para generarestadísticas, <strong>de</strong>tectar <strong>de</strong>s<strong>de</strong> qué recurso se referencia unadirección incorrecta u obsoleta, etc.d) If-Modified-Since: fecha. Cuando el cliente ya dispone<strong>de</strong> una copia <strong>de</strong>l recurso solicitado en la memoria caché, pue<strong>de</strong>utilizar este campo para llevar a cabo una operación GETcondicional: si el recurso se ha modificado con posterioridad ala fecha indicada, se efectuará la operación <strong>de</strong> manera normaly, si no, el servidor enviará una respuesta sin cuerpo y con elcódigo 304. Este campo sólo es aplicable al método GET.ANOTACIONESNotaConsultad la codificaciónen Base64 en el apartado19.5.1.e) Authorization: esquema#parámetro. Con este campo,un usuario pue<strong>de</strong> presentar sus cre<strong>de</strong>nciales a un servidor (pornorma general, un nombre y una contraseña) para que le permitaacce<strong>de</strong>r a recursos no públicos, es <strong>de</strong>cir, <strong>de</strong> acceso restringido.La primera parte <strong>de</strong> la cre<strong>de</strong>ncial indica el esquema<strong>de</strong> autenticación a utilizar. El HTTP/1.0 sólo <strong>de</strong>fine un esquema<strong>de</strong>nominado básico, pero se pue<strong>de</strong> utilizar cualquiera mientrassea conocido por el cliente y el servidor. Si se utiliza el esquemabásico, el valor <strong>de</strong> este campo <strong>de</strong>be ser la palabra Basic seguida<strong>de</strong> la ca<strong>de</strong>na <strong>de</strong> caracteres que resulta <strong>de</strong> codificar enBase64 el nombre <strong>de</strong> usuario y su contraseña separados por “ :”.312


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020EjemploSi el nombre <strong>de</strong> usuario es webmaster y su contraseñaes Secret, se codificará en Base64 la ca<strong>de</strong>nawebmaster:Secret. El campo quedaría <strong>de</strong> estemodo:Authorization:Basic d2VibWFzdGVyOlNlY3JldA==Obviamente, la <strong>de</strong>scodificación <strong>de</strong> este campo es trivialy, por tanto, no hay protección contra terceros que tenganla posibilidad <strong>de</strong> inspeccionar los mensajes y <strong>de</strong>seenobtener un acceso no autorizado. Para conseguirque el método <strong>de</strong> autenticación sea más seguro, sepue<strong>de</strong> utilizar un esquema más sofisticado o algunavariante <strong>de</strong>l protocolo basada en el cifrado <strong>de</strong> los datos,por ejemplo el HTTPS.La respuesta a una petición que incluya el campo Authorizationno <strong>de</strong>bería guardarse en la memoria caché.NotaEn la especificación HTTP/1.1 se aña<strong>de</strong>n los campos<strong>de</strong> petición siguientes:• Accept: tipo <strong>de</strong> contenido que el cliente pue<strong>de</strong>aceptar.• Accept-Charset.• Accept-Encoding.• Accept-Language.• Host: nombre <strong>de</strong>l servidor a quien va dirigida lapetición, por si tiene más <strong>de</strong> uno; este campo,obligatorio en las peticiones HTTP/1.1, permiteque un or<strong>de</strong>nador con diferentes nombres actúecomo si fuera diferentes servidores al mismotiempo.ANOTACIONES313


ª FUOC • XP04/90786/00020Software libre• If-Match: permite comparar entida<strong>de</strong>s por susetiquetas.• If-None-Match.• If-Range.• If-Unmodified-Since.• Max-Forwards.• Proxy-Authorization.• Range: sirve para solicitar un fragmento <strong>de</strong> unaentidad.4) Campos propios <strong>de</strong> las respuestas HTTP/1.0:a) Server: 1*implementación. Este campo es similar a User-Agent, pero referido al servidor.b) Location: URI. Indica que el recurso solicitado <strong>de</strong>be obtenerseen otra dirección. Éste será el caso cuando el código <strong>de</strong> respuestasea 301 ó 302. Por norma general, cuando el cliente reciba unarespuesta que incluya este campo, generará <strong>de</strong> manera automáticauna nueva petición con la dirección indicada.c) WWW-Authenticate: 1#(esquema realm = "reino" *( ,parámetro )). Este campo es obligatorio cuando el código <strong>de</strong>las respuestas es 401. Indica que es necesario presentar una cre<strong>de</strong>ncialpara acce<strong>de</strong>r al recurso solicitado, o que la que se ha presentadono es válida.ANOTACIONESUn servidor pue<strong>de</strong> agrupar sus recursos <strong>de</strong> acceso restringido enreinos, cada uno con su esquema <strong>de</strong> autenticación y conjunto <strong>de</strong>usuarios autorizados (con una misma cre<strong>de</strong>ncial <strong>de</strong>bería po<strong>de</strong>rseacce<strong>de</strong>r a todos los recursos <strong>de</strong> un reino). El valor <strong>de</strong> este campoes una lista con los nombres <strong>de</strong> los reinos aplicables al recurso solicitado,junto con sus esquemas y parámetros opcionales para po<strong>de</strong>rllevar a cabo la autenticación con el campo Authorization <strong>de</strong> lapetición.314


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020NotaEn la especificación HTTP/1.1 se aña<strong>de</strong>n los campos<strong>de</strong> respuesta siguientes:• Age.• Proxy-Authenticate.• Public: lista <strong>de</strong> métodos soportados por el servidor.• Retry-After.• Vary: lista <strong>de</strong> campos <strong>de</strong> la petición que se hanutilizado para seleccionar una entidad, cuando elrecurso dispone <strong>de</strong> más <strong>de</strong> una.• Warning: información adicional sobre el estatus<strong>de</strong> la respuesta.21.3.3. Métodos <strong>de</strong>l servicio HTTPEl protocolo HTTP/1.0 <strong>de</strong>fine los tres métodos siguientes:1) Método GET. Este método sirve para obtener la entidad correspondienteal URI especificado en la línea <strong>de</strong> petición. Por normageneral, el servidor traducirá el camino <strong>de</strong>l URI a un nombre <strong>de</strong>fichero o <strong>de</strong> programa:• En el primer caso, el cuerpo <strong>de</strong> la entidad será el contenido <strong>de</strong>lfichero.• En el segundo caso, el servidor ejecutará el programa y la entidadserá el resultado que genere.Los componentes parámetro y/o consulta <strong>de</strong>l URI se pue<strong>de</strong>nutilizar como argumentos <strong>de</strong>l programa.2) Método HEAD. Este método es igual que el GET, excepto que enla respuesta el cuerpo estará vacío y, por tanto, sólo tendrá cabecera(que <strong>de</strong>berá ser idéntica a la que se habría enviado si el métodofuera el GET). Por norma general, se utiliza el método HEAD,NotaCuando el camino <strong>de</strong> un URIi<strong>de</strong>ntifica un programa, lamanera como se le pasanlos valores <strong>de</strong> los parámetroso las consultas es unasunto local <strong>de</strong>l servidor. Porejemplo, un mecanismo utilizadohabitualmente es el<strong>de</strong>nominado CGI (CommonGateway Interface).ANOTACIONES315


ª FUOC • XP04/90786/00020Software librepor ejemplo, para comprobar si un URL es válido o para obtenerinformación sobre un recurso sin necesidad <strong>de</strong> transferir su contenido.3) Método POST. Este método sirve para enviar una entidad queel servidor <strong>de</strong>be incorporar al recurso i<strong>de</strong>ntificado por el URI<strong>de</strong> la línea <strong>de</strong> petición. La semántica <strong>de</strong> este método <strong>de</strong>pen<strong>de</strong><strong>de</strong>l tipo <strong>de</strong> recurso <strong>de</strong> que se trate. Por ejemplo, se pue<strong>de</strong> utilizarpara añadir contenido a un recurso existente, para enviarun mensaje a un tablón <strong>de</strong> anuncios o un grupo <strong>de</strong> noticias,para crear un nuevo registro en una base <strong>de</strong> datos, para pasardatos a un programa que <strong>de</strong>be ejecutarse en el servidor, etc.Un caso típico <strong>de</strong> este último ejemplo son los datos <strong>de</strong> un formularioHTML.El código <strong>de</strong> respuesta a una operación POST por norma generalserá 201, si como resultado, se ha creado un nuevo recurso (en estecaso, el cuerpo <strong>de</strong> la respuesta <strong>de</strong>bería contener una referencia aeste recurso), o bien 200 ó 204 si no se ha creado ninguno (el cuerpo<strong>de</strong> una respuesta 200 contendrá una <strong>de</strong>scripción <strong>de</strong>l resultadoobtenido, y el <strong>de</strong> una respuesta 204 simplemente estará vacío).Una propiedad <strong>de</strong>l método POST es que, si se envían dos peticionesiguales, el resultado <strong>de</strong> la segunda no <strong>de</strong>be ser necesariamente elmismo que el <strong>de</strong> la primera. Por tanto, la respuesta a una operaciónPOST no <strong>de</strong>bería guardarse en la memoria caché.NotaEn el HTTP/1.1 se han añadido una serie <strong>de</strong> métodosnuevos, entre lo cuales, los siguientes:ANOTACIONES• PUT: para crear un recurso con el URI especificadoen la petición.• DELETE: para borrar un recurso.• OPTIONS: para obtener información sobre las opciones<strong>de</strong> transferencia.• TRACE: para obtener una copia <strong>de</strong>l mensaje comoha llegado a su <strong>de</strong>stino final.316


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020ActividadEstableced una conexión con un servidor HTTP con telnetservidor 80 y averiguad la fecha en que ha sidomodificada por última vez la página principal, o algunaotra información referida al servidor (con un mensajeformado por la línea HEAD / HTTP/1.0, unacabecera vacía, una línea en blanco y un cuerpo vacío).21.3.4. Intermediarios: proxies y pasarelasEl mo<strong>de</strong>lo general <strong>de</strong>l HTTP no sólo consi<strong>de</strong>ra la conexión directa<strong>de</strong> un cliente con el servidor, sino también la conexión por medio<strong>de</strong> servidores intermediarios, como es el caso <strong>de</strong> los proxies:Figura 88.En la configuración con proxy, el cliente establece la conexión conel servidor proxy que, a su vez, establece otra conexión, comocliente, con el servidor final. Cuando el proxy recibe el mensaje <strong>de</strong>petición <strong>de</strong>l cliente, pue<strong>de</strong> generar una respuesta propia o retransmitirlaal servidor final. En el segundo caso, el proxy pue<strong>de</strong> introducirmodificaciones en la petición, según la aplicación para laque esté diseñado, y, cuando reciba la respuesta <strong>de</strong>l servidor final,la retransmitirá al cliente, también con la posibilidad <strong>de</strong> efectuarcambios.Asimismo, es posible que haya más <strong>de</strong> un proxy en la ca<strong>de</strong>na; es <strong>de</strong>cir,que el primer proxy no se conecte directamente al servidor final,sino por medio <strong>de</strong> otro proxy, y así sucesivamente.ANOTACIONES317


ª FUOC • XP04/90786/00020Software libreEn las peticiones que un cliente (u otro proxy) envía a un proxy, existeuna variación respecto al caso <strong>de</strong> la conexión directa <strong>de</strong> cliente a servidor:el URI <strong>de</strong> la línea <strong>de</strong> petición no <strong>de</strong>be ser un URL HTTP relativo,sino que <strong>de</strong>be ser un URI absoluto. De lo contrario, el proxy no sabríacuál es el servidor final al que va <strong>de</strong>stinada la petición.El uso <strong>de</strong> un servidor proxy tiene diferentes aplicaciones. Las principalesson las siguientes:a) Actuar como cortafuegos que aísle una red local <strong>de</strong>l resto <strong>de</strong> lasre<strong>de</strong>s. En esta configuración, los clientes no tienen acceso directoal exterior <strong>de</strong> su red, y toda comunicación con los servidores remotostiene lugar por medio <strong>de</strong>l proxy. Ello permite minimizar elriesgo <strong>de</strong> que usuarios externos comprometan la seguridad <strong>de</strong> lossistemas locales (accesos no autorizados, sabotajes, etc.).b) Tener una memoria caché compartida entre los usuarios <strong>de</strong> la redlocal. Si diferentes clientes solicitan directamente un mismo recurso,por norma general guardarán la misma copia <strong>de</strong> la respuesta en susrespectivas memorias caché. Si lo solicitan por medio <strong>de</strong> un proxy, laprimera petición necesitará un acceso al servidor remoto; sin embargo,las siguientes quizá puedan aprovechar la copia ya guardada enla memoria caché, aunque provengan <strong>de</strong> clientes diferentes.c) Construir una jerarquía <strong>de</strong> memorias caché <strong>de</strong> proxies: en el nivelmás bajo se encuentran los proxies a que acce<strong>de</strong>n directamentelos clientes, en un segundo nivel existen los proxies a que acce<strong>de</strong>nlos <strong>de</strong>l primer nivel, etc. Incluso pue<strong>de</strong> haber proxies a escala <strong>de</strong>todo un país. Hay un protocolo <strong>de</strong>nominado ICP (Internet cacheprotocol) que permite coordinar los diferentes servidores proxy <strong>de</strong>una jerarquía.ANOTACIONESNotaA<strong>de</strong>más <strong>de</strong> los proxies, existe otro tipo <strong>de</strong> servidor intermediariollamado pasarela. Las pasarelas actúan comosi fueran el servidor final, con la diferencia respecto alproxy <strong>de</strong> que el cliente no sabe que no se conecta directamenteal servidor final. Una pasarela se pue<strong>de</strong> utilizarcomo cortafuegos en la red <strong>de</strong>l servidor o para traducirlas peticiones HTTP <strong>de</strong> manera que se pueda acce<strong>de</strong>r arecursos almacenados en sistemas no HTTP.318


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002022. Mensajería instantáneaNo cabe duda <strong>de</strong> que Internet ha cambiado la manera <strong>de</strong> comunicarnos.Para muchos <strong>de</strong> nosotros, el correo electrónico ha reemplazadocasi por completo al correo tradicional y ha hecho disminuir <strong>de</strong>forma consi<strong>de</strong>rable las llamadas telefónicas que realizamos. Diariamentese envían millones <strong>de</strong> correos electrónicos.A pesar <strong>de</strong> lo rápido que es el sistema <strong>de</strong> correo, aún no lo es bastante.En algunos servidores, se pue<strong>de</strong>n acumular retardos <strong>de</strong> algunosminutos. A<strong>de</strong>más, por rápido que sea, se trata <strong>de</strong> un sistema asíncrono,que no permite mantener una conversación fluida. Cada mensajeenviado o recibido implica una serie <strong>de</strong> pasos a seguir, botones a pulsary ventanas a abrir. Por todo ello, se han popularizado los sistemas<strong>de</strong> mensajería instantánea, un clásico <strong>de</strong>l mo<strong>de</strong>lo peer-to-peer.Las aplicaciones <strong>de</strong> mensajería instantánea permiten mantener unalista <strong>de</strong> personas (las buddy lists o listas <strong>de</strong> contactos) con las que uno<strong>de</strong>sea mantenerse en contacto y mandarles mensajes, siempre ycuando estén concetados. Este <strong>de</strong>talle no nos <strong>de</strong>be preocupar, porquees la propia aplicación la que se encarga <strong>de</strong> verificarlo.La manera <strong>de</strong> mandar mensajes es muy simple. La aplicación nospresenta una ventana en la que tecleamos el contenido <strong>de</strong>l mensajey don<strong>de</strong> se verá lo que nos conteste el interlocutor. De esta manera,se pue<strong>de</strong> mantener una conversación en tiempo real.A<strong>de</strong>más <strong>de</strong> la conversación básica, la mayoría <strong>de</strong> programas <strong>de</strong> mensajeríainstantánea ofrecen otras prestaciones, como las siguientes:• Chat que permite establecer conversaciones en grupo.• Pizarra que permite ver dibujos realizados por el interlocutor, enel momento o grabados en archivos.• Archivos que permite compartir archivos.NotaAlgunos sistemas permitenel uso <strong>de</strong> cámaras <strong>de</strong> ví<strong>de</strong>o,micrófonos y altavoces paraque la conversación no secircunscriba sólo a texto escrito.ANOTACIONES319


ª FUOC • XP04/90786/00020Software libreDes<strong>de</strong> que en 1983 apareció el primer sistema <strong>de</strong> mensajería instantánea,han salido al mercado otros muchos productos, algunosusando protocolos propietarios, otros intentando buscar un estándar.De hecho, la IETF ha recopilado muchas <strong>de</strong> estas contribucionesy está <strong>de</strong>sarrollando el Instant Messaging and Presence Protocol, porel cual se espera que pase el futuro <strong>de</strong> la mensajería instantánea.NotaEn general, el honor <strong>de</strong> haber creado el primer sistema<strong>de</strong> mensajería instantánea se atribuye a Mirabilis,la compañía formada por cuatro estudiantes israelíesque en 1996 lanzó ICQ. Pero no <strong>de</strong>bemos olvidar queen los sistemas Unix existe <strong>de</strong>s<strong>de</strong> 1983 una aplicación llamadatalk que permite la conversación entre dos usuariosconectados a sendos sistemas Unix via telnet orloginSeguramente, la proliferación <strong>de</strong> los or<strong>de</strong>nadoresdomésticos, Internet y la web <strong>de</strong> finales <strong>de</strong> los noventa,mayoritariamente en entorno Windows, ha eclipsadoun tanto todo lo que tenía que ver con elentorno Unix.22.1. Programas <strong>de</strong> mensajería instantáneaANOTACIONESNotaLa dirección <strong>de</strong> la web<strong>de</strong> ICQ es la siguiente:http://www.icq.com.Sin preten<strong>de</strong>r crear una lista exhaustiva, vamos a repasar los principalesprogramas que proporcionan la funcionalidad <strong>de</strong> la mensajeríainstantánea en un entorno peer-to-peer. Algunos <strong>de</strong> los programaspresentados son <strong>de</strong> software libre, pero otros no.22.1.1. ICQICQ fue el primer programa que apareció (en 1996) y actualmenteaún es <strong>de</strong> los más populares. Las siglas respon<strong>de</strong>n a la frase "I seekyou", (‘te estoy buscando’). ICQ usa control centralizado a través <strong>de</strong>servidores, y la comunicación entre clientes y servidores, y entre clientesse realiza mediante un protocolo propietario (ICQ, v.5).320


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/0002022.1.2. AIMAIM (AOL Instant Messenger), que apareció poco <strong>de</strong>spués <strong>de</strong> ICQ,es la evolución <strong>de</strong> las comunida<strong>de</strong>s que America OnLine ya tenía <strong>de</strong>sarrolladascon otras tecnologías más antiguas, como las BBS (BulletinBoard System). AIM también usa un protocolo propietario. Portanto, el cliente tiene que ser específico para este entorno.NotaLa dirección <strong>de</strong> la web <strong>de</strong>AIM es la siguiente:http://www.aim.com.NotaEn 1998, AOL compró Mirabilis e integró ICQ en susuite <strong>de</strong> servicios ofrecidos.22.1.3. MSN MessengerMicrosoft también ha entrado en el mundo <strong>de</strong> los sistemas <strong>de</strong> mensajeríainstantánea con MSN (Microsoft Network) Messenger. Es muyparecido a los dos <strong>de</strong>scritos anteriormente.22.1.4. JabberNotaLa dirección <strong>de</strong> la web <strong>de</strong>MSN Messenger es la siguiente:http://messenger.msn.comJabber es más que un mero sistema <strong>de</strong> mensajería. Es un conjunto<strong>de</strong> protocolos y tecnologías que permiten el <strong>de</strong>sarrollo <strong>de</strong> múltiplesaplicaciones peer-to-peer. Permite <strong>de</strong>sarrollar clientes, servidores,componentes, bibliotecas, etc. Está basado en XML y es la base <strong>de</strong>los protocolos que la IETF está en proceso <strong>de</strong> estandarización.NotaLa dirección <strong>de</strong> la web <strong>de</strong>Jabber es la siguiente:http://www.jabber.org.Sus autores presentan entre las ventajas <strong>de</strong> Jabber las siguientes:permite entornos <strong>de</strong>scentralizados, es abierto, público, seguro, extensibley flexible.22.1.5. GAIMGaim es un cliente <strong>de</strong> mensajería instantánea multiprotocolo, paraGNU/Linux, Unix BSD, MacOS X y Windows. Es compatible con AIM,ICQ, MSN Messenger, Yahoo, IRC, Jabber, Gadu-Gadu y Zephyr.Una <strong>de</strong> sus mejores prestaciones es que permite estar conectado condiferentes re<strong>de</strong>s <strong>de</strong> mensajería simultáneamente. Así, un usuario <strong>de</strong>NotaLa dirección <strong>de</strong> la web <strong>de</strong>GAIM es la siguiente:http://gaim.sourceforge.net.ANOTACIONES321


ª FUOC • XP04/90786/00020Software libreGaim pue<strong>de</strong> estar en un chat <strong>de</strong> AOL mientras está conversando conun amigo <strong>de</strong> Yahoo y <strong>de</strong>ntro <strong>de</strong> un canal IRC, todo en la misma aplicación.ANOTACIONES322


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020ResumenEn este curso hemos presentado las bases <strong>de</strong> funcionamiento <strong>de</strong> lared Internet.En la primera parte se han presentado los conceptos básicos <strong>de</strong> re<strong>de</strong>s<strong>de</strong> <strong>computadores</strong> y los diferentes sistemas <strong>de</strong> comunicacionesque se utilizan hoy día, siguiendo un hilo conductor histórico, quepermite enten<strong>de</strong>r el porqué <strong>de</strong> muchas <strong>de</strong> las limitaciones y particularida<strong>de</strong>sque poseen. Se ha expuesto, también, la arquitectura <strong>de</strong>protocolos, un concepto básico en re<strong>de</strong>s <strong>de</strong> <strong>computadores</strong>. Comoparadigma <strong>de</strong> dicho concepto, se ha explicado el mo<strong>de</strong>lo <strong>de</strong> referenciaOSI y se han <strong>de</strong>scrito los siete niveles que lo forman. Las arquitecturasreales, en particular Internet, suelen <strong>de</strong>scribirse y explicarseen relación con el mo<strong>de</strong>lo OSI.En la segunda parte hemos hecho un repaso, <strong>de</strong>s<strong>de</strong> un punto <strong>de</strong> vista<strong>de</strong>scriptivo, a las re<strong>de</strong>s <strong>de</strong> área local. El principio básico <strong>de</strong> funcionamiento<strong>de</strong> las re<strong>de</strong>s <strong>de</strong> área local es la difusión <strong>de</strong> tramas en unmedio compartido. Así, las estaciones <strong>de</strong> la red, cuando quieran estableceruna comunicación con otra (u otras) estaciones, <strong>de</strong>berán generartramas <strong>de</strong> bytes a partir <strong>de</strong> los datos que quieran transferir. Yponerlas en el medio para que lleguen a su o sus <strong>de</strong>stinatarios.Se han presentado las topologías más usuales, <strong>de</strong>stacando las topologíasen bus y en anillo. En un bus, todas las estaciones se conectana un mismo cable, mientras que en un anillo, cada estación está conectadaa dos más, creando una estructura circular. Ambas topologíastienen ventajas e inconvenientes, siendo el más importante <strong>de</strong>estos la dificultad <strong>de</strong> mantenimiento y localización <strong>de</strong> averías quepresentan ambas. Esto ha propiciado el <strong>de</strong>sarrollo <strong>de</strong>l cableado estructurado,como mecanismo para instalar re<strong>de</strong>s <strong>de</strong> área local másfiables y siguiendo estándares universales.Asociados al cableado estructurado han aparecido dispositivos muycomunes hoy en día como son los concentradores y los conmutado-ANOTACIONES323


ª FUOC • XP04/90786/00020Software libreres. Los primeros simulan un bus y los segundos aprovechan el concepto<strong>de</strong> conmutación para conseguir re<strong>de</strong>s más eficientes. Siempreque se pue<strong>de</strong>, las tramas no se difun<strong>de</strong>n a todas las estaciones presentesen la red, si no sólo a sus <strong>de</strong>stinatarias.Finalmente se han presentado las políticas <strong>de</strong> acceso al medio máshabituales, las cuales van asociadas a la topología usada. Así, hemosvisto la política <strong>de</strong> paso <strong>de</strong> testigo como la más a<strong>de</strong>cuada paralas re<strong>de</strong>s en anillo, y la CSMA/CD, que se usa en la mayoría <strong>de</strong> lasre<strong>de</strong>s en bus, tanto si es un bus cableado como a través <strong>de</strong> un concentrador.En la tercera parte, se han <strong>de</strong>scrito <strong>de</strong> los protocolos que se utilizanen la red Internet. En concreto, se han visto los protocolos <strong>de</strong>l nivel<strong>de</strong> interconexión <strong>de</strong> red, que son IP y sus asociados ARP e ICMP, y losprotocolos <strong>de</strong>l nivel <strong>de</strong> transporte: TCP y UDP.Se ha visto el fenómeno <strong>de</strong>l encapsulamiento <strong>de</strong> la información,como resultado <strong>de</strong> tener diferentes protocolos involucrados en unamisma conexión, y como este encapsulamiento afecta al nivel <strong>de</strong> red.Uno <strong>de</strong> los aspectos más relevantes <strong>de</strong>l protocolo IP es la asignación<strong>de</strong> direcciones. Hemos visto como cada interfaz conectada a Internet<strong>de</strong>be tener una dirección IP única que la i<strong>de</strong>ntifique. Las direccionesIP no sólo i<strong>de</strong>ntifican estaciones, sino también la red o subred don<strong>de</strong>está la estación. De este modo, es posible encaminar los paquetes IPa través <strong>de</strong> diferentes encaminadores y, por lo tanto, a través <strong>de</strong> diferentesre<strong>de</strong>s.ANOTACIONESEl protocolo ICMP nos permite resolver inci<strong>de</strong>ncias que puedan ocurriren la Red. Hemos <strong>de</strong>scrito las peculiarida<strong>de</strong>s <strong>de</strong> este protocolo,así como dos utilida<strong>de</strong>s como son el ping y el traceroute, <strong>de</strong> usomuy habitual.Hemos <strong>de</strong>scrito las re<strong>de</strong>s <strong>de</strong> acceso a Internet más habituales,como son la red Ethernet, el acceso mediante una conexión telefónicacon el protocolo PPP y el acceso mediante el protocoloADSL, que permite usar el cable telefónico pero sin tener que estableceruna llamada.324


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Por lo que respecta al nivel <strong>de</strong> transporte, hemos visto como su principalobjetivo es entregar la información a los niveles orientados a laaplicación en los extremos <strong>de</strong> la red. En la jerarquía <strong>de</strong> protocolosTCP/IP se <strong>de</strong>finen dos protocolos <strong>de</strong> transporte:1) El UDP, que es un protocolo no orientado a la conexión. Por tanto,no efectúa ningún control <strong>de</strong> errores ni <strong>de</strong> flujo. Si un datagramaUDP llega equivocado (el UDP utiliza un código <strong>de</strong>tector <strong>de</strong> errores),el UDP lo <strong>de</strong>scarta y no lo entrega a la aplicación. Esta última<strong>de</strong>berá ser capaz <strong>de</strong> respon<strong>de</strong>r a este tipo <strong>de</strong> servicio o <strong>de</strong>beráasumir la pérdida <strong>de</strong> la información. Este tipo <strong>de</strong> servicio pue<strong>de</strong>ser útil en aplicaciones en tiempo real, en las que es más importanteque la información llegue cuando le toca; es <strong>de</strong>cir, con unretardo limitado, que no que se pierda una parte <strong>de</strong> la misma.2) El TCP, que es un protocolo orientado a la conexión. Habrá unafase <strong>de</strong> establecimiento <strong>de</strong> la conexión (el llamado procedimientothree-way handshake), una fase <strong>de</strong> transmisión <strong>de</strong> la informacióny una fase <strong>de</strong> finalización <strong>de</strong> la conexión. El TCP entregará la informacióna la aplicación totalmente libre <strong>de</strong> errores. Para conseguirlo,necesita efectuar un control <strong>de</strong> errores y <strong>de</strong> flujo. El TCPutiliza un código <strong>de</strong>tector <strong>de</strong> errores junto con un protocolo <strong>de</strong> retransmisionespara recuperar la información errónea. Como lasmemorias intermedias <strong>de</strong> recepción se pue<strong>de</strong>n <strong>de</strong>sbordar, el TCPutiliza un control <strong>de</strong> flujo por ventana <strong>de</strong>slizante. El TCP <strong>de</strong>bedimensionar correctamente los temporizadores <strong>de</strong> retransmisión.En la cuarta y última parte, se ha presentado el concepto <strong>de</strong> programacióndistribuida y el mo<strong>de</strong>lo cliente/servidor, que es el más utilizado.También se ha presentado el mo<strong>de</strong>lo peer-to-peer, que no esuna alternativa al anterior como a veces se ha planteado, porque noes un mo<strong>de</strong>lo <strong>de</strong> programación <strong>de</strong> aplicaciones, sinó que hace referenciaal tipo <strong>de</strong> máquinas que se interconectan.También se ha <strong>de</strong>scrito el servicio <strong>de</strong> nombres <strong>de</strong> dominio, que proporcionaacceso a una base <strong>de</strong> datos distribuida por toda la Red quepermite obtener información sobre un <strong>de</strong>terminado nombre. Lasconsultas más habituales son para averiguar la dirección IP que correspon<strong>de</strong>a un nombre <strong>de</strong> servidor, pero también es posible obtenerel nombre <strong>de</strong>l servidor <strong>de</strong> correo <strong>de</strong> un dominio dado, el nombre <strong>de</strong>una máquina a partir <strong>de</strong> su dirección IP, etc.ANOTACIONES325


ª FUOC • XP04/90786/00020Software librePor lo que respecta a las propias aplicaciones, en esta unidad se hanpresentado los llamados servicios básicos <strong>de</strong> Internet, que son:• Telnet: protocolo general para establecer sesiones interactivascon un servidor que permite que el cliente actúe como un terminalvirtual.• rlogin: protocolo <strong>de</strong> terminal virtual con facilida<strong>de</strong>s para simplificarel proceso <strong>de</strong> i<strong>de</strong>ntificación <strong>de</strong>l usuario.• rsh, rexec: protocolos para la ejecución remota <strong>de</strong> procesos en elservidor.Se han presentado también los protocolos más usados quizás hoy endía, como son la transferencia <strong>de</strong> archivos, el correo electrónico, elservicio <strong>de</strong> news, el WWW y la mensajería electrónica, con sus múltiplesposibilida<strong>de</strong>s.Sobre el FTP, se ha comentado que permite copiar archivos <strong>de</strong>l clienteal servidor, <strong>de</strong>l servidor al cliente y también <strong>de</strong> un servidor a otro,y que proporciona operaciones para que el cliente pueda manipularel sistema <strong>de</strong> archivos <strong>de</strong>l servidor.Sobre el correo electrónico, que es un servicio basado en los mismosconceptos <strong>de</strong>l correo postal, se ha comentado en concreto la filosofía<strong>de</strong> almacenamiento y reenvío.La norma RFC 822 especifica el formato <strong>de</strong> los mensajes, y la normaMIME especifica un conjunto <strong>de</strong> extensiones para, por ejemplo, adjuntararchivos y usar diversos idiomas.ANOTACIONESTres protocolos proporcionan las diferentes funcionalida<strong>de</strong>s necesarias:• SMTP: transferencia <strong>de</strong> mensajes.• POP3: acceso simple a buzones <strong>de</strong> correo.• IMAP4rev1: acceso complejo a buzones <strong>de</strong> correo.326


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020El servicio <strong>de</strong> noticias (news) facilita la publicación <strong>de</strong> mensajes conun alcance que pue<strong>de</strong> ir <strong>de</strong>s<strong>de</strong> el ámbito local <strong>de</strong> una organización,hasta el ámbito mundial (toda la Internet). Se basa en la propagación<strong>de</strong> los mensajes entre los diferentes servidores por medio <strong>de</strong>lNNTP. Este mismo protocolo pue<strong>de</strong> ser utilizado por los clientes paraacce<strong>de</strong>r a los mensajes guardados en un servidor o para enviar otrosnuevos.El servicio WWW permite “navegar’’ por un conjunto <strong>de</strong> elementos<strong>de</strong> información interconectados con referencias o enlaces entre síque pue<strong>de</strong>n contener datos con diferentes tipos <strong>de</strong> representaciones(texto, imágenes, audio, ví<strong>de</strong>o). El protocolo que proporciona el accesoa esta información es el HTTP.El servicio <strong>de</strong> mensajería instantánea está soportado por diferentesprotocolos, algunos propietarios. Existen diferentes plataformas quelo proporcionan y también se han <strong>de</strong>sarrollado diferentes clientesmultiprotocolo que permiten acce<strong>de</strong>r a diferentes re<strong>de</strong>s <strong>de</strong> mensajeríasimultáneamente.ANOTACIONES327


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020BibliografíaComer, D.E. (2000). “Principles, Protocols and Architecture”. Internetworkingwith TCP/IP (vol. 1). (4.ª ed.). Upper Saddle River: Prentice Hall.Pierce, J.R.; Noll, A.M. (1995). Señales. La ciencia <strong>de</strong> las telecomunicaciones.Barcelona: Reverté.Rose, Marshall T. (1990). The open book. Englewood Cliffs: Prentice Hall.Stallings, W. (2000). Comunicaciones y re<strong>de</strong>s <strong>de</strong> <strong>computadores</strong> (6.ª ed.).Madrid: Prentice-Hall.Stevens, W.R. (1994). “The Protocols” TCP/IP Illustrated (vol. I). Wilmington:Addison-Wesley.Tanenbaum, A.S. (2003). <strong>Re<strong>de</strong>s</strong> <strong>de</strong> computadoras (4.ª ed.). Méjico: PearsonEducación.ANOTACIONES329


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020AnexosAnexo 1El algoritmo checksumLos protocolos IP y TCP utilizan, entre otros, un sencillo checksum parala <strong>de</strong>tección <strong>de</strong> errores. Ésta es una versión <strong>de</strong>l algoritmo checksum:u_short checksum(u_short * addr,int len){int aux_len = len;u_short *aux_addr = addr;u_short res;int sum = 0;while(aux_len > 1){sum+ = *aux_addr++;aux_len- = 2;}if(aux_len == 1)sum+ = *(u_char) *aux_addr;}sum = (sum>>16) + (sum & 0xffff);sum+ = (sum>>16);res = ~sum;return res;ANOTACIONES331


ª FUOC • XP04/90786/00020Software libreAnexo 2Aplicaciones mencionadas en el texto1) Aplicaciones estándarNotaEn los sistemas Unix podréisencontrar más informaciónutilizando el comando man.Por ejemplo, para saber más<strong>de</strong>talles <strong>de</strong>l comando route<strong>de</strong> Unix podéis ejecutar:$ man routeNotaPara ejecutar los comandosque se muestran en esteanexo se requiere tener privilegios<strong>de</strong> superusuario.A continuación, resumimos las aplicaciones estándar que se han vistoen el cursoy que están disponibles en entornos Unix y GNU/Linux.• ping: por medio <strong>de</strong> paquetes ICMP (<strong>de</strong>l tipo petición <strong>de</strong> eco y respuesta<strong>de</strong> eco) permite saber si una máquina está funcionando ono y tener una i<strong>de</strong>a <strong>de</strong> cuál es el retardo <strong>de</strong> ida y vuelta (round-trip).Asimismo, permite saber por qué máquinas pasa el paquete hastaque llega a <strong>de</strong>stino. Para esta función, va mejor el programa traceroute,a causa <strong>de</strong> las limitaciones inherentes a los paquetesICMP.• traceroute: permite averiguar la ruta que se sigue <strong>de</strong>s<strong>de</strong> elequipo local hasta un <strong>de</strong>stino cualquiera <strong>de</strong> Internet. Marca losretardos existentes en cada uno <strong>de</strong> los nodos que es preciso cruzar.Se basa en el campo TTL <strong>de</strong>l paquete IP y los mensajes ICMPtime-to-live-excee<strong>de</strong>d.Esta aplicación no está disponible en algunasdistribuciones <strong>de</strong> Unix y distribuciones <strong>de</strong> GNU/Linux, pero sepue<strong>de</strong> conseguir facilmente.• arp: permite consultar y modificar la tabla ARP (caché ARP) <strong>de</strong>una máquina.• route: sirve para consultar y modificar la tabla <strong>de</strong> direccionamientoIP <strong>de</strong> una máquina conectada a Internet.ANOTACIONES• ifconfig: permite consultar el estado <strong>de</strong> las tarjetas <strong>de</strong> red disponiblesen el sistema local.• netstat: proporciona estadísticas <strong>de</strong> los protocolos TCP y UDP.Permite listar los puertos que se escuchan. Muestra el estado enque se encuentran los sockets TCP. Si queréis un listado <strong>de</strong> todoslos sockets activos y puertos abiertos, haced netstat -a, y, si osinteresan otras variantes, consultad la ayuda.• telnet: ofrece, aparte <strong>de</strong> la principal emulación <strong>de</strong> terminal, conectary experimentar los protocolos ASCII.332


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/000202) Aplicaciones no estándar• netcat (licencia GPL-Lenguage C): esta aplicación nos permiteutilizar conexiones TCP y UDP <strong>de</strong>s<strong>de</strong> la línea <strong>de</strong> comandos (porejemplo, transmitir un fichero) o comprobar qué puertos tieneabiertos una <strong>de</strong>terminada máquina, entre otros servicios.• tcpdump [Unix (software libre-lenguaje C)]: permite analizar el tráfico<strong>de</strong> la red por medio <strong>de</strong> conexión (LAN o punto a punto). Al contrario<strong>de</strong> lo que su nombre indica, es capaz <strong>de</strong> interpretar lospaquetes no sólo en el ámbito TCP, sino también en el IP, red, yaplicación (para aplicaciones comunes). Es una herramienta imprescindiblepara cualquier administrador <strong>de</strong> sistemas, aunque noaparezca en las distribuciones <strong>de</strong> las diferentes variantes <strong>de</strong> Unix.El código es <strong>de</strong> libre distribución. Sus autores son Van Jacobson,Craig Leres y Steven McCanne, <strong>de</strong> la Universidad <strong>de</strong> California,aunque el programa en que se basaba el original, el Etherfind, erapropiedad <strong>de</strong> Sun Microsystems y se distribuía <strong>de</strong>ntro <strong>de</strong> SunOS.NotaEn LAN, el tcpdump pone la tarjeta <strong>de</strong> red en modopromiscuo. Lo que significa que todo el tráfico <strong>de</strong> lared es visible, con lo que cualquier usuario malintencionado(un hacker) pue<strong>de</strong> hacer un mal uso <strong>de</strong>l mismo.Por tanto, el tcpdump y otras herramientassimilares o <strong>de</strong>rivadas <strong>de</strong>l tcpdump, conocidas como<strong>de</strong>tectores (sniffers) se pue<strong>de</strong>n consi<strong>de</strong>rar como unaherramienta potencialmente peligrosa. De hecho, loque es arriesgado es no utilizar al menos uno <strong>de</strong> lostres mecanismos <strong>de</strong> protección más importantes contralos <strong>de</strong>tectores: cifrado, cifrado y cifrado.A continuación, se indican los resultados que pue<strong>de</strong> mostrar el programatcpdump.3) El programa tcpdumpEl programa tcpdump permite capturar y filtrar paquetes que cruzanuna interfaz <strong>de</strong> red que se ha activado en modo promiscuo (todos losANOTACIONES333


ª FUOC • XP04/90786/00020Software librepaquetes que pasan por el medio son capturados y filtrados). Los paquetesson procesados por un software especial que sólo pue<strong>de</strong> ejecutarel superusuario (root) <strong>de</strong> la máquina.Para ver cómo funcionan los diferentes protocolos, proporcionamosejemplos <strong>de</strong> las trazas que muestra el tcpdump durante el establecimientoo la terminación <strong>de</strong> la conexión.Para ver cómo funciona este comando, pue<strong>de</strong> utilizarse la instrucciónman <strong>de</strong> Unix (o GNU/Linux). En este anexo ofrecemos un ejemplo <strong>de</strong>lsignificado <strong>de</strong> la traza <strong>de</strong>l tcpdump.El formato general <strong>de</strong> salida <strong>de</strong>l tcpdump es el siguiente:Data src> dst: flag data-sqno ack window urgent optionsEl significado <strong>de</strong> los componentes <strong>de</strong>l formato son los siguientes:• data: este componente nos proporciona la hora en que se produjoel acontecimiento en formato hora:minutos:segundos.microsegundos(o milisegundos, según la resolución <strong>de</strong>l reloj).• src y dst: son las direcciones IP y los puertos TCP/UDP <strong>de</strong> lasconexiones <strong>de</strong> fuente y <strong>de</strong> <strong>de</strong>stino.• flags: son una combinación <strong>de</strong> los posibles indicadores <strong>de</strong> unsegmento/datagrama TCP/UDP: S (SYN), F (FIN), P (PUSH), R(RST) y ‘.’ (que significa que no hay indicadores).• data-sqno: <strong>de</strong>scribe el número <strong>de</strong> secuencia <strong>de</strong> la porción <strong>de</strong> datos.ANOTACIONES• ack: es el número <strong>de</strong> secuencia <strong>de</strong>l byte siguiente que espera recibirel otro extremo TCP/UDP.• window: es el tamaño <strong>de</strong> la ventana que el receptor advierte altransmisor.• urgent: indica que existen datos urgentes en este segmento/datagrama.• options: son las opciones TCP que suelen estar entre corchetes<strong>de</strong>l tipo < >; por ejemplo, el tamaño máximo <strong>de</strong>l segmento (porejemplo, ).334


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Supongamos que hacemos un rlogin <strong>de</strong>s<strong>de</strong> la máquina argos(fuente) hasta la máquina helios (<strong>de</strong>stino). Un ejemplo <strong>de</strong> una líneaque retorna el comando tcpdump sería el siguiente:• 12:34:23.165439 argos.1023 > helios.login: S 7838437:7838437 (0) win 4096 • 12:34:23.165439 helios.login > argos.1023: S 453534:453534 (0) ack7838438 win 4096 La primera línea indica lo siguiente:a) El acontecimiento tiene lugar a las 12:34:23.165439.b) Su origen es la máquina argos con el puerto 1.024. Su <strong>de</strong>stino esla máquina helios con el puerto login.c) El indicador S señala que es un segmento <strong>de</strong> SYN (por ejemplo,por un inicio <strong>de</strong> conexión).d) Advierte un número <strong>de</strong> secuencia 7.838.437 y consume hasta estenúmero. Conviene observar que el tcpdump escribe el número inicialy el final <strong>de</strong>l número <strong>de</strong> secuencia <strong>de</strong> datos, y, entre paréntesis,la diferencia indicando la longitud <strong>de</strong>l campo <strong>de</strong> datos (en este caso0 bytes, puesto que es un segmento <strong>de</strong> petición <strong>de</strong> conexión). Portanto, indica entre paréntesis la longitud <strong>de</strong>l segmento <strong>de</strong> datos. Estenúmero <strong>de</strong> secuencia es absoluto. Las salidas siguientes <strong>de</strong>l tcpdumpindicarán los números <strong>de</strong> secuecia relativos al inicial. Por ejemplo,en lugar <strong>de</strong> indicar 7.838.437: 7.838.450, (13) en notaciónabsoluta, indicará 1:13, (13) en notación relativa al ISN (se cumpleque valor absoluto es igual al ISN más el valor relativo). Lo mismo seaplica a los números <strong>de</strong> secuencia <strong>de</strong>l ACK.e) Advierte una ventana <strong>de</strong> 4.096 bytes.f) Hay una petición <strong>de</strong> tamaño máximo <strong>de</strong> segmento <strong>de</strong> 1.024 bytes.La segunda línea indica lo siguiente:a) El origen es la máquina helios con el puerto login. El <strong>de</strong>stino esla máquina argos con el puerto 1.023.ANOTACIONES335


ª FUOC • XP04/90786/00020Software libreb) El indicador S señala que es un segmento <strong>de</strong> SYN (por ejemplo,para un inicio <strong>de</strong> conexión).c) Indica el número <strong>de</strong> secuencia inicial 453.534.d) Reconoce con un ACK el byte siguiente que espera <strong>de</strong>l transmisor,el 7.838.438 (es <strong>de</strong>cir, 7.838.437 + 1), puesto que los recibió correctamentehasta el 7.838.437).e) Advierte una ventana <strong>de</strong> 4.096 bytes.f) Hay una petición <strong>de</strong> tamaño máximo <strong>de</strong> segmento <strong>de</strong> 1.024 bytes.El programa tcpdump permite escuchar, <strong>de</strong> manera sencilla, todo loque suce<strong>de</strong> en la red. Admite toda una serie <strong>de</strong> indicadores para filtrarsólo las direcciones IP <strong>de</strong> fuente o <strong>de</strong> <strong>de</strong>stino que pue<strong>de</strong>n interesar, o eltipo <strong>de</strong> protocolo que se quiere escuchar (TCP, UDP, ARP, etc.). Asimismo,admite indicadores para obtener el campo <strong>de</strong> datos, para filtrar unnúmero fijo <strong>de</strong> segmentos, etc. Para ver todas las posibles opciones quepermite el programa tcpdump se utiliza el comando man.ANOTACIONES336


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Anexo 3NotaciónEn este anexo se <strong>de</strong>talla la notación que se utiliza en toda la unidadpara <strong>de</strong>scribir los campos <strong>de</strong> los mensajes y los comandos soportadospor los diferentes protocolos.Ca<strong>de</strong>na literalLas ca<strong>de</strong>nas literales se <strong>de</strong>finirán con letra <strong>de</strong> espaciado fijo.ca<strong>de</strong>naVariableLas variables se <strong>de</strong>finirán con letra inclinada <strong>de</strong> espaciado fijo o letracursiva.variableAlternativaPara indicar que en una especificación se <strong>de</strong>be elegir un elemento<strong>de</strong> una lista <strong>de</strong> n elementos, se utiliza el carácter “|” para separar lasdiferentes alternativas.elemento1 | elemento2 | ... | elementonRepeticiónPara los elementos que se pue<strong>de</strong>n repetir entre n y m veces, se utiliza laconstrucción n*m como prefijo. Los valores n y m se pue<strong>de</strong>n suprimir. Eneste caso, se toman por <strong>de</strong>fecto los valores n = 0 y m = vacío.n*melementon*elemento*melemento*elementoANOTACIONES337


ª FUOC • XP04/90786/00020Software libreOpcionalPara indicar que una ca<strong>de</strong>na o una variable son opcionales, es precisocerrarlas entre los caracteres “[” y “]”.[elemento]Repetición específicaCuando se quiere indicar que un elemento <strong>de</strong>be aparecer con exactitudun número entero n <strong>de</strong> veces, <strong>de</strong>be ponerse el número n como prefijo.nelementoListaSi se quiere especificar una lista <strong>de</strong> entre n y m elementos separadospor comas, se utiliza la construcción n#m como prefijo. Los valores ny m se pue<strong>de</strong>n suprimir. En este caso se toman los valores por <strong>de</strong>fecto,que son n = 0 y m = vacío.n#melementoAgrupamientoCuando se quiere que uno o más elementos sean tratados como unúnico elemento a efectos <strong>de</strong> los operadores |, * y #, se indica cerrándoloscon los caracteres “(” y “ )”. Se suele utilizar en especificaciones<strong>de</strong> repeticiones y listas.ANOTACIONES(elemento1 elemento2 ... elementon)Caracteres especialesAlgunos caracteres especiales se incluyen entre los caracteres “”.: retorno <strong>de</strong> carro (CR, carriage return): salto <strong>de</strong> línea (LF, line feed): retorno <strong>de</strong> carro + salto <strong>de</strong> línea338


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Anexo 4Códigos <strong>de</strong> respuestaLas diferentes RFC <strong>de</strong>finen los códigos <strong>de</strong> respuesta posibles paracada uno <strong>de</strong> sus comandos, así como su significado. Estos códigosestán formados por tres dígitos y, para facilitar su interpretación, llevanasociado un significado concreto para cada dígito.Primer dígitoIndica si la operación se ha efectuado o no.Nota1yz2yz3yz4yz5yzTabla 18.Primer dígitoRespuesta preliminar: se ha iniciado la operación y, cuando sehaya completado, el servidor enviará una nueva respuesta.Operación completada correctamente.Respuesta intermedia: la operación se ha aceptado; sinembargo, el cliente <strong>de</strong>be enviar nuevos comandos con másinformación para completarla.Respuesta negativa temporal: no se pue<strong>de</strong> llevar a cabo laoperación, pero se podrá efectuar si el cliente lo reintenta.Respuesta negativa <strong>de</strong>finitiva: no se pue<strong>de</strong> efectuar laoperación y probablemente tampoco se podrá llevar a cabo siel cliente lo reintenta.Cuando se quiere leer un ficherocon acceso temporalmentebloqueado porqueotro proceso está escribiendodatos en el mismo, elservidor envía una respuestanegativa temporal. Encambio, cuando se quiereleer un fichero que no existe,el servidor envía una respuestanegativa <strong>de</strong>finitiva,aunque siempre existe laposibilidad <strong>de</strong> que mientrastanto otro proceso lo cree.Segundo dígitoIndica el tipo <strong>de</strong> respuesta.Tabla 19.x0zx1zx2zx3zx5zSegundo dígitoError <strong>de</strong> sintaxis, comando no implementado o, en general,respuesta no perteneciente a ninguna <strong>de</strong> las otras categorías.Respuesta informativa.Respuesta referente a las conexiones.Respuesta referente al proceso <strong>de</strong> autenticación (nombre <strong>de</strong>usuario, contraseña, etc.).Respuesta referente a la aplicación concreta (por ejemplo, alsistema <strong>de</strong> ficheros o <strong>de</strong> correo).ANOTACIONES339


ª FUOC • XP04/90786/00020Software libreTercer dígitoEl tercer dígito complementa la información <strong>de</strong>l segundo dígito paraespecificar <strong>de</strong> qué respuesta concreta se trata.ANOTACIONES340


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020GNU Free Documentation LicenseGNU Free Documentation LicenseVersion 1.2, November 2002Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.59 Temple Place, Suite 330, Boston, MA 02111-1307 USAEveryone is permitted to copy and distribute verbatim copiesof this license document, but changing it is not allowed.0. PREAMBLEThe purpose of this License is to make a manual, textbook, or otherfunctional and useful document "free" in the sense of freedom: toassure everyone the effective freedom to copy and redistribute it,with or without modifying it, either commercially or noncommercially.Secondarily, this License preserves for the author and publisher a wayto get credit for their work, while not being consi<strong>de</strong>red responsiblefor modifications ma<strong>de</strong> by others.This License is a kind of "copyleft", which means that <strong>de</strong>rivativeworks of the document must themselves be free in the same sense. Itcomplements the GNU General Public License, which is a copyleftlicense <strong>de</strong>signed for free software.We have <strong>de</strong>signed this License in or<strong>de</strong>r to use it for manuals for freesoftware, because free software needs free documentation: a freeprogram should come with manuals providing the same freedomsthat the software does. But this License is not limited to softwaremanuals; it can be used for any textual work, regardless of subjectmatter or whether it is published as a printed book. We recommendthis License principally for works whose purpose is instructionor reference.ANOTACIONES341


ª FUOC • XP04/90786/00020Software libre1. APPLICABILITY AND DEFINITIONSThis License applies to any manual or other work, in any medium,that contains a notice placed by the copyright hol<strong>de</strong>r saying it can bedistributed un<strong>de</strong>r the terms of this License. Such a notice grants aworld-wi<strong>de</strong>, royalty-free license, unlimited in duration, to use thatwork un<strong>de</strong>r the conditions stated herein. The "Document", below,refers to any such manual or work. Any member of the public is alicensee, and is addressed as "you". You accept the license if youcopy, modify or distribute the work in a way requiring permissionun<strong>de</strong>r copyright law.A "Modified Version" of the Document means any work containing theDocument or a portion of it, either copied verbatim, or withmodifications and/or translated into another language.A "Secondary Section" is a named appendix or a front-matter sectionof the Document that <strong>de</strong>als exclusively with the relationship of thepublishers or authors of the Document to the Document's overallsubject (or to related matters) and contains nothing that could falldirectly within that overall subject. (Thus, if the Document is in part atextbook of mathematics, a Secondary Section may not explain anymathematics.) The relationship could be a matter of historicalconnection with the subject or with related matters, or of legal,commercial, philosophical, ethical or political position regarding them.ANOTACIONESThe "Invariant Sections" are certain Secondary Sections whose titlesare <strong>de</strong>signated, as being those of Invariant Sections, in the notice thatsays that the Document is released un<strong>de</strong>r this License. If a sectiondoes not fit the above <strong>de</strong>finition of Secondary then it is not allowed tobe <strong>de</strong>signated as Invariant. The Document may contain zeroInvariant Sections. If the Document does not i<strong>de</strong>ntify any InvariantSections then there are none.The "Cover Texts" are certain short passages of text that are listed,as Front-Cover Texts or Back-Cover Texts, in the notice that saysthat the Document is released un<strong>de</strong>r this License. A Front-CoverText may be at most 5 words, and a Back-Cover Text may be atmost 25 words.342


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020A "Transparent" copy of the Document means a machine-readablecopy, represented in a format whose specification is available to thegeneral public, that is suitable for revising the documentstraightforwardly with generic text editors or (for images composed ofpixels) generic paint programs or (for drawings) some wi<strong>de</strong>lyavailable drawing editor, and that is suitable for input to textformatters or for automatic translation to a variety of formats suitablefor input to text formatters. A copy ma<strong>de</strong> in an otherwise Transparentfile format whose markup, or absence of markup, has been arrangedto thwart or discourage subsequent modification by rea<strong>de</strong>rs is notTransparent.An image format is not Transparent if used for any substantialamount of text. A copy that is not "Transparent" is called "Opaque".Examples of suitable formats for Transparent copies inclu<strong>de</strong> plainASCII without markup, Texinfo input format, LaTeX input format,SGML or XML using a publicly available DTD, and standardconformingsimple HTML, PostScript or PDF <strong>de</strong>signed for humanmodification. Examples of transparent image formats inclu<strong>de</strong> PNG,XCF and JPG. Opaque formats inclu<strong>de</strong> proprietary formats that canbe read and edited only by proprietary word processors, SGML orXML for which the DTD and/or processing tools are not generallyavailable, and the machine-generated HTML, PostScript or PDFproduced by some word processors for output purposes only.The "Title Page" means, for a printed book, the title page itself, plussuch following pages as are nee<strong>de</strong>d to hold, legibly, the material thisLicense requires to appear in the title page. For works in formatswhich do not have any title page as such, "Title Page" means the textnear the most prominent appearance of the work's title, preceding thebeginning of the body of the text.A section "Entitled XYZ" means a named subunit of the Documentwhose title either is precisely XYZ or contains XYZ in parenthesesfollowing text that translates XYZ in another language. (Here XYZstands for a specific section name mentioned below, such as"Acknowledgements", "Dedications", "Endorsements", or "History".) To"Preserve the Title" of such a section when you modify the Documentmeans that it remains a section "Entitled XYZ" according to this<strong>de</strong>finition.ANOTACIONES343


ª FUOC • XP04/90786/00020Software libreThe Document may inclu<strong>de</strong> Warranty Disclaimers next to the noticewhich states that this License applies to the Document. TheseWarranty Disclaimers are consi<strong>de</strong>red to be inclu<strong>de</strong>d by reference inthis License, but only as regards disclaiming warranties: any otherimplication that these Warranty Disclaimers may have is void and hasno effect on the meaning of this License.2. VERBATIM COPYINGYou may copy and distribute the Document in any medium, eithercommercially or noncommercially, provi<strong>de</strong>d that this License, thecopyright notices, and the license notice saying this License applies tothe Document are reproduced in all copies, and that you add noother conditions whatsoever to those of this License. You may not usetechnical measures to obstruct or control the reading or furthercopying of the copies you make or distribute. However, you mayaccept compensation in exchange for copies. If you distribute a largeenough number of copies you must also follow the conditions insection 3.You may also lend copies, un<strong>de</strong>r the same conditions stated above,and you may publicly display copies.3. COPYING IN QUANTITYANOTACIONESIf you publish printed copies (or copies in media that commonly haveprinted covers) of the Document, numbering more than 100, and theDocument's license notice requires Cover Texts, you must enclose thecopies in covers that carry, clearly and legibly, all these Cover Texts:Front-Cover Texts on the front cover, and Back-Cover Texts on theback cover. Both covers must also clearly and legibly i<strong>de</strong>ntify you asthe publisher of these copies. The front cover must present the fulltitle with all words of the title equally prominent and visible. You mayadd other material on the covers in addition.Copying with changes limited to the covers, as long as they preservethe title of the Document and satisfy these conditions, can be treatedas verbatim copying in other respects.344


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020If the required texts for either cover are too voluminous to fit legibly,you should put the first ones listed (as many as fit reasonably) on theactual cover, and continue the rest onto adjacent pages.If you publish or distribute Opaque copies of the Documentnumbering more than 100, you must either inclu<strong>de</strong> a machinereadableTransparent copy along with each Opaque copy, or state inor with each Opaque copy a computer-network location from whichthe general network-using public has access to download usingpublic-standard network protocols a complete Transparent copy ofthe Document, free of ad<strong>de</strong>d material.If you use the latter option, you must take reasonably pru<strong>de</strong>nt steps,when you begin distribution of Opaque copies in quantity, to ensurethat this Transparent copy will remain thus accessible at the statedlocation until at least one year after the last time you distribute anOpaque copy (directly or through your agents or retailers) of thatedition to the public.It is requested, but not required, that you contact the authors of theDocument well before redistributing any large number of copies, togive them a chance to provi<strong>de</strong> you with an updated version of theDocument.4. MODIFICATIONSYou may copy and distribute a Modified Version of the Documentun<strong>de</strong>r the conditions of sections 2 and 3 above, provi<strong>de</strong>d that yourelease the Modified Version un<strong>de</strong>r precisely this License, with theModified Version filling the role of the Document, thus licensingdistribution and modification of the Modified Version to whoeverpossesses a copy of it. In addition, you must do these things in theModified Version:A. Use in the Title Page (and on the covers, if any) a title distinct fromthat of the Document, and from those of previous versions (whichshould, if there were any, be listed in the History section of theDocument). You may use the same title as a previous version if theoriginal publisher of that version gives permission.ANOTACIONES345


ª FUOC • XP04/90786/00020Software libreB. List on the Title Page, as authors, one or more persons or entitiesresponsible for authorship of the modifications in the ModifiedVersion, together with at least five of the principal authors of theDocument (all of its principal authors, if it has fewer than five), unlessthey release you from this requirement.C. State on the Title page the name of the publisher of the ModifiedVersion, as the publisher.D. Preserve all the copyright notices of the Document.E. Add an appropriate copyright notice for your modificationsadjacent to the other copyright notices.F. Inclu<strong>de</strong>, immediately after the copyright notices, a license noticegiving the public permission to use the Modified Version un<strong>de</strong>r theterms of this License, in the form shown in the Ad<strong>de</strong>ndum below.G. Preserve in that license notice the full lists of Invariant Sections andrequired Cover Texts given in the Document's license notice.H. Inclu<strong>de</strong> an unaltered copy of this License.ANOTACIONESI. Preserve the section Entitled "History", Preserve its Title, and add toit an item stating at least the title, year, new authors, and publisher ofthe Modified Version as given on the Title Page. If there is no sectionEntitled "History" in the Document, create one stating the title, year,authors, and publisher of the Document as given on its Title Page,then add an item <strong>de</strong>scribing the Modified Version as stated in theprevious sentence.J. Preserve the network location, if any, given in the Document forpublic access to a Transparent copy of the Document, and likewisethe network locations given in the Document for previous versions itwas based on. These may be placed in the "History" section. You mayomit a network location for a work that was published at least fouryears before the Document itself, or if the original publisher of theversion it refers to gives permission.346


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020K. For any section Entitled "Acknowledgements" or "Dedications",Preserve the Title of the section, and preserve in the section all thesubstance and tone of each of the contributor acknowledgementsand/or <strong>de</strong>dications given therein.L. Preserve all the Invariant Sections of the Document, unaltered intheir text and in their titles. Section numbers or the equivalent are notconsi<strong>de</strong>red part of the section titles.M. Delete any section Entitled "Endorsements". Such a section maynot be inclu<strong>de</strong>d in the Modified Version.N. Do not retitle any existing section to be Entitled "Endorsements" orto conflict in title with any Invariant Section.O. Preserve any Warranty Disclaimers.If the Modified Version inclu<strong>de</strong>s new front-matter sections orappendices that qualify as Secondary Sections and contain nomaterial copied from the Document, you may at your option<strong>de</strong>signate some or all of these sections as invariant. To do this, addtheir titles to the list of Invariant Sections in the Modified Version'slicense notice. These titles must be distinct from any other sectiontitles.You may add a section Entitled "Endorsements", provi<strong>de</strong>d it containsnothing but endorsements of your Modified Version by variousparties--for example, statements of peer review or that the text hasbeen approved by an organization as the authoritative <strong>de</strong>finition of astandard.You may add a passage of up to five words as a Front-Cover Text,and a passage of up to 25 words as a Back-Cover Text, to the end ofthe list of Cover Texts in the Modified Version. Only one passage ofFront-Cover Text and one of Back-Cover Text may be ad<strong>de</strong>d by (orthrough arrangements ma<strong>de</strong> by) any one entity. If the Documentalready inclu<strong>de</strong>s a cover text for the same cover, previously ad<strong>de</strong>d byyou or by arrangement ma<strong>de</strong> by the same entity you are acting onbehalf of, you may not add another; but you may replace the old one,on explicit permission from the previous publisher that ad<strong>de</strong>d the oldone.ANOTACIONES347


ª FUOC • XP04/90786/00020Software libreThe author(s) and publisher(s) of the Document do not by this Licensegive permission to use their names for publicity for or to assert orimply endorsement of any Modified Version.5. COMBINING DOCUMENTSYou may combine the Document with other documents releasedun<strong>de</strong>r this License, un<strong>de</strong>r the terms <strong>de</strong>fined in section 4 above formodified versions, provi<strong>de</strong>d that you inclu<strong>de</strong> in the combination all ofthe Invariant Sections of all of the original documents, unmodified,and list them all as Invariant Sections of your combined work in itslicense notice, and that you preserve all their Warranty Disclaimers.The combined work need only contain one copy of this License, andmultiple i<strong>de</strong>ntical Invariant Sections may be replaced with a singlecopy. If there are multiple Invariant Sections with the same name butdifferent contents, make the title of each such section unique byadding at the end of it, in parentheses, the name of the originalauthor or publisher of that section if known, or else a unique number.Make the same adjustment to the section titles in the list of InvariantSections in the license notice of the combined work.In the combination, you must combine any sections Entitled "History"in the various original documents, forming one section Entitled"History"; likewise combine any sections Entitled "Acknowledgements",and any sections Entitled "Dedications". You must <strong>de</strong>lete all sectionsEntitled "Endorsements".ANOTACIONES6. COLLECTIONS OF DOCUMENTSYou may make a collection consisting of the Document and otherdocuments released un<strong>de</strong>r this License, and replace the individualcopies of this License in the various documents with a single copy thatis inclu<strong>de</strong>d in the collection, provi<strong>de</strong>d that you follow the rules of thisLicense for verbatim copying of each of the documents in all otherrespects.348


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020You may extract a single document from such a collection, anddistribute it individually un<strong>de</strong>r this License, provi<strong>de</strong>d you insert a copyof this License into the extracted document, and follow this License inall other respects regarding verbatim copying of that document.7. AGGREGATION WITH INDEPENDENT WORKSA compilation of the Document or its <strong>de</strong>rivatives with other separateand in<strong>de</strong>pen<strong>de</strong>nt documents or works, in or on a volume of a storageor distribution medium, is called an "aggregate" if the copyrightresulting from the compilation is not used to limit the legal rights ofthe compilation's users beyond what the individual works permit.When the Document is inclu<strong>de</strong>d in an aggregate, this License doesnot apply to the other works in the aggregate which are notthemselves <strong>de</strong>rivative works of the Document.If the Cover Text requirement of section 3 is applicable to these copiesof the Document, then if the Document is less than one half of theentire aggregate, the Document's Cover Texts may be placed oncovers that bracket the Document within the aggregate, or theelectronic equivalent of covers if the Document is in electronic form.Otherwise they must appear on printed covers that bracket the wholeaggregate.8. TRANSLATIONTranslation is consi<strong>de</strong>red a kind of modification, so you maydistribute translations of the Document un<strong>de</strong>r the terms of section 4.Replacing Invariant Sections with translations requires specialpermission from their copyright hol<strong>de</strong>rs, but you may inclu<strong>de</strong>translations of some or all Invariant Sections in addition to theoriginal versions of these Invariant Sections. You may inclu<strong>de</strong> atranslation of this License, and all the license notices in the Document,and any Warranty Disclaimers, provi<strong>de</strong>d that you also inclu<strong>de</strong> theoriginal English version of this License and the original versions ofthose notices and disclaimers. In case of a disagreement between theANOTACIONES349


ª FUOC • XP04/90786/00020Software libretranslation and the original version of this License or a notice ordisclaimer, the original version will prevail.If a section in the Document is Entitled "Acknowledgements","Dedications", or "History", the requirement (section 4) to Preserve itsTitle (section 1) will typically require changing the actual title.9. TERMINATIONYou may not copy, modify, sublicense, or distribute the Documentexcept as expressly provi<strong>de</strong>d for un<strong>de</strong>r this License. Any other attemptto copy, modify, sublicense or distribute the Document is void, andwill automatically terminate your rights un<strong>de</strong>r this License. However,parties who have received copies, or rights, from you un<strong>de</strong>r thisLicense will not have their licenses terminated so long as such partiesremain in full compliance.10. FUTURE REVISIONS OF THIS LICENSEThe Free Software Foundation may publish new, revised versions ofthe GNU Free Documentation License from time to time. Such newversions will be similar in spirit to the present version, but may differin <strong>de</strong>tail to address new problems or concerns. See http://www.gnu.org/copyleft/.ANOTACIONESEach version of the License is given a distinguishing version number.If the Document specifies that a particular numbered version of thisLicense "or any later version" applies to it, you have the option offollowing the terms and conditions either of that specified version orof any later version that has been published (not as a draft) by theFree Software Foundation. If the Document does not specify a versionnumber of this License, you may choose any version ever published(not as a draft) by the Free Software Foundation.ADDENDUM: How to use this License for your documentsTo use this License in a document you have written, inclu<strong>de</strong> a copy ofthe License in the document and put the following copyright and licensenotices just after the title page:350


<strong>Re<strong>de</strong>s</strong> <strong>de</strong> <strong>computadores</strong>ª FUOC • XP04/90786/00020Copyright (c) YEAR YOUR NAME.Permission is granted to copy, distribute and/or modify thisdocument un<strong>de</strong>r the terms of the GNU Free Documentation License,Version 1.2 or any later version published by the Free SoftwareFoundation; with no Invariant Sections, no Front-Cover Texts, and noBack-Cover Texts.A copy of the license is inclu<strong>de</strong>d in the section entitled "GNU FreeDocumentation License".If you have Invariant Sections, Front-Cover Texts and Back-CoverTexts, replace the "with...Texts." line with this:with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.If you have Invariant Sections without Cover Texts, or some othercombination of the three, merge those two alternatives to suit thesituation.If your document contains nontrivial examples of program co<strong>de</strong>, werecommend releasing these examples in parallel un<strong>de</strong>r your choiceof free software license, such as the GNU General Public License, topermit their use in free software.ANOTACIONES351


ULa universidadvirtualFormación <strong>de</strong> Posgrado

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!