CAPITULO
I
Protocolo Internet (IP)
Introducción
La arquitectura TCP/IP esta hoy en día ampliamente difundida, a pesar de ser
una arquitectura de facto, en lugar de ser uno de los estándares definidos por
la ISO, IICC, etc...
Esta
arquitectura se empezó a desarrollar como base de la ARPANET (red de
comunicaciones militar del gobierno de los EE.UU), y con la expansión de la
INTERNET se ha convertido en una de las arquitecturas de redes más difundida.
Antes
de continuar, pasemos a ver la relación de esta arquitectura con respecto al
modelo de referencia OSI (Open Systems Interconnection) de la ISO.
Así
como el modelo de referencia OSI posee siete niveles (o capas), la arquitectura
TCP/IP viene definida por 4 niveles : el nivel
de subred [enlace y físico], el nivel
de interred [Red, IP], el protocolo
proveedor de servicio [Transporte, TCP o UDP] , y el nivel
de aplicación.
El
Protocolo Internet (Internet Protocol - IP)
El protocolo IP es el principal
del modelo OSI, así como parte integral del TCP/IP. Las tareas
principales del IP son el direccionamiento de los datagramas de información y
la administración del proceso de fragmentación de dichos datagramas.
El
datagrama es la unidad de transferencia que el IP utiliza, algunas veces
identificada en forma más específica como datagrama Internet o datagrama IP
Las
características de este protocolo son :
·
NO
ORIENTADO A CONEXIÓN
·
Transmisión
en unidades denominadas datagramas.
·
Sin
corrección de errores, ni control de congestión.
·
No
garantiza la entrega en secuencia.
La
entrega del datagrama en IP no está garantizada porque ésta se puede retrasar,
enrutar de manera incorrecta o mutilar al dividir y reensamblar los fragmentos
del mensaje. Por otra parte, el IP no contiene suma de verificación para el
contenido de datos del datagrama, solamente para la información del encabezado.
En
cuanto al ruteo (encaminamiento) este puede ser :
·
Paso
a paso a todos los nodos
·
Mediante
tablas de rutas estáticas o dinámicas
Direccionamiento
IP
El TCP/IP utiliza una dirección de 32 bits para identificar una máquina y la
red a la cual está conectada. Unicamente el NIC (Centro de Información de Red)
asigna las direcciones IP (o Internet), aunque si una red no está conectada a
Internet, dicha red puede determinar su propio sistema de numeración.
Hay
cuatro formatos para la dirección IP, cada uno de los cuales se utiliza
dependiendo del tamaño de la red. Los cuatro formatos, Clase A hasta Clase D
(aunque últimamente se ha añadido la Clase E para un futuro) aparecen en la
figura :
CLASE
A
CLASE
B
CLASE
C
CLASE
D
Conceptualmente,
cada dirección está compuesta por un par (RED (netid), y Dir. Local (hostid))
en donde se identifica la red y el host dentro de la red.
La
clase se identifica mediante las primeras secuencias de bits, a partir de los 3
primeros bits (de orden más alto).
Las
direcciones de Clase A corresponden a redes grandes con muchas máquinas. Las
direcciones en decimal son 0.1.0.0 hasta la 126.0.0.0 (lo que permite hasta 1.6
millones de hosts).
Las
direcciones de Clase B sirven para redes de tamaño intermedio, y el rango de
direcciones varía desde el 128.0.0.0 hasta el 191.255.0.0. Esto permite tener
16320 redes con 65024 host en cada una.
Las
direcciones de Clase C tienen sólo 8 bits para la dirección local o de anfitrión
(host) y 21 bits para red. Las direcciones de esta clase están comprendidas
entre 192.0.1.0 y 223.255.255.0, lo que permite cerca de 2 millones de redes con
254 hosts cada una.
Por
último, las direcciones de Clase D se usan con fines de multidifusión, cuando
se quiere una difusión general a más de un dispositivo. El rango es desde
224.0.0.0 hasta 239.255.235.255.
Cabe
decir que, las direcciones de clase E (aunque su utilización será futura)
comprenden el rango desde 240.0.0.0 hasta el 247.255.255.255.
Por
tanto, las direcciones IP son cuatro conjuntos de 8 bits, con un total de 32
bits. Por comodidad estos bits se representan como si estuviesen separados por
un punto, por lo que el formato de dirección IP puede ser red.local.local.local
para Clase A hasta red.red.red.local para clase C.
A
partir de una dirección IP, una red puede determinar si los datos se enviarán
a través de una compuerta (GTW, ROUTER). Obviamente, si la dirección de la red
es la misma que la dirección actual (enrutamiento a un dispositivo de red
local, llamado host directo), se
evitará la compuerta ; pero todas las demás direcciones de red se enrutarán
a una compuerta para que salgan de la red local. La compuerta que reciba los
datos que se transmitirán a otra red, tendrá entonces que determinar el
enrutamiento can base en la dirección IP de los datos y una tabla interna que
contiene la información de enrutamiento.
Otra
de las ventajas que ofrece el direccionamiento IP es el uso de direcciones
de difusión (broadcast addresses),
que hacen referencia a todos los host de la misma red. Según el estándar,
cualquier dirección local (hostid) compuesta toda por 1s está reservada para
difusión (broadcast). Por ejemplo, una dirección que contenga 32 1s se
considera un mensaje difundido a todas las redes y a todos los dispositivos. Es
posible difundir en todas las máquinas de una red alterando a 1s toda la
dirección local o de anfitrión (hostid), de manera que la dirección
147.10.255.255 para una red de Clase B se recibiría en todos los dispositivos
de dicha red ; pero los datos no saldrían de dicha red.
EJEMPLO I
Consideremos
la siguiente dirección IP en binario:
11001100.00001000.00000000.10101010
(204.8.0.170)
La
dirección de la máscara (MASK) es en binario :
11111111.11111111.11100000.00000000
(255.255.224.0)
Según
lo visto anteriormente, para hallar la dirección se SubRED (SubNet) tomamos la
IP y considerando que todo lo que tenga 1s en la máscara se queda como esta en
la IP, y todo lo que tenga 0s en la mascara se pone a 0 en la IP. Entonces, la
dirección de SubRed es :
11001100.00001000.00000000.00000000
(204.8.0.0)
EJEMPLO
II
Sea
la dirección IP en binario :
00001001.01000011.00100110.00000000
(9.67.38.0)
Cuya
máscara de red es :
11111111.11111111.11111111.11000000
(255.255.255.192)
Siguiendo
el criterio anterior, tenemos que la dirección de SubNet es :
00001001.01000011.00100110.00000000
(9.67.38.0)
En la dirección de la máscara
de red, los último 6 bits han quedado a 0. Estos bits son los que definen las máquinas
de la SubRed (2^6=64). De estas 64 máquinas quitamos la última de ellas (será
para el Broadcast). Por tanto tendremos :
9.67.38.0
SubNet Address
\-9.67.38.1
(1ª máquina de la SubRed)
\-9.67.38.2
(2ª máquina de la SubRed)
.........
\-9.67.38.62 (última
máquina de la SubRed)
\-9.67.38.63
BROADCAST
EJEMPLO
III
Sea
la dir.IP la 201.222.5.121, la dirección
de máscara 255.255.255.248,
entonces ,
haciendo los correspondientes cálculos en binario tenemos que :
201.222.5.121
(IP address)
255.255.255.248
(NET MASK)
201.222.5.120
(SubNet addr.)
En la dirección de máscara,
el 248 es 0111000, por tanto los últimos 3 bits a 0 son destinados para las máquinas
de red (2^3=8), por tanto habrá 6 máquinas :
201.222.5.120
SubNet address
\-201.222.5.121
1ª máquina de la
SubNet
\-201.222.5.122
2ª máquina de la
SubNet
.............
\-201.222.5.126
última máquina de
la SubNet
\-201.222.5.127
BROADCAST
EJEMPLO
IV
15.16.193.6
(IP addr.)
255.255.248.0
(Net MASK), el SubNet addr. Será :
15.16.192.0
y como en la máscara
de red 248.0 es 11111000.00000000
tendremos por tanto
2^11=2048, lo que implica que tenemos 2046 máquinas en la SubRed :
15.16.192.0 SubNet
address
\-15.16.192.1
1ª máquina de la SubRed
\-15.16.192.2
2ª máquina de la SubRed
............
\-15.16.200.254
última máquina de la SubRed
\-15.16.200.255
BROADCAST
La
mayor ventaja de la codificación de información de red en las direcciones de
red en IP tiene una ventaja importante: hacer posible que exista un ruteo
eficiente. Otra ventaja es que las direcciones de red IP se pueden referir tanto
a redes como a anfitriones (hosts). Por regla, nunca se asigna un campo hostID
igual a 0 a un anfitrión individual. En vez de eso, una dirección IP con campo
hostID a 0 se utiliza para referirse a la red en sí misma. En resumen:
Las
direcciones IP se pueden utilizar para referirse a redes así como a anfitriones
individuales. Por regla, una dirección que tiene todos los bits del campo
hostID a 0, se reserva para referirse a la red en sí misma.
Otra
ventaja significativa del esquema de direccionamiento IP es que éste incluye
una dirección de difusión (BROADCAST) que se refiere a todos los anfitriones
de la red. De acuerdo con el estándar, cualquier campo hostID consistente
solamente en 1s, esta reservado para la difusión (BROADCAST). Esto permite que
un sistema remoto envíe un sólo paquete que será publidifundido en la red
especificada.
En
la práctica, el IP utiliza sólo unas cuantas combinaciones de ceros ("está")
o unos ("toda"). Las posibilidades son las siguientes :
TODOS 0 - Éste anfitrión
(permitido solamente en el arranque del sistema, pero nunca es una
dirección válida de destino.
TODOS 0 | ANFITRIÓN
- Anfitrión en ésta RED (solo para arranque, no como dir. válida)
TODOS 1 - Difusión
limitada (red local) (Nunca es una dirección válida de origen)
RED | TODOS
1 -
Difusión dirigida para RED ("
" )
127 | NADA (a menudo
1) - LOOPBACK (nunca de be aparecer
en una red
Como
se menciona arriba, la utilización de todos los ceros para la red sólo está
permitida durante el procedimiento de iniciación de la maquina. Permite que una
máquina se comunique temporalmente. Una vez que la máquina "aprende"
su red y dir. IP correctas, no debe utilizar la red 0.
PROTOCOLOS DE RUTEO (nivel IP).
A
dos routers dentro de un sistema autónomo se les denomina
"interiores" con respecto a otro.
¿Cómo
pueden los routers en un sistema autónomo aprender acerca de redes dentro del
sistema y redes externas?
En
redes como InterNet que tienen varias rutas físicas, los administradores por lo
general seleccionan una de ellas como ruta primaria. Los ruteadores interiores
normalmente se comunican con otros, intercambian información de accesibilidad a
red o información de ruteo de red, a partir de la cual la accesibilidad se
puede deducir.
A
diferencia de esto, en la comunicación de un router exterior no se ha
desarrollado un solo protocolo que se utilice con los sistemas autónomos.
Uno
de los I.G.P. (Interior Gateway Protocol) más ampliamente utilizados es el RIP,
también conocido con el nombre de un programa que lo implementa (el routeD o
Route Daemon).
El
protocolo RIP es consecuencia directa de la implantación del ruteo de
vector-distancia para redes locales. En principio, divide las máquinas
participantes en activas o pasivas (silenciosas). Los routers activos anuncian
sus rutas a los otros; las máquinas pasivas listan y actualizan sus rutas con
base a estos anuncios. Sólo un router puede correr RIP en modo activo de modo
que un anfitrión deberá correr el RIP en modo pasivo.
Un
router con RIP en activo difunde un mensaje cada 30 segundos, éste mensaje
contiene información tomada de la base de datos de ruteo actualizada. Cada
mensaje consiste en pares, donde cada par contiene una dirección IP y un entero
que representa la distancia hacia esta red (el IP address).
El
RIP por tanto hace uso de un vector de distancias, con una métrica por número
de saltos donde se considera que 16 saltos o más es infinito. De esta manera,
el número de saltos (hops number) o el contador de saltos (hop count) a lo
largo de una trayectoria desde una fuente dada hacia un destino dado hace
referencia al número de routers que un datagrama encontrará a lo largo de su
trayectoria. Por tanto lo que se hace es utilizar el conteo de saltos para
calcular la trayectoria óptima (aunque esto no siempre produce resultados
buenos).
Para
prevenir que dos routers oscilen entre dos o más trayectorias de costos
iguales, RIP especifica que se deben conservar las rutas existentes hasta que
aparezca una ruta nueva con un costo estrictamente menor.
Si
falla el primer router que anuncia la ruta RIP especifica que todas las escuchas
deben asociar un tiempo límite a las rutas que aprenden por medio de RIP.
Cuando un router instala una ruta en su tabla, inicia un temporizador para tal
ruta. Este tiempo debe iniciarse cada vez que el router recibe otro mensaje RIP
anunciando la ruta. La ruta queda invalidada si transcurren 180 segundos sin que
el router haya recibido un anuncio nuevamente.
RIP
debe manejar tres tipos de errores ocasionados por los algoritmos
subyacentes. En primer lugar, dado que el algoritmo no especifica detección
de ciclos de ruteo, RIP debe asumir que los participantes son confiables o deberá
tomar precauciones para prevenir los ciclos. En segundo lugar, para prevenir
inestabilidades, RIP debe utilizar un valor bajo para la distancia máxima
posible (RIP utiliza 16 saltos como medida máxima). Esto implica que para una
red como Internet, los administradores deben dividirla en secciones o utilizar
un protocolo alternativo. En tercer y último lugar, el algoritmo
vector-distancia empleado por RIP crea un problema de convergencia lenta o
conteo al infinito, problema en el cual aparecerán inconsistencias, debido a
que los mensajes de actualización de ruteo se difunden lentamente a través de
la red. Seleccionando un infinito pequeño (16) se ayuda a limitar la
convergencia lenta, pero NO se elimina.
La
inconsistencia en la tabla de ruteo no es exclusiva de RIP, éste es un problema
fundamental que se presenta en todo protocolo con algoritmos vector-distancia,
en el que los mensajes de actualización transportan únicamente pares de redes
de destino y distancias hacia estas redes.
Solución
al problema de la convergencia lenta:
Es posible resolver el problema de la convergencia lente mediante una técnica
conocida como actualización de horizonte separado (split horizon update).
Cuando se utilizan horizontes separados, un router registra la interfaz por la
que ha recibido una ruta particular y no difunde la información acerca de la
ruta de regreso sobre la misma interfaz. Con esto evitamos que la información
"negativa" no sea difundida con rapidez.
Una
de las técnicas finales para resolver el problema de la convergencia lenta se
conoce como Poison Reverse. Una vez que una conexión desaparece, el router
anuncia la conexión conservando la entrada de información por varios periodos
de actualización e incluye un costo infinito en la difusión. Para hacer el
Poison Reverse más efectivo, se debe combinar con las Triggered Updates
(actualizaciones activadas) que obligan al router a que envíe una difusión
inmediatamente al recibir "malas noticias", en lugar de esperar el próximo
periodo de difusión. Al enviar una actualización inmediatamente, un router
minimiza el tiempo en que es vulnerable por recibir "buenas noticias".
El
algoritmo de propagación de rutas abierto (OSPF) propone los siguientes
objetivos:
- Tecnología de estado de enlaces
- Soporta tipos de servicio (los administradores pueden instalar múltiples
rutas hacia un destino dad, uno por cada tipo de servicio).
- Proporciona un balance de cargas entre rutas de igual peso (Si un
administrador especifica múltiples rutas hacia un destino con el mismo costo,
el OSPF distribuye el tráfico entre todas las rutas de la misma manera. Nótese
que el RIP calcula una sola ruta para cada destino).
- Partición en áreas.
- Propagación de modificaciones entre los enlaces.
- Localización automática de routers vecinos.
- Propagación de rutas aprendidas de fuentes externas.
- Routers designados en redes multiacceso.
PROTOCOLOS
DE RESOLUCION DE DIRECCIONES.
El objetivo es diseñar un software de bajo nivel que oculte las direcciones físicas
(MAC) y permita que programas de un nivel más alto trabajen sólo con
direcciones IP. La transformación de direcciones se tiene que realizar en cada
fase a lo largo del camino, desde la fuente original hasta el destino final. En
particular, surgen dos casos. Primero, en la última fase de entrega de un
paquete, éste se debe enviar a través de una red física hacia su destino
final. La computadora que envía el paquete tiene que transformar la dirección
IP de destino final en su dirección física (MAC). Segundo, en cualquier punto
del camino, de la fuente al destino, que no sea la fase final, el paquete se
debe enviar hacia un router intermedio. Por lo tanto, el transmisor tiene que
transformar la dirección IP del router en una dirección física.
El
problema de transformar direcciones de alto nivel en direcciones físicas se
conoce como problema de asociación de
direcciones (Address Resolution Problem). Este problema se suele resolver,
normalmente, mediante tablas en cada máquina que contienen pares de
direcciones, de alto nivel y físicas.
En
el problema de asociación de direcciones en TCP/IP para redes con capacidad de
difusión como Ethernet, se utiliza un protocolo de bajo nivel para asignar
direcciones en forma dinámica y evitar así la utilización de una tabla de
conversiones. Este protocolo es conocido como
Protocolo de Asociación de Direcciones (ARP - Address Resolution
Protocol). La idea detrás de la asociación dinámica con ARP es muy
sencilla: cuando un host A quiere definir la dirección IP (IPb), transmite por
difusión (broadcast) un paquete especial que pide al anfitrión (host) que
posee la dirección IP (IPb), que responda con su dirección física (Pb). Todos
los anfitriones reciben la solicitud, incluyendo a B, pero sólo B reconoce su
propia dirección IP y envía una respuesta que contiene su dirección física.
Cuando A recibe la respuesta, utiliza la dirección física para enviar el
paquete IP directamente a B. En resumen:
El ARP permite que un anfitrión encuentre la dirección física de otro
anfitrión dentro de la misma red física con sólo proporcionar la dirección
IP de su objetivo.
La
información se guarda luego en una tabla ARP de orígenes y destinos.
Protocolo de Asociación de Direcciones por Réplica
(RARP):
Una
máquina sin disco utiliza un protocolo TCP/IP para internet llamado RARP
(Protocolo Inverso de Asociación de Direcciones) o Reverse Address Resolution
Protocol, a fin de obtener su dirección IP desde un servidor.
En
el arranque del sistema, una máquina de estas características (sin HDD
permanente) debe contactar con un servidor para encontrar su dirección IP antes
de que se pueda comunicar por medio del TCP/IP. El protocolo RARP utiliza el
direccionamiento físico de red para obtener la dirección IP de la máquina. El
mecanismo RARP proporciona la dirección hardware física de la máquina de
destino para identificar de manera única el procesador y transmite por difusión
la solicitud RARP. Los servidores en la red reciben el mensaje, buscan la
transformación en una tabla (de manera presumible en su almacenamiento
secundario) y responden al transmisor. Una vez que la máquina obtiene su
dirección IP, la guarda en memoria y no vuelve a utilizar RARP hasta que se
inicia de nuevo.
MENSAJES
DE ERROR Y CONTROL en IP (ICMP).
Como
hemos visto anteriormente, el Protocolo Internet (IP) proporciona un servicio de
entrega de datagramas, no confiable y sin conexión, al hacer que cada router
direccione datagramas. Si un router no puede, por ejemplo, rutear o entregar un
datagrama, o si el router detecta una condición anormal que afecta su capacidad
para direccionarlo (v.q., congestionamiento de la red), necesita informar a la
fuente original para que evite o corrija el problema.
Para
permitir que los routers de una red reporten los errores o proporcionen
información sobre circunstancias inesperadas, se agregó a la familia TCP/IP un
mecanismo de mensajes de propósito especial, el Protocolo
de Mensajes de Control Internet (ICMP).
El ICMP permite que los routers envíen mensajes de error o de control hacia
otros routers o anfitriones, proporcionando una comunicación entre el software
de IP en una máquina y el mismo software en otra.
Cuando
un datagrama causa un error, el ICMP sólo puede reportar la condición del
error a la fuente original del datagrama; la fuente debe relacionar el error con
un programa de aplicación individual o debe tomar alguna otra acción para
corregir el problema.
Formato
de los mensajes ICMP:
Aunque
cada mensaje ICMP tiene su propio formato, todos comienzan con los mismos tres
campos; un campo TYPE (TIPO) de mensaje, de 8 bits y números enteros, que
identifica el mensaje; un campo CODE (CODIGO), de 8 bits, que proporciona más
información sobre el tipo de mensaje, y una campo CHECKSUM (SUMA DE VERIFICACIÓN),
de 16 bits. Además, los mensajes ICMP que reportan errores siempre incluyen el
encabezado y los primeros 64 bits de datos del datagrama que causó el problema.
La
razón de regresar más que el encabezado del datagrama únicamente es para
permitir que el receptor determine de manera más precisa qué protocolo(s) y qué
programa de aplicación son responsables del datagrama.
El
campo TYPE de ICMP define el significado del mensaje así como su formato. Los
tipos incluyen:
CAMPO TYPE
Tipo de Mensaje ICMP
0
Respuesta de ECO
3
Destino inaccesible
4
Disminución de origen
(source quench -
datagrama
eliminado por congestión)
5
Redireccionar (cambiar una
ruta)
8
Solicitud de ECO
11
Tiempo excedido para un
datagrama
12
Problema de parámetros de
un datagrama
13
Solicitud de
TIMESTAMP
14
Respuesta de
TIMESTAMP
15
Solicitud de
Información (obsoleto)
16
Respuesta de
Información (obsoleto)
17
Solicitud de Máscara
de dirección
18
Respuesta de máscara
de dirección
Una
de las herramientas de depuración más utilizadas incluye los mensajes ICMP de echo
request (8) y echo reply (0). En la mayoría de los sistemas, el comando que llama
el usuario para enviar solicitudes de eco ICMP se conoce como ping.
PROTOCOLO
DE DATAGRAMA DE USUARIO (UDP).
La
mayoría de los Sistemas Operativos actuales soportan multiprogramación. Puede
parecer natural decir que un proceso es el destino final de un mensaje. Sin
embargo, especificar que un proceso en particular en una máquina en particular
es el destino final para un datagrama es un poco confuso. Primero, por que los
procesos se crean y se destruyen dinámicamente, los transmisores rara vez saben
lo suficiente para identificar un proceso en otra máquina. Segundo, nos gustaría
poder reemplazar los procesos que reciben datagramas, sin tener que informar a
todos los transmisores (v.q. reiniciar la máquina puede cambiar todos los PID
de los procesos). Tercero, necesitamos identificar los destinos de las funciones
que implantan sin conocer el proceso que implanta la función (v.q. permitir que
un transmisor contacte un servidor de ficheros sin saber qué proceso en la máquina
de destino implanta la función de FS).
En
vez de pensar en un proceso como destino final, imaginaremos que cada máquina
contiene un grupo de puntos abstractos de destino, llamados puertos de protocolo. Cada
puerto de protocolo se identifica por medio de un número entero positivo.
Para
comunicarse con un puerto externo, un transmisor necesita saber tanto la dirección
IP de la máquina de destino como el número de puerto de protocolo del destino
dentro de la máquina.
El
UDP proporciona el mecanismo primario que utilizan los programas de aplicación
para enviar datagramas a otros programas de aplicación. El UDP proporciona
puertos de protocolo utilizados para distinguir entre muchos programas que se
ejecutan en la misma máquina. Esto es, además de los datos, cada mensaje UDP
contiene tanto en número de puerto de destino como el número de puerto origen,
haciendo posible que el software UDP en el destino entregue el mensaje al
receptor correcto y que éste envíe una respuesta.
El
UDP utiliza el Protocolo Internet subyacente para transportar un mensaje de una
máquina a otra y proporciona la misma semántica de entrega de datagramas, sin
conexión y no confiable que el IP. No emplea acuses de recibo para asegurarse
de que llegan mensajes, no ordena los mensajes entrantes, ni proporciona
retroalimentación para controlar la velocidad del flujo de información entre
las máquinas. Por tanto, los mensajes UDP se pueden perder, duplicar o llegar
sin orden. Además, los paquetes pueden llegar más rápido de lo que el
receptor los puede procesar. En resumen:
El
UDP proporciona un servicio de entrega sin conexión y no confiable, utilizando
el IP para transportar mensajes entre máquinas. Emplea el IP para llevar
mensajes, pero agrega la capacidad para distinguir entre varios destinos dentro
de la computadora anfitrión.
Formato
de los mensajes UDP:
Cada
mensaje UDP se conoce como datagrama de
usuario. Conceptualmente, un datagrama de usuario consiste en dos partes: un
encabezado UDP y un área de datos UDP. El encabezado se divide en cuatro campos
de 16 bits, que especifican el puerto desde el que se envió el mensaje, el
puerto para el que se destina el mensaje, la longitud del mensaje y una suma de
verificación UDP.