PROTOCOLO TCP/IP

Versión para imprimirVersión para imprimir

Protocolo tcp/ip:

En primer lugar vamos a empezar definiendo lo que es un protocolo, un protocolo no es mas que un conjunto de reglas establecidas entre dos dispositivos para permitir la comunicación entre ambos, en concreto los protocolos TCP/IP es un protocolo DARPA que permite la transmisión confiable de paquetes de datos mediante redes.
Este protocolo fue desarrollado por el departamento de defensa de los Estados Unidos, ejecutándolo por primera vez en 1972 en el ARPANET una red de área extensa del departamento de defensa.
En concreto, TCP/IP es un conjunto de protocolos, la sigla TCP/IP significa "Protocolo de control de transmisión/Protocolo de Internet" y se pronuncia "T-C-P-I-P". Proviene de los nombres de dos protocolos importantes del conjunto de protocolos, es decir, del protocolo TCP y del protocolo, en concreto, TCP se encarga de contabilizar las transmisión de datos entre computadores y registrar si hay o no errores, mientas que IP realiza la transferencia de datos, todos juntos llegan a ser más de 100 protocolos diferentes definidos en este conjunto.
Se considera la base del Internet ya que representa todas las reglas de comunicación para ello y se basa en la idea de brindar una dirección IP a cada equipo de la red para poder enrutar paquetes de datos.
Es utilizado para enlazar computadoras que utilizan diferentes sistemas operativos, incluyendo PC, mini computadoras, Mac`s y servidores de redes de área local y área extensa ya que no dependen del sistema operativo ni del computador, sino que cualquiera puede desarrollar productos que se ajusten a las especificaciones de TCP/IP.
Además también tiene otro tipo de características que caben destacar:
 

Buena recuperación de los fallos
Habilidad de añadir redes sin interrumpir los servicios ya existentes.
Manejo de alto porcentaje de errores
Bajos gastos indirectos de información
 

Como hemos nombrado anteriormente el origen de TCP/IP fue diseñado por propósitos relacionados al Departamento de Defensa de Estados Unidos, debido a esto lo que ahora hemos nombrado como características antes eran requisitos de diseño, la idea de “una buena recuperación de los fallos” fue que si una parte de la red fuera dañada durante un ataque, las piezas de red restantes deben seguir funcionando adecuadamente; lo mismo para la capacidad de añadir nuevas redes sin interrupción a los servicios ya existentes. La habilidad de manejar gran porcentaje de errores fue implantado para que si un paquete de información se pierde al recorrer una ruta habría un mecanismo que asegura que este llegará a su destino mediante otra ruta y por último la razón por la cual TCP/IP es tan eficiente son sus gastos indirectos bajos. Esto no tiene una contraparte en su simplicidad y rapidez.
Para poder aplicar el modelo TCP/IP en cualquier equipo, es decir, independientemente del sistema operativo, el sistema de protocolos TCP/IP se ha dividido en diversos módulos. Cada uno de éstos realiza una tarea específica. Además, estos módulos realizan sus tareas uno después del otro en un orden específico. Ésta es la razón por la cual se habla de modelo de capas.
El término capa se utiliza para reflejar el hecho de que los datos que viajan por la red atraviesan distintos niveles de protocolos. Durante una transmisión, los datos cruzan cada una de las capas en el nivel del equipo remitente. En cada capa, se le agrega información al paquete de datos. Esto se llama encabezado, es decir, una recopilación de información que garantiza la transmisión. En el nivel del equipo receptor, cuando se atraviesa cada capa, el encabezado se lee y después se elimina. Entonces, cuando se recibe, el mensaje se encuentra en su estado original.

En cada nivel, el paquete de datos cambia su aspecto porque se le agrega un encabezado. Por lo tanto, las designaciones cambian según las capas:
 

• el paquete de datos se denomina mensaje en el nivel de la capa de aplicación;
• el mensaje después se encapsula en forma de segmento en la capa de transporte;
• una vez que se encapsula el segmento en la capa de Internet, toma el nombre de datagrama;
• finalmente, se habla de trama en el nivel de capa de acceso a la red.

El objetivo de un sistema en capas es dividir el problema en diferentes partes (las capas), de acuerdo con su nivel de abstracción.
Cada capa del modelo se comunica con un nivel adyacente (superior o inferior). Por lo tanto, cada capa utiliza los servicios de las capas inferiores y se los proporciona a la capa superior.
Pensemos en los módulos del software de protocolos como una pila vertical constituida por capas. Cada capa tiene la responsabilidad de manejar una parte del problema.
Una vez que se toma la decisión de subdividir los problemas de comunicación en cuatro subproblemas y organizar el software de protocolo en módulos, de manera que cada uno maneja un problema, debemos plantearnos qué tipo de funciones debemos instalar en cada módulo, esta pregunta sería difícil de responder por varias razones. En primer lugar, un grupo de objetivos y condiciones determinan un problema de comunicación en particular, es posible elegir una organización que optimice un software de protocolos para ese problema. Segundo, incluso cuando se consideran los servicios generales al nivel de red, como un transporte confiable es posible seleccionar entre distintas maneras de resolver el problema. Tercero, el diseño de una arquitectura de red y la organización del software de protocolo esta interrelacionado; no se puede diseñar a uno sin considera al otro.

Descripción de las capas según orden de menor a mayor:
 

* CAPA DE ACCESO A LA RED:
 

Es la primera capa de la pila TCP/IP. consta de una capa de interfaz de red responsable de aceptar los datagramas IP y transmitirlos hacia una red específica, ofrece la capacidad de acceder a cualquier red física, es decir, brinda los recursos que se deben implementar para transmitir datos a través de la red.
Por lo tanto, la capa de acceso a la red contiene especificaciones relacionadas con la transmisión de datos por una red física, cuando es una red de área local, como es nuestro caso con Ethernet, conectada mediante línea telefónica u otro tipo de conexión a una red. Trata los siguientes conceptos:
 

• enrutamiento de datos por la conexión;
• coordinación de la transmisión de datos (sincronización);
• formato de datos;
• conversión de señal (análoga/digital);
• detección de errores a su llegada.
• Etcétera.

Afortunadamente, todas estas especificaciones son invisibles al ojo del usuario, ya que en realidad es el sistema operativo el que realiza estas tareas, mientras los drivers de hardware permiten la conexión a la red (por ejemplo, el driver de la tarjeta de red).

* LA CAPA DE INTERNET:

La capa de Internet es la capa "más importante" (si bien todas son importantes a su manera), ya que es la que define los datagramas y administra las nociones de direcciones IP. Esta maneja la comunicación de una máquina a otra, acepta una solicitud para enviar un paquete desde la capa de transporte, junto con una identificación de la máquina, hacia la que se debe enviar el paquete. La capa Internet también maneja la entrada de datagramas, verifica su validez y utiliza un algoritmo de ruteo para decidir si el datagrama debe procesarse de manera local o debe ser transmitido. Para el caso de los datagramas direccionados hacia la máquina local, el software de la capa de red de redes borra el encabezado del datagrama y selecciona, de entre varios protocolos de transporte, un protocolo con el que manejará el paquete. Por último, envía los mensajes ICMP de error y control necesarios y maneja todos los mensajes ICMP entrantes.

Permite el enrutamiento de datagramas (paquetes de datos) a equipos remotos junto con la administración de su división y ensamblaje cuando se reciben.
La capa de Internet contiene 5 protocolos:
 

• el protocolo IP;
• el protocolo ARP;
• el protocolo ICMP;
• el protocolo RARP;
• el protocolo IGMP.

Entre los que caben destacar los tres primeros.
 

**protocolo IP**
Su significado es Protocolo de Internet, de ahí sus siglas (IP), es un protocolo no orientado a conexión, usado tanto por el origen como por el destino para la comunicación de datos, a través de una red de paquetes conmutados no fiable y de mejor entrega posible sin garantías, además no corrige ni detecta errores en la información.
Los datos en una red basada en IP son enviados en bloques conocidos como paquetes o datagramas. En particular, en IP no se necesita ninguna configuración antes de que un equipo intente enviar paquetes a otro con el que no se había comunicado antes.
IP provee un servicio de datagramas no fiable (también llamado del mejor esfuerzo (best effort), lo hará lo mejor posible pero garantizando poco). IP no provee ningún mecanismo para determinar si un paquete alcanza o no su destino y únicamente proporciona seguridad de sus cabeceras y no de los datos transmitidos. Por ejemplo, al no garantizar nada sobre la recepción del paquete, éste podría llegar dañado, en otro orden con respecto a otros paquetes, duplicado o simplemente no llegar. Si se necesita fiabilidad, ésta es proporcionada por los protocolos de la capa de transporte.
Si la información a transmitir, es decir, los datagramas a transmitir supera el tamaño máximo "negociado" (MTU) en el tramo de red por el que va a circular podrá ser dividida en paquetes más pequeños, y re ensamblada luego cuando sea necesario. Estos fragmentos podrán ir cada uno por un camino diferente dependiendo de como estén de congestionadas las rutas en cada momento.

**Protocolo ARP**
Permite que se conozca la dirección física de una tarjeta de interfaz de red correspondiente a una dirección IP. Por eso se llama Protocolo de Resolución de Dirección (en inglés ARP significa Address Resolution Protocol).
Cada equipo conectado a la red tiene un número de identificación de 48 bits(Dirección física). Éste es un número único establecido en la fábrica en el momento de fabricación de la tarjeta. Sin embargo, la comunicación en Internet no utiliza directamente este número (ya que las direcciones de los equipos deberían cambiarse cada vez que se cambia la tarjeta de interfaz de red), sino que utiliza una dirección lógica asignada por un organismo, la dirección IP.
El funcionamiento del protocolo ARP es bastante simple, cuando una máquina desea enviar un mensaje a otra máquina que está conectada a través de una red ethernet se encuentra con un problema: la dirección IP de la máquina en cuestión es diferente a la dirección física de la misma. La máquina que quiere enviar el mensaje sólo conoce la dirección IP del destino, por lo que tendrá que encontrar un modo de traducir la dirección IP a la dirección física, para ello se utilizará el protocolo ARP.
Para que las direcciones físicas se puedan conectar con las direcciones lógicas, el protocolo ARP interroga a los equipos de la red para averiguar sus direcciones físicas y luego crea una tabla de búsqueda entre las direcciones lógicas y físicas en una memoria caché, esta tabla denominada Tabla de Direcciones ARP contiene la correspondencia entre direcciones IP y direcciones físicas utilizadas recientemente. Si la dirección solicitada se encuentra en esta tabla el proceso se termina en este punto, puesto que la máquina que origina el mensaje ya dispone de la dirección física de la máquina destino.
Si la dirección buscada no está en la tabla el protocolo ARP envía un mensaje a toda la red. Cuando un ordenador reconoce su dirección IP envía un mensaje de respuesta que contiene la dirección física. Cuando la máquina origen recibe este mensaje ya puede establecer la comunicación con la máquina destino, y esta dirección física se guarda en la Tabla de direcciones ARP y a continuación podrá establecerse la comunicación.
Por ejemplo Si queremos enviar un paquete de “A” a “B” que se encuentra en la misma red lo primero que hace “A” es comprobar en su tabla ARP si se encuentra la dirección MAC de “B” si es así se utiliza si no se enviara el correspondiente paquete broadcast esperando la respuesta de la maquina cuya dirección IP corresponda con la preguntada añadiendo un nuevo registro a la tabla. Estas entradas se borran cada cierto tiempo.
En un segundo caso si “A” quiere enviar un paquete a “B” que no esta en su misma red lo que hace “A” es enviarlo a través de la dirección física de su router de salida, para ello consulta la tabla ARP realizando el correspondiente intercambio de mensajes si dicha entrada no se encuentra en la tabla. Una vez en el router este consulta su tabla de encaminamiento enviando el paquete al próximo nodo y así sucesivamente hasta que le paquete llega a un router de la red en la que se encuentre la IP destino. Una vez allí el router se encarga de averiguar la dirección física consultando su tabla ARP o preguntando con mensajes correspondientes.

**Protocolo ICMP**
El Protocolo de Mensajes de Control y Error de Internet, ICMP, tiene un formato simple, su utilidad está en controlar si un paquete no puede alcanzar su destino, si su vida ha expirado, si el encabezamiento lleva un valor no permitido, si es un paquete de eco o respuesta, etc. Es decir, se usa para manejar mensajes de error y de control necesarios para los sistemas de la red, informando con ellos a la fuente original para que evite o corrija el problema detectado. ICMP proporciona así una comunicación entre el software IP de una máquina y el mismo software en otra, ya que el protocolo IP escasea de dichos controles.
El protocolo ICMP solamente informa de incidencias en la entrega de paquetes o de errores en la red en general, pero no toma decisión alguna al respecto (esto es tarea de las capas superiores que se explicará un poco mas adelante). Por lo tanto, el protocolo ICMP es usado por todos los routers para indicar un error (llamado un problema de entrega).

 

 

Como vemos en la imagen, los mensajes ICMP se transmiten como datagramas IP normales, con el campo de cabecera "protocolo" con un valor 1, y comienzan con un campo de 8 bits que define el tipo de mensaje de que se trata. A continuación viene un campo código, de o bits, que a veces ofrece una descripción del error concreto que se ha producido y después un campo suma de control, de 16 bits, que incluye una suma de verificación de errores de transmisión. Tras estos campos viene el cuerpo del mensaje, determinado por el contenido del campo "tipo". Contienen además los 8 primeros bytes del datagrama que ocasionó el error.
Los mensajes de error ICMP se envían a través de la red en forma de datagramas, como cualquier otro dato. Por lo tanto, los mismos mensajes de error pueden contener errores.
Sin embargo, si existe un error en un datagrama que lleva un mensaje ICMP, no se envía ningún mensaje de error para evitar el efecto "bola de nieve", si hay un incidente en la red.
Los principales tipos de mensaje ICMP son:
Mensajes informativos
Entre estos mensajes hay algunos de suma importancia, como los mensajes de petición de ECO (tipo 8) y los de respuesta de Eco (tipo 0). Las peticiones y respuestas de eco se usan en redes para comprobar si existe una comunicación entre dos host a nivel de capa de red, por lo que nos pueden servir para identificar fallos en este nivel, ya que verifican si las capas física (cableado), de enlace de datos (tarjeta de red) y red (configuración IP) se encuentran en buen estado y configuración.
Mensajes de error
En el caso de obtener un mensaje ICMP de destino inalcanzable, con campo "tipo" de valor 3, el error concreto que se ha producido vendrá dado por el valor del campo "código", pudiendo presentar los siguientes valores que se muestran en la parte derecha.
Este tipo de mensajes se generan cuando el tiempo de vida del datagrama a llegado a cero mientras se encontraba en tránsito hacia el host destino (código=0), o porque, habiendo llegado al destino, el tiempo de reensamblado de los diferentes fragmentos expira antes de que lleguen todos los necesarios (código=1).
Los mensajes ICMP de tipo= 12 (problemas de parámetros) se originan por ejemplo cuando existe información inconsistente en alguno de los campos del datagrama, que hace que sea imposible procesar el mismo correctamente, cuando se envían datagramas de tamaño incorrecto o cuando falta algún campo obligatorio.
Por su parte, los mensajes de tipo=5 (mensajes de redirección) se suelen enviar cuando, existiendo dos o más routers diferentes en la misma red, el paquete se envía al router equivocado. En este caso, el router receptor devuelve el datagrama al host origen junto con un mensaje ICMP de redirección, lo que hará que éste actualice su tabla de enrutamiento y envíe el paquete al siguiente router.
 

**Protocolo RARP**
El protocolo RARP (Protocolo de Resolución de Dirección Inversa) es mucho menos utilizado que el ARP, el protocolo RARP se usa esencialmente para las estaciones de trabajo sin discos duros que desean conocer su dirección física.
El protocolo RARP le permite a la estación de trabajo averiguar su dirección IP desde una tabla de búsqueda entre las direcciones MAC (direcciones físicas) y las direcciones IP alojadas por una pasarela ubicada en la misma red de área local (LAN).
Para poder hacerlo, el administrador debe definir los parámetros de la pasarela (router) con la tabla de búsqueda para las direcciones MAC/IP. A diferencia del ARP, este protocolo es estático  lo que implica que la tabla de búsqueda debe estar siempre actualizada para permitir la conexión de nuevas tarjetas de interfaz de red.
El protocolo RARP tiene varias limitaciones:
Se necesita mucho tiempo de administración para mantener las tablas importantes en los servidores, esto se ve reflejado aún más en las grandes redes lo que plantea problemas de recursos humanos, necesarios para el mantenimiento de las tablas de búsqueda y de capacidad por parte del hardware que aloja la parte del servidor del protocolo RARP.
El protocolo RARP permite que varios servidores respondan a solicitudes, pero no prevé mecanismos que garanticen que todos los servidores puedan responder, ni que respondan en forma idéntica, por lo que, en este tipo de arquitectura, no podemos confiar en que un servidor RARP sepa si una dirección MAC se puede conectar con una dirección IP, porque otros servidores ARP pueden tener una respuesta diferente.
Otra limitación del protocolo RARP es que un servidor sólo puede servir a una LAN.
Para solucionar los dos primeros problemas de administración, el protocolo RARP se puede remplazar por el protocolo DRARP, que es su versión dinámica.

**Protocolo IGMP**
El protocolo de red IGMP (Protocolo de administración de grupos de Internet (IGMP)) se utiliza para intercambiar información acerca del estado de pertenencia entre enrutadores IP que admiten la multidifusión y miembros de grupos de multidifusión. Los hosts miembros individuales informan acerca de la pertenencia de hosts al grupo de multidifusión y los enrutadores de multidifusión sondean periódicamente el estado de la pertenencia.
Además de definir las extensiones de direcciones y hosts para la compatibilidad de los hosts IP con multidifusión, esta RFC también define la versión 1 del Protocolo de administración de grupos de Internet (IGMP). RFC 2236, "Internet Group Management Protocolo (IGMP), versión 2" (Protocolo de administración de grupos de Internet (IGMP), versión 2) define la versión 2 de IGMP. Ambas versiones de IGMP proporcionan un protocolo para intercambiar y actualizar información acerca de la pertenencia de hosts a grupos de multidifusión específicos. Además, la familia Windows Server 2003 admite IGMP versión 3, descrito en el borrador Internet "Internet Group Management Protocolo, versión 3" (Protocolo de administración de grupos de Internet, versión 3). Mediante IGPM versión 3, los hosts pueden especificar su interés en recibir tráfico de multidifusión de los orígenes especificados o de todos los orígenes a excepción de un conjunto específico de orígenes. La versión mas usada es la 2.

*Capa de transporte*
La principal tarea de la capa de transporte es proporcionar la comunicación entre un programa de aplicación y otro, (este tipo de comunicación se conoce frecuentemente como comunicación punto a punto) el problema es identificar estas aplicaciones, de hecho, según el equipo y su sistema operativo, la aplicación puede ser un programa, una tarea, un proceso, etc. Además, el nombre de la aplicación puede variar de un sistema a otro sistema, por ello, se ha implementado un sistema de numeración para poder asociar un tipo de aplicación con un tipo de datos, estos identificadores se le conocen como puertos.
Además esta capa regula el flujo de información, también  puede proporcionar un transporte confiable, asegurando que los datos lleguen sin errores y en secuencia, para hacer esto, el software de protocolo de transporte tiene el lado de recepción enviando acuses de recibo de retorno y la parte de envío retransmitiendo los paquetes perdidos.
El software de transporte divide el flujo de datos que se está enviando en pequeños fragmentos (por lo general conocidos como paquetes) y pasa cada paquete, con una dirección de destino, hacia la siguiente capa de transmisión, aun cuando en el esquema anterior se utiliza un solo bloque para representar la capa de aplicación, una computadora de propósito general puede tener varios programas de aplicación accesando la red de redes al mismo tiempo.
La capa de transporte debe aceptar datos desde varios programas de usuario y enviarlos a la capa del siguiente nivel, para hacer esto, se añade información adicional a cada paquete, incluyendo códigos que identifican qué programa de aplicación envía y qué programa debe recibir, así como una suma de verificación para verificar que el paquete ha llegado intacto y utiliza el código de destino para identificar el programa de aplicación en el que se debe entregar.
La capa de transporte contiene dos protocolos que permiten que dos aplicaciones puedan intercambiar datos independientemente del tipo de red (es decir, independientemente de las capas inferiores). Estos dos protocolos son los siguientes:

**Protocolo TCP**
TCP, significa Protocolo de Control de Transmisión, en el nivel de aplicación, posibilita la administración de datos que vienen del nivel más bajo del modelo, o van hacia él, (es decir, el protocolo IP). Cuando se proporcionan los datos al protocolo IP, los agrupa en datagramas IP, fijando el campo del protocolo en 6 (para que sepa con anticipación que el protocolo es TCP).
TCP es un protocolo orientado a conexión, es decir, que permite que dos máquinas que están comunicadas controlen el estado de la transmisión.
Las principales características del protocolo TCP son las siguientes:
• Permite colocar los datagramas nuevamente en orden cuando vienen del protocolo IP.
• Permite que el monitoreo del flujo de los datos y así evitar la saturación de la red.
• Permite que los datos se formen en segmentos de longitud variada para "entregarlos" al protocolo IP.
• Permite multiplexar los datos, es decir, que la información que viene de diferentes fuentes en la misma línea pueda circular simultáneamente.
• Por último, permite comenzar y finalizar la comunicación amablemente.
Objetivos de TCP:
• Con el uso del protocolo TCP, las aplicaciones pueden comunicarse en forma segura (gracias al sistema de acuse de recibo del protocolo TCP) independientemente de las capas inferiores. Esto significa que los routers (que funcionan en la capa de Internet) sólo tienen que enviar los datos en forma de datagramas, sin preocuparse con el monitoreo de datos porque esta función la cumple la capa de transporte (o más específicamente el protocolo TCP).
• Durante una comunicación usando el protocolo TCP, las dos máquinas deben establecer una conexión. La máquina emisora (la que solicita la conexión) se llama cliente, y la máquina receptora se llama servidor. Por eso es que decimos que estamos en un entorno Cliente-Servidor.
Las máquinas de dicho entorno se comunican en modo en línea, es decir, que la comunicación se realiza en ambas direcciones.
• Para posibilitar la comunicación y que funcionen bien todos los controles que la acompañan, los datos se agrupan; es decir, que se agrega un encabezado a los paquetes de datos que permitirán sincronizar las transmisiones y garantizar su recepción.
• Otra función del TCP es la capacidad de controlar la velocidad de los datos usando su capacidad para emitir mensajes de tamaño variable. Estos mensajes se llaman segmentos.
**Protocolo UDP**
El protocolo UDP, Protocolo de datagrama de usuario, proporciona una comunicación muy sencilla entre las aplicaciones de dos ordenadores. Al igual que el protocolo IP, UDP no está orientado a conexión, es decir, no se establece una conexión previa con el otro extremo para transmitir un mensaje UDP. Los mensajes se envían sin más y éstos pueden duplicarse o llegar desordenados al destino, perderse o llegar dañados, por lo que no es fiable por lo que las aplicaciones, deberá programarse teniendo en cuenta que la información puede no llegar de forma correcta.
UDP utiliza el protocolo IP para transportar sus mensajes, no añade ninguna mejora en la calidad de la transferencia aunque si incorpora los puertos origen y destino en su formato de mensaje.
*Capa de aplicación:
La capa de aplicación se encuentra en la parte superior de las capas del protocolo TCP/IP. Contiene las aplicaciones de red que permiten la comunicación mediante las capas inferiores, por lo tanto, el software en esta capa se comunica mediante uno o dos protocolos de la capa inferior (la capa de transporte), es decir, TCP o UDP, (nombrados anteriormente), cada programa de aplicación selecciona el tipo de transporte necesario, el cual puede ser una secuencia de mensajes individuales o un flujo continuo de octetos, el programa de aplicación pasa los datos en la forma requerida hacia el nivel de transporte para su entrega.
Existen diferentes tipos de aplicaciones para esta capa, pero la mayoría son servicios de red o aplicaciones brindadas al usuario para proporcionar la interfaz con el sistema operativo. Se pueden clasificar según los servicios que brindan:
• servicios de administración de archivos e impresión (transferencia);
• servicios de conexión a la red;
• servicios de conexión remota;
• diversas utilidades de Internet.