martes, 12 de abril de 2011

El protocolo IP. Primera parte, introducción.

Hace unos días estuvimos discutiendo donde trabajo acerca de un par de detalles sobre IPv6 que me hicieron dudar sobre algunas de las cosas que creía aprendidas. Hemos tocado en este sitio varias veces temas relacionados, algunos con el problema de la transición, otros para dar algunos detalles muy básicos relativos al protocolo. Dado que tengo en este blog una referencia (a la derecha) a La Guía TCP/IP y mas de una vez la he mencionado como un recurso valioso relativo a redes y TCP/IP (y porque además un buen amigo hace también unos días me reclamó que "si está muy bueno pero yo sigo sin poder leerlo, está en inglés") decidí hacer una serie de traducciones sobre ella que probablemente sea larga. 
Iba a empezar directamente en los temas sobre IPv6, pero parten del hecho de que dominan la versión actual (IPv4) y hacen énfasis en las partes en que difieren, además, la transición está lejos de completarse así que iniciamos en IPv4 y relativos. 

Antes de empezar con esto debo hacer varias aclaraciones importantes. Primero, la traducción está hecha partiendo de la guía disponible libremente para su lectura online, si pueden leer la versión en inglés y creen que lo vale (yo lo creo) consideren comprar el libro o la licencia. Segundo, en este caso por razones claras no proporcionaré la versión en pdf para su descarga, no creo de todas formas que eso sea un problema. 
Entonces, lo que haré será lo siguiente. Cada lunes (sip, ya se que esta salió en martes, la próxima será en lunes) publicaré una entrada perteneciente a la serie y la etiquetaremos como Selecciones de la Guía (y Traducciones claro), para establecer orden en todo esto. Iniciaremos en la parte del protocolo IP, siguiendo con los detalles de IPv4 y hasta llegar a la traducción integra de la parte de IPv6 (de donde salió la idea). Esta primera parte abarcará los tópicos desde aquí hasta aquí en el original, es decir la introducción. El autor de la Guía es Charles M. Kozierok, he conservado los enlaces del original (como casi siempre) que refieren textos en inglés (no puedo hacerlo todo de un viaje) pero los que caigan dentro del plan tarde o temprano quedarán traducidos. 
Una última cosa, les agradeceré cualquier comentario referido a esta serie en particular, de cualquier clase, así que son libres de dar sus opiniones. Habrán notado que la frecuencia de publicación se ha ralentizado pero mi tiempo cada vez es menos, no quiere decir que esté dejando esto de lado, finalmente vuelvo al ruedo, aunque a veces significa dormir 4 horas o menos, así pues ahí les va, espero les interese y provecho! 

Contenido:
Intro.- Protocolo de Internet (IP/IPv4, IPng/IPv6) y protocolos relacionados con IP (IP NAT, IPSec, IP móvil).
1.- Conceptos y generalidades del protocolo IP
1.2- Generalidades de IP y características operacionales clave.
1.3- Funciones de IP.
1.4- Historia del protocolo IP, normas, versiones y protocolos relativos.

Intro.- Protocolo de Internet (IP/IPv4, IPng/IPv6) y protocolos relacionados con IP (IP NAT, IPSec, IP móvil).
La idea de señalar un protocolo individual como más importante que los otros en una red es algo sin sentido, si se piensa en ello. Los protocolos y las tecnologías trabajan como un equipo para lograr el objetivo de la comunicación a través de la red. Como en cualquier equipo, un miembro aislado no puede hacer el trabajo solo, no importa lo bueno que sea. Sin embargo, si tuviéramos que tratar de elegir un "jugador más valioso" en el mundo de las redes, un buen ejemplo podría ser el que tenemos en esta sección: el protocolo IP del TCP/IP.
A pesar de que va de segundo en el nombre del protocolo TCP/IP, IP es en realidad el "caballo de batalla" de TCP/IP. Implementa funciones claves en la capa de red, incluyendo direccionamiento, manipulación y ruteo de datagramas, y es la base sobre la que se construyen otros protocolos TCP/IP. Incluso protocolos más bajos en la arquitectura TCP/IP tales como ARP y PPP son más fáciles de entender cuando se sabe cómo funciona IP. Además de las funciones principales implementadas por el protocolo IP en sí, hay varios protocolos que se han desarrollado a lo largo de los años que yo llamo "relativos al protocolo IP" porque están basadas en IP, pero añaden nuevas funciones o capacidades para fines especiales.
En esta sección proporcionaré una cobertura considerable del Protocolo de Internet TCP/IP y varios protocolos que están estrechamente relacionados con el protocolo IP. Empiezo con una sección que da un vistazo general a los conceptos del protocolo IP y proporciona una visión general de cómo funciona. A continuación viene una sección mas larga que analiza el protocolo IPv4, la versión actual del protocolo que se utiliza en redes TCP/IP en todas partes. Después de esta analizo la "próxima generación" del protocolo IP, IP versión 6. Luego proporciono tres secciones que cubren protocolos relacionados con IP: el protocolo de traducción de direcciones de red (IP NAT), el protocolo de seguridad IP (IPSec), y la adaptación de IP para dispositivos móviles (Mobile IP).

Nota: El énfasis principal en esta sección está en la versión actual de IP, IPv4, ya que es el que tiene un uso más amplio en la actualidad.  Por lo tanto, aconsejamos la lectura de la sección de IPv4 antes de proceder con las otras sub-secciones, a menos que ya estén familiarizados con el. Para evitar la duplicación, la sección sobre IP versión 6 está estructurada principalmente para mostrar cómo IPv6 difiere de IPv4. Del mismo modo, las secciones sobre IP NAT, IPSec e IP móvil se basan en algunos de los conceptos de la sección de IPv4.

Información previa: Si todavía no ha leído la sección introductoria que describe TCP/IP en términos generales, puede que encuentre útil revisarla antes de seguir adelante.

Regresar al contenido
1.- Conceptos y generalidades del protocolo IP
IP es un protocolo muy importante en la interconexión, no sería una exageración decir que realmente no se puede comprender una red moderna sin un buen conocimiento del protocolo IP. Por desgracia, IP puede ser algo difícil de entender. Esto es probablemente gracias a que debido a su importancia, una gran cantidad de complejidad se ha asociado con el protocolo a lo largo de los años, para que pueda responder a las muchas demandas que se le encomiendan.
Antes de entrar en los detalles de cómo funciona, creo que vale la pena echar un vistazo de alto nivel al protocolo IP y lo que hace. En esta sección proporciono un breve examen de los conceptos básicos relacionados con el IP y cómo funciona. Comienzo con una visión general de IP, cómo funciona en términos básicos y las características más importantes de la forma en que hace su trabajo. Luego amplio esta discusión con la descripción de las principales funciones de IP, que puede ser utilizado como una introducción al resto de las secciones que lo explican con mucho más detalles. Concluyo con una breve mirada a la historia del desarrollo de IP, sus versiones, y cómo ha generado el desarrollo de varios protocolos relacionados.

Regresar al contenido
1.2- Generalidades de IP y características operacionales clave.
El Protocolo de Internet (IP Internet Protocol) es el núcleo del protocolo TCP/IP y su protocolo principal en la capa de red. La capa de red está relacionada principalmente con la entrega de datos, no entre dispositivos de la misma red física, sino entre dispositivos que pueden estar en diferentes redes que se interconectan de manera arbitraria: una interconexión de redes. IP es el mecanismo por el cual se envía estos datos en redes TCP/IP. (Tiene la ayuda de otros protocolos en la capa de red también, por supuesto!)
Veamos el modelo de capas TCP/IP y consideraremos que hace el IP desde el punto de vista de la arquitectura. Como un protocolo de capa tres, ofrece servicio a la capa cuatro de la pila TCP/IP, representada principalmente por los protocolos TCP y UDP. Este servicio consiste en tomar los datos que han sido empaquetados por TCP o UDP, manipularlos según sea necesario, y transmitirlos. Este servicio se llama a veces entrega de datagramas de interconección, como se muestra en la Figura 54. Como veremos, hay muchos detalles sobre cómo exactamente este servicio se lleva a cabo, pero en pocas palabras, eso es lo que hace IP: envía los datos del punto A al punto B a través de la interconexión de redes.

Figura 54: La función básica de IP: envío de datagramas entre redes. En este ejemplo genérico, un cliente y un servidor distantes se comunican uno con el otro enviándose datagramas a través de una serie de redes interconectadas. (Clic para ampliar)

Concepto clave: Si bien el Protocolo IP tiene muchas funciones y características, estas pueden reducirse a un solo objetivo primordial: la entrega de datagramas a través de la interconexión de las redes.

Características clave del protocolo IP.
Por supuesto, hay una miríada de formas en que IP podría haber sido implementado con el fin de realizar esta tarea. Para entender cómo los diseñadores de TCP/IP hicieron que IP funcionara, vamos a echar un vistazo a las características clave utilizadas para describir IP y a la manera general en las que opera. El Protocolo de Internet se dice que es:
  • Universalmente-Direccionado: A fin de enviar datos desde el punto A al punto B, es necesario garantizar que los dispositivos sepan identificar qué dispositivo es "el punto B".IP define el mecanismo de direccionamiento para la red y utiliza estas direcciones para sus propósitos de entrega. 
  • Independiente de los protocolos subyacentes: IP está diseñado para permitir la transmisión de datos a través de cualquier tipo de red subyacente que esté diseñada para funcionar con una pila TCP/IP. Incluye disposiciones para permitir que se adapte a las exigencias de los distintos protocolos de nivel inferior, tales como Ethernet o IEEE 802.11. IP también se puede ejecutar en los protocolos especiales de enlace de datos SLIP y PPP que se crearon para ello. Un ejemplo importante es la capacidad de IP de fragmentar grandes bloques de datos en bloques más pequeños para que coincidan con los límites de tamaño de las redes físicas, y luego reensamblarlos en el punto de destino. 
  • Entrega no orientada a conexión: IP es un protocolo no orientado a conexión. Esto significa que cuando A quiere enviar datos a B, no establece primero una conexión con B y luego envía los datos, sólo hace el datagrama y lo envía. Vea el tema en la sección de fundamentos de redes sobre los protocolos orientados y no orientados a conexión para obtener más información al respecto. 
  • Entrega poco fiable: Se dice que IP es un "protocolo poco fiable". Eso no quiere decir que un día su software IP decida ir a pescar en lugar de atender a su red. Lo que significa es que cuando los datagramas se envían desde el dispositivo A al dispositivo B, el dispositivo A sólo envía cada uno y luego pasa a la siguiente. IP no hace un seguimiento de lo que envió. No proporciona capacidades de fiabilidad o calidad del servicio, tales como protección contra errores de los datos que envía (aunque si lo hace en la cabecera IP), control de flujo o retransmisión de datagramas perdidos. Por esta razón, se llama a veces a IP un protocolo de mejor esfuerzo. Hace lo que puede para llevar los datos a donde tienen que ir, pero "no ofrece ninguna garantía" de que lleguen realmente. 
  • Entrega sin reconocimiento (Acknowledgments): De una manera similar a su naturaleza poco fiable, IP no utiliza acuses de recibo. Cuando el dispositivo B recibe un datagrama desde el dispositivo A, no devuelve una "nota de agradecimiento" para notificarle a A que el datagrama fue recibido. Deja al dispositivo A "en la oscuridad", por así decirlo.
El éxito de IP pesar de sus limitaciones.
Las tres últimas características de la lista anterior pueden ser suficientes para hacerle temblar, pensando que confiarle sus datos al protocolo IP sería algo así como confiarle un coche nuevo a su hijo de dieciséis años de edad. Si vamos a edificar toda nuestra red alrededor de este protocolo, porque diseñarlo para que funcione sin conexiones, sin garantizar que los datos vayan a llegar, y sin medios para acusar recibo de los datos?
La razón es simple: el establecimiento de conexiones, la garantía de entrega, la comprobación de errores y otras funciones similares "de aseguramiento" tiene un coste: el rendimiento. Se necesita tiempo, recursos de cómputo y de ancho de banda para realizar estas tareas, y no siempre son necesarias para cada aplicación. Ahora, tenga en cuenta que IP transporta casi todo el tráfico de usuarios en una red TCP/IP. Construir esta complejidad en IP lastraría todo el tráfico con esta sobrecarga sea o no necesaria.
La solución adoptada por los diseñadores de TCP/IP fue la de explotar el poder de la estratificación. Si las características de calidad de servicio tales como conexiones, comprobación de errores o entrega garantizada son requeridas por una aplicación, serán proporcionadas en la capa de transporte (o, posiblemente, en la capa de aplicación). Por otro lado, las aplicaciones que no necesitan estas características puede evitar el uso de ellas. Esta es, de hecho, la distinción principal entre los dos protocolos TCP/IP de la capa de transporte: TCP y UDP. TCP incluye todas estas funciones, pero es un poco más lento que UDP, UDP es espartano en sus capacidades, pero más rápido que TCP. Este sistema es realmente "lo mejor de ambos mundos". Y a diferencia de su hijo adolescente con una licencia nueva y brillante, ha demostrado funcionar bien en el mundo real.
Entonces, ¿cómo se logra la entrega de datagramas IP? En el siguiente tema discutiremos con más detalle las principales funciones que ejecuta IP para "hacer el trabajo", por así decirlo.

Regresar al contenido
1.3- Funciones de IP.
En el tema anterior he descrito el funcionamiento general de IP y reducimos su trabajo principal a la entrega de datagramas entre de redes . También explicamos las características más importantes de cómo IP hace este trabajo. Con esto como base, ahora vamos a mirar un poco más profundo, en la forma en que IP "hace el trabajo". Una buena manera de hacerlo es examinar las distintas funciones que incluye el protocolo IP.
El número exacto de las funciones de IP depende de dónde ud "trace la línea divisoria" entre determinadas actividades. Para propósitos didácticos, sin embargo, consideraremos que IP tiene cuatro funciones básicas (o más exactamente, conjunto de funciones):
  • Direccionamiento: Con el fin de realizar el trabajo de entrega de datagramas IP debe saber adonde entregarlos Por esta razón, IP incluye un mecanismo para el direccionamiento de hosts. Por otra parte, dado que IP opera entre redes diferentes, su sistema está diseñado para permitir el direccionamiento único de los dispositivos a través de redes arbitrariamente grandes. También contiene una estructura para facilitar el ruteo de datagramas a redes distantes, si fuera requerido. Dado que la mayoría de los otros protocolos TCP/IP utilizan a IP, la comprensión del esquema de direccionamiento IP es de vital importancia para la comprensión de gran parte de lo que sucede en TCP/IP. 
  • Encapsulado de datos y formateo/empaquetado: Como el protocolo de capa de red de TCP/IP, IP acepta datos de los protocolos de la capa de transporte UDP y TCP. A continuación, encapsula estos datos en un datagrama IP con un formato especial antes de transmitirlos. 
  • Fragmentación y reensamblaje: Los datagramas IP son transmitidos a la capa de enlace de datos para su transmisión en la red local. Sin embargo, el tamaño máximo de la trama de cada red física o enlace de datos que emplean IP puede ser diferente. Por esta razón, IP incluye la posibilidad de fragmentar los datagramas IP en trozos para que cada uno pueda ser transportado a través de la red local. El dispositivo receptor utiliza la función de ensamblaje para recrear el datagrama IP nuevamente.
Nota: Algunas personas ven la fragmentación y el ensamblaje como funciones distintas, aunque es evidente que son complementarias y yo las veo como parte de una misma función.
  • Enrutamiento / Entrega indirecta: Cuando un datagrama IP debe ser enviado a un destino en la misma red local, esto se puede hacer fácilmente utilizando los protocolos de redes subyacentes LAN / WLAN / WAN en lo que se llama a veces entrega directa. Sin embargo, en muchos (si no la mayoría) de los casos el destino final está en una red distante, conectada no directamente a la fuente. En esta situación, el datagrama debe ser entregado indirectamente. Esto se logra mediante el enrutamiento de los datagramas a través de dispositivos intermedios (escandalosamente llamados routers). IP logra esto con el apoyo de otros protocolos incluidos ICMP, y los protocolo TCP/IP de puerta de enlace/ruteo como RIP y BGP.
A medida que continúe en esta sección sobre IP encontrará que se han estructurado las sub-secciones que detallan la versión principal IP y los protocolos relacionados sobre la base de estas funciones generales.

Regresar al contenido
1.4- Historia del protocolo IP, normas, versiones y protocolos relativos.
Dado que el Protocolo de Internet IP es realmente el fundamento arquitectónico del resto de la suite TCP/IP, uno podría esperar que fue creado primero, y los otros protocolos edificados sobre el. Después de todo es así como se construye una estructura. La historia de IP, sin embargo, es un poco más compleja. Las funciones que realiza se definieron en el nacimiento del protocolo, pero IP en sí mismo no existía en los primeros años en que el conjunto de protocolos se definió.
Exploro los primeros días de TCP/IP en la sección que analiza las generalidades de la suite como un todo. Lo que es notable sobre el desarrollo de IP es que sus funciones eran originalmente parte del Protocolo de Control de Transmisión (TCP). Como un protocolo formal, IP "nació" cuando una primera versión de TCP desarrollada en la década de 1970 por los predecesores de la moderna Internet se dividió en TCP en la capa cuatro e IP en la capa tres. El hito clave en el desarrollo del protocolo IP fue la publicación del RFC 791, Protocolo de Internet IP, en septiembre de 1981. Esta norma, que fue una revisión de la similar RFC 760 del año anterior, definió las funcionalidades y características básicas de IP que han sido de uso generalizado durante las dos últimas décadas.

Versiones IP y números de versión.
La IP definida en el RFC 791 fue la primera versión ampliamente utilizada del protocolo de Internet IP. Curiosamente, sin embargo, no fue la versión 1 de IP, sino la versión 4!Esto por supuesto implica la existencia de versiones anteriores del protocolo en un punto. Curiosamente, sin embargo, realmente no fue así. Como he mencionado anteriormente, IP se creó cuando sus funciones se dividieron desde una primera versión del protocolo TCP que combinaba funciones de ambos TCP e IP. TCP evolucionó a través de tres versiones anteriores, y se dividió en TCP e IP de la versión 4. Ese número de versión se aplicó a los protocolos TCP e IP por un asunto de consistencia.

Concepto clave: La versión 4 del Protocolo de Internet IP es de hecho la primera versión que se desplegó ampliamente y es de amplio uso actualmente.

Así, cuando se utiliza hoy en día IP, se está utilizando la versión 4 de IP, también con frecuencia abreviada IPv4. Sin otro calificativo, es seguro asumir que "IP" significa "IP versión cuatro", al menos durante los próximos años! Este número de versión está presente en el campo correspondiente de todos los datagramas IP, como se describe en el tema en el que se discute el formato de los datagramas IP.
Dado que fue diseñado originalmente para la interconexión de una pequeña fracción del tamaño de nuestro Internet actual, IPv4 ha demostrado ser muy capaz. Varias adiciones y cambios se han hecho con el tiempo a la forma en que se utiliza IP, sobre todo en lo que respecta al direccionamiento, pero el núcleo del protocolo es básicamente lo que fue en la década de 1980. Hay una buena razón para ello: cambiar algo tan fundamental como IP requiere un gran esfuerzo de desarrollo y también introduce complejidades durante la transición.
A pesar de lo bien que nos ha servido IPv4, se aceptó que por diversas razones, sería necesaria con el tiempo una nueva versión de IP. Debido a las dificultades asociadas con la implementación de un cambio tan importante, el desarrollo de esta nueva versión de IP en realidad ha estado en marcha desde mediados de la década de 1990. Esta nueva versión de IP se llama formalmente Protocolo de Internet versión 6 (IPv6) y también a veces se denomina IP de Próxima Generación o IPng. Discutiremos las razones por las que ha sido desarrollado IPv6 y en qué se diferencia de IPv4 en detalle en la sección de IPv6 de esta Guía.
Una pregunta natural en este punto del curso es: ¿qué pasó con la versión 5 de IP? La respuesta es: no existe. Si bien esto puede parecer confuso, la versión 5, de hecho, fue deliberadamente omitida para evitar confusiones, o por lo menos para rectificar. El problema con la versión 5 se refiere a un protocolo TCP/IP experimental llamado ISP (Internet Stream Protocol, Protocolo de flujo de Internet) Versión 2, definido originalmente en el RFC 1190. Este protocolo fue visto inicialmente por algunos como un par del protocolo IP en la capa de Internet en la arquitectura TCP/IP, y en su norma, estos paquetes se les asignó IP versión 5 para diferenciarlos de los paquetes IP "normales" (IPv4). Este protocolo al parecer no llegó a ninguna parte, pero para estar absolutamente seguros de que no habría confusión, la versión 5 se ha omitido en favor de la versión 6.


Protocolos relativos a IP.
Además de nuestras versiones "viejas" y "nuevas" de IP, existen varios protocolos que yo llamo relativos a IP. Ellos no son parte de IP hablando propiamente, sino protocolos que añaden o amplían las capacidades de las funciones de IP para circunstancias especiales. Estos son:

El resto de la discusión sobre IP se divide en cinco secciones que corresponden a IPv4, IPv6, IP NAT, IPSec e IP móvil.

Regresar al contenido