Capa de Acceso a la Red
Los protocolos de esta capa proporcionan al sistema los medios para enviar los datos a otros dispositivos conectados a la red. Es en esta capa donde se define como usar la red para enviar un datagrama. Es la única capa de la pila cuyos protocolos deben conocer los detalles de la red física. Este conocimiento es necesario pues son estos protocolos los que han de dar un formato correcto a los datos a transmitir, de acuerdo con las restricciones que nos imponga, físicamente, la red.
Las principales funciones de los protocolos definidos en esta capa son:
- Encapsulación de los datagramas dentro de los marcos a transmitir por la red.
- Traducción de las direcciones IP a las direcciones físicas de la red.
Capa de Internet
El protocolo mas importante de esta capa y piedra base de toda la Internet es el IP. Este protocolo proporciona los servicios básicos de transmisión de paquetes sobre los cuales se construyen todas las redes TCP/IP. Las funciones de este protocolo incluyen:
- Definir del datagrama, que es la unidad básica de transmisión en Internet.
- Definir el esquema de direccionamiento de Internet.
- Mover los datos entre la capa de acceso a red y la capa de transporte.
- Encauzar los datagramas hacia sistemas remotos. (Routing)
- Realizar la fragmentación y re-ensamblaje de los datagramas.
El protocolo IP es un "protocolo sin conexión", es decir, no intercambia información de control para establecer una conexión antes de enviar los datos. En caso de que dicha conexión fuese necesaria, el IP delegará tal labor en protocolos de otras capas.
Este protocolo tampoco realiza detección de errores o recuperación de datos ante los mismos.
Los protocolos TCP/IP fueron diseñados para el intercambio de datos en ARPANET, que era una red de intercambio de paquetes. Un paquete es un bloque de datos que lleva consigo la información necesaria para enviarlo. Para aclarar esto podríamos comparar un paquete con una tarjeta postal, en la que no solo escribimos un mensaje sino que además añadimos los datos pertinentes para que llegue a su destinatario, nombre, dirección, etc.
Una red de intercambio de paquetes usa esta información para cambiar los paquetes de una red a otra moviéndolos hacia su destino final. Cada paquete navega por la red independientemente de cualquier otro paquete.
El datagrama es el formato del paquete que define el IP. Un datagrama consta de dos partes, la cabecera y los datos.
Estructura de un paquete IPv4
Bits 0 - 3 |
4 - 7 |
8 - 15 |
16 - 18 |
19 - 31 |
Versión |
Longitud Encabezado IP |
Tipo de servicio |
Longitud Total |
|
Identificación |
Flags |
Offset del fragmento |
||
Tiempo de vida |
Protocolo |
Chequeo de cabecera |
||
Dirección de origen |
||||
Dirección de destino |
||||
Opciones |
||||
Datos |
A la hora de enviar un datagrama, el IP comprueba la dirección de destino. Aquí nos surgen dos posibilidades:
- Que el destino sea una maquina de la red local. En este caso se envía el datagrama directamente a dicha maquina y listo.
- Que el destino sea una maquina perteneciente a otra red física. En este caso el IP encauzara el datagrama a través de gateways hacia su destino. El termino ingles de este encauzamineto, normalmente mas usado que el español, es routing.
Con la segunda posibilidad surge un problema más. Puesto que el datagrama va a atravesar distintas redes físicas, puede darse el caso de que su tamaño no sea adecuado para la transmisión a través de estas redes, pues cada tipo de red define un tamaño máximo para los paquetes que pueden circular por ella.
En este caso, cuando llegue al gateway, el IP fragmentará el datagrama en piezas mas pequeñas, y a efectos de facilitar su ensamblaje posterior en la cabecera de cada pieza resultante se especificará a que datagrama pertenece y que posición tiene la pieza dentro del datagrama. Para el ensamblaje de las piezas se comprueban estos campos de la cabecera y otro mas en el que se indica si hay mas fragmentos que ensamblar o no.
Una vez que el datagrama llega a la maquina de destino, y en concreto a la capa de Internet, el IP habrá de enviarlo al protocolo correspondiente de la capa de transporte. Los protocolos de dicha capa tienen asignados unos números que los identifican y que quedan registrados en la cabecera del datagrama.
Otro protocolo definido en la capa de Internet es el ICMP, protocolo de control de mensajes en Internet. Dicho protocolo usa el sistema de envío de mensajes del IP para enviar sus propios mensajes.
Los mensajes enviados por este protocolo realizan las siguientes funciones:
- Control de flujo: Cuando los datagramas llegan demasiado rápido a una maquina, de forma que esta no tiene tiempo para procesarlos, el ICMP de dicha maquina enviará al emisor de los datagramas un mensaje para que detenga el envío temporalmente.
- Detección de destinos inalcanzables: Cuando no se puede alcanzar la dirección de destino de un datagrama, la máquina que detecta el problema envía a la dirección de origen de ese datagrama un mensaje notificando dicha situación.
- Redireccion de rutas: Cuando a un gateway, le llega un datagrama a enviar a una máquina, y existe otro gateway que resulta ser una opción mejor para enviar dicho datagrama, el primer gateway envía al emisor un mensaje comunicándole dicha situación para que el envío se haga a través del segundo gateway.
- Chequeo de sistemas remotos: Una máquina que necesite saber si otra máquina de otra red está conectada y operacional le enviara un mensaje, llamado echo, que la otra máquina devolverá si está conectada y operacional. El comando ping de Unix utiliza este protocolo.
Capa de transporte
Los dos protocolos más importantes de esta capa son el TCP y el UDP. El primero se encarga de los servicios de envío de datos con detección y corrección de errores. El UDP proporciona servicios de envío de datagramas sin conexión.
El protocolo UDP proporciona a los programas de aplicación acceso directo al envío de datagramas, parecido al servicio que proporciona el IP. Este permite a las aplicaciones intercambiar mensajes con un mínimo de supervisión por parte del protocolo.
Este protocolo se usa principalmente en:
- Envío de pequeñas cantidades de datos, pues seria mas costoso supervisar el establecimiento de conexiones y asegurar un envío fidedigno que retransmitir el conjunto de datos completo.
- Aplicaciones que se ajustan al modelo "pregunta-respuesta". La respuesta se puede usar como una confirmación a la pregunta. Si no se recibe respuesta, en un cierto periodo de tiempo, la aplicación, simplemente, vuelve a enviar la pregunta.
- Aplicaciones que tienen su propio sistema de verificar que el envío de datos ha sido fidedigno y no requieren este servicio de los protocolos de la capa de transporte.
Las aplicaciones que requieren de la capa de transporte un servicio de transmisión de datos fidedigno, usan el protocolo TCP. Este protocolo verifica que los datos se envíen a través de la red adecuadamente y en la secuencia apropiada. Las características de este protocolo son:
- Fiabilidad.
- Orientado a la conexión y al flujo de datos.
Para lograr la fiabilidad, el TCP, se basa en un mecanismo de confirmación positiva con retransmisión (PAR, del inglés, Positive Acknowledgement with Retransmision).
Básicamente, este mecanismo consiste en que el emisor envíe los datos una y otra vez, hasta que reciba una confirmación de la llegada de los datos en perfecto estado.
Cada segmento de datos contiene un campo de chequeo que el sistema receptor usa para verificar la integridad de los datos. Para cada segmento recibido correctamente se envía una confirmación. Los segmentos dañados se eliminan. Tras un cierto periodo de tiempo, el emisor, volverá a enviar todos aquellos segmentos para los que no ha recibido confirmación.
El protocolo TCP es un protocolo orientado a la conexión. Este protocolo establece una conexión entre las dos máquinas que se comunican. Se intercambia información de control antes y después de la transmisión de los datos.
El TCP ve los datos que envía como un flujo continuo de bytes, no como paquetes independientes. Debido a esto, es necesario enviarlos en la secuencia adecuada. El TCP, se cuida de mantener esta secuencia mediante los campos de número de secuencia y número de confirmación de la cabecera de segmento.
En el paso, de información de control, que realiza el TCP, antes de establecer la conexión, se intercambian tres paquetes. Dicho intercambio se denomina "apretón a tres vías".
En el primer segmento, el emisor comunica al receptor, el número inicial de su secuencia. Esto se realiza poniendo este número en el campo número de secuencia de la cabecera del segmento, y activando el bit de sincronización de números de secuencia.
Cuando este segmento llega al receptor este contesta enviando:
- Su propio número inicial de secuencia, en el campo de número de secuencia y activando el bit de sincronización.
- La confirmación de recepción, indicando en el campo de confirmación el número inicial de secuencia del emisor y activando el bit de confirmación.
Cuando este segundo segmento llega al emisor este confirma la recepción del mismo enviando un tercer segmento con el número de inicio de secuencia del receptor en el campo de número de confirmación y el bit de confirmación activado.
En este momento, el emisor tiene plena conciencia de que la maquina receptora esta operacional y lista para recibir sus datos, así pues se inicia el envío de los mismos.
Según se van recibiendo datos, el receptor irá indicando al emisor la correcta recepción de los mismos. Esto se realiza periódicamente, enviando al emisor un segmento con el bit de confirmación activado y el número de secuencia del ultimo byte recibido correctamente. De esta forma nos evitamos el tener que enviar una confirmación con cada byte recibido.
En el campo de ventana de la cabecera de este mismo segmento se indica el número de bytes que el receptor es capaz de aceptar. Este número indica al emisor que puede continuar enviando segmentos siempre y cuando la longitud en bytes de estos sea inferior al tamaño de la ventana. Un tamaño de ventana cero indicará al emisor que detenga el envío de segmentos hasta recibir un segmento con tamaño de ventana mayor que cero.
Cuando el emisor termina de enviar los datos se establece otro "apretón a tres vías" que difiere del que ha tenido lugar como inicio de la conexión únicamente, en que en vez de llevar activado el bit de sincronización, los segmentos llevaran activado el bit de fin de transmisión de datos.
El TCP es también responsable de enviar los datos recibidos a la aplicación correcta. La aplicación a la que se destina los datos esta identificada por un número de 16 bits llamado número de puerto. El número de puerto, tanto del origen como del destino, se especifica en la cabecera de cada segmento.
Capa de aplicación
En esta capa se incluyen los procesos que usan los protocolos de la capa de transporte. Hay muchos protocolos de aplicación La mayor parte proporcionan servicios de usuario y constantemente se añaden nuevos servicios. Algunos de los protocolos mas conocidos de esta capa son:
- Telnet: Protocolo que permite la conexión remota de terminales.
- FTP: Utilizado para efectuar transferencias interactivas de ficheros.
- SMTP: Este es el protocolo que nos permite enviar correo a través de la red.
Estos tres protocolos hacen uso de los servicios orientados a la conexión del TCP.
Algunos protocolos que, en cambio, usan los servicios del UDP son:
- DNS: Protocolo que traduce en direcciones IP los nombres asignados a los dispositivos de la red.
- NFS: Protocolo que permite la compartición de ficheros por distintas maquinas de una red.
- RIP: Utilizado por los dispositivos de la red para intercambiar información relativa a las rutas a seguir por los paquetes.