Descomposición en niveles de TCP/IP.
Toda arquitectura de protocolos se descompone en una serie
de niveles, usando como referencia el modelo OSI. Esto se hace para poder
dividir el problema global en subproblemas de más fácil solución.
Al diferencia de OSI, formado por una torre de siete niveles,
TCP/IP se descompone en cinco niveles, cuatro niveles software y un nivel hardware.
A continuación pasaremos a describir los niveles software, los cuales tienen
cierto paralelismo con el modelo OSI.
Nivel de aplicación:
Constituye el nivel más alto de la torre tcp/ip. A
diferencia del modelo OSI, se trata de un nivel simple en el que se encuentran
las aplicaciones que acceden a servicios disponibles a través de Internet. Estos
servicios están sustentados por una serie de protocolos que los proporcionan. Por
ejemplo, tenemos el protocolo FTP (File Transfer Protocol), que proporciona los
servicios necesarios para la transferencia de ficheros entre dos ordenadores.
Otro servicio, sin el cual no se concibe Internet, es el de
correo electrónico, sustentado por el protocolo SMTP (Simple Mail Transfer
Protocol).
Nivel de transporte:
Este nivel proporciona una comunicación extremo a extremo
entre programas de aplicación. La máquina remota recibe exactamente lo mismo
que le envió la maquina origen. En este nivel el emisor divide la información
que recibe del nivel de aplicación en paquetes, le añade los datos necesarios
para el control de flujo y control de errores, y se los pasa al nivel de red
junto con la dirección de destino.
En el receptor este nivel se encarga de ordenar y unir las
tramas para generar de nuevo la información original.
Para implementar el nivel de transporte se utilizan dos protocolos:
– UDP: proporciona un nivel de transporte
no fiable de datagramas, ya que apenas añade información al paquete que envía
al nivel inferior, solo la necesaria para la comunicación extremo a extremo. Lo
utilizan aplicaciones como NFS y RPC, pero sobre todo se emplea en tareas de
control.
– TCP (Transport Control Protocolo): es el
protocolo que proporciona un transporte fiable de flujo de bits entre
aplicaciones. Está pensado para poder enviar grandes cantidades de información
de forma fiable, liberando al programador de aplicaciones de la dificultad de
gestionar la fiabilidad de la conexión (retransmisiones, perdidas de paquete,
orden en que llegan los paquetes, duplicados de paquetes,…) que gestiona el
propio protocolo. Pero la complejidad de la gestión de la fiabilidad tiene un
coste en eficiencia, ya que para llevar a cabo las gestiones anteriores se
tiene que añadir bastante información a los paquetes a enviar. Debido a que los
paquetes a enviar tienen un tamaño máximo, como más información añada el
protocolo para su gestión, menos información que proviene de la aplicación podrá
contener ese paquete. Por eso, cuando es más importante la velocidad que la
fiabilidad, se utiliza UDP, en cambio TCP asegura la recepción en destino de la
información a transmitir.
Nivel de red:
También recibe el nombre de nivel Internet.
Coloca la información que le pasa el nivel de transporte en datagramas IP, le
añade cabeceras necesaria para su nivel y lo envía al nivel inferior. Es en
este nivel donde se emplea el algoritmo de encaminamiento, al recibir un
datagrama del nivel inferior decide, en función de su dirección, si debe
procesarlo y pasarlo al nivel superior, o bien encaminarlo hacia otra máquina.
Para implementar este nivel se utilizan los siguientes protocolos:
– IP (Internet Protocol): es un protocolo
no orientado a la conexión, con mensajes de un tamaño máximo. Cada datagrama se
gestiona de forma independiente, por lo que dos datagramas pueden utilizar
diferentes caminos para llegar al mismo destino, provocando que lleguen en
diferente orden o bien duplicados. Es un protocolo no fiable, eso quiere decir
que no corrige los anteriores problemas, ni tampoco informa de ellos. Este
protocolo recibe información del nivel superior y le añade la información
necesaria para su gestión (direcciones IP, checksum)
– ICMP (Internet Control Message Protocol): proporciona
un mecanismo de comunicación de información de control y de errores entre
maquinas intermedias por las que viajaran los paquetes de datos. Esto
datagramas los suelen emplear las maquinas (gateways, host,…) para informarse
de condiciones especiales en la red, como la existencia de una congestión, la
existencia de errores y las posibles peticiones de cambios de ruta. Los
mensajes de ICMP están encapsulados en datagramas IP.
– IGMP (Internet Group Management Protocol): este
protocolo está íntimamente ligado a IP. Se emplea en máquinas que emplean IP multicast.
El IP multicast es una variante de IP que permite emplear datagramas con
múltiples destinatarios.
También en este nivel tenemos una serie de protocolos que se
encargan de la resolución de direcciones:
– ARP (Address Resolution Protocol): cuando
una maquina desea ponerse en contacto con otra conoce su dirección IP, entonces
necesita un mecanismo dinámico que permite conocer su dirección física.
Entonces envía una petición ARP por broadcast (o sea a todas las maquinas). El
protocolo establece que solo contestara a la petición, si esta lleva su
dirección IP. Por lo tanto solo contestara la máquina que corresponde a la
dirección IP buscada, con un mensaje que incluya la dirección física. El
software de comunicaciones debe mantener una cache con los pares IP-dirección física.
De este modo la siguiente vez que hay que hacer una transmisión a es dirección IP,
ya conoceremos la dirección física.
– RARP (Reverse Address Resolution Protocol): a
veces el problema es al revés, o sea, una máquina solo conoce su dirección
física, y desea conocer su dirección lógica. Esto ocurre, por ejemplo, cuando
se accede a Internet con una dirección diferente, en el caso de PC que acceden
por módem a Internet, y se le asigna una dirección diferente de las que tiene
el proveedor sin utilizar. Para solucionar esto se envía por broadcast una
petición RARP con su dirección física, para que un servidor pueda darle su
correspondencia IP.
– BOOTP (Bootstrap Protocol): el protocolo
RARP resuelve el problema de la resolución inversa de direcciones, pero para
que pueda ser más eficiente, enviando más información que meramente la
dirección IP, se ha creado el protocolo BOOTP. Este además de la dirección IP
del solicitante, proporciona información adicional, facilitando la movilidad y
el mantenimiento de las maquinas.
Nivel de enlace:
Este nivel se limita a recibir datagramas del nivel superior
(nivel de red) y transmitirlo al hardware de la red. Pueden usarse diversos
protocolos: DLC (IEEE 802.2), Frame Relay, X.25, etc.
La interconexión de diferentes redes genera una red virtual
en la que las maquinas se identifican mediante una dirección de red lógica. Sin
embargo a la hora de transmitir información por un medio físico se envía y se
recibe información de direcciones físicas. Un diseño eficiente implica que una
dirección lógica sea independiente de una dirección física, por lo tanto es
necesario un mecanismo que relacione las direcciones lógicas con las
direcciones físicas. De esta forma podremos cambiar nuestra dirección lógica IP
conservando el mismo hardware, del mismo modo podremos cambiar una
tarjeta de red, la cual contiene una dirección física, sin tener que cambiar
nuestra dirección lógica IP.
El nivel de transporte me llama mucho la atención.
ResponderBorrar