DOCUMENTACION |
INTERNET
RFC: 791
INTERNET PROTOCOL
(Protocolo Internet)
DARPA INTERNET PROGRAM
ESPECIFICACION del PROTOCOLO
Septiembre 1981
(Traducción al castellano: Mayo 1999)
(Por: Pedro J. Ponce de León <pjleon@arrakis.es>)
preparado para
Defense Advanced Research Projects Agency
Information Processing Techniques Office
1400 Wilson Boulevard
Arlington, Virginia 22209
por
Information Sciences Institute
University of Southern California
4676 Admiralty Way
Marina del Rey, California 90291
INDICE
PREFACIO
....................................................... iii
1. INTRODUCCION
..................................................... 1
1.1 Motivación
.................................................... 1
1.2 Ámbito
........................................................ 1
1.3 Interfaces
.................................................... 1
1.4 Operación
..................................................... 2
2. PANORAMA GENERAL
................................................. 5
2.1 Relación
con Otros Protocolos ................................. 9
2.2 Modelo
de Operación ........................................... 5
2.3 Descripción
de Funciones ...................................... 7
2.4 Pasarelas
("Gateways")......................................... 9
3. ESPECIFICACION
.................................................. 11
3.1 Formato
de Cabecera Internet ................................. 11
3.2 Discusión
.................................................... 23
3.3 Interfaces
................................................... 31
APENDICE A: Ejemplos y Escenarios
.................................. 34
APENDICE B: Orden de Transmisión de Datos
.......................... 39
GLOSARIO ............................................................ 41
REFERENCIAS ......................................................... 45
PREFACIO
Este documento especifica el Protocolo
Internet Estándar del DoD
(N.T.: Department of Defense, USA). Este
documento está basado en seis
ediciones anteriores de la Especificación
del Protocolo Internet de
ARPA, y el presente texto se basa en gran
medida en ellas. Han habido
muchos colaboradores en este trabajo en
términos de conceptos y texto.
Esta edición revisa aspectos de
direccionamiento, tratamiento de
errores, códigos de opción, y de las
características de seguridad,
prioridad, compartimientos y manejo de
restricciones del protocolo
Internet.
Jon Postel
Editor
RFC: 791
Sustituye a:
RFC 760
IENs 128, 123, 111,
80, 54, 44, 41, 28, 26
PROTOCOLO INTERNET
DARPA INTERNET PROGRAM
ESPECIFICACION DE PROTOCOLO
1. INTRODUCCION
1.1. Motivación
El Protocolo Internet está diseñado para
su uso en sistemas
interconectados de redes de comunicación de
ordenadores por
intercambio de paquetes. A un sistema de
este tipo se le conoce como
"catenet" [1]. El protocolo
internet proporciona los medios necesarios
para la transmisión de bloques de datos
llamados datagramas desde el
origen al destino, donde origen y destino
son hosts identificados por
direcciones de longitud fija. El protocolo
internet tambien se
encarga, si es necesario, de la
fragmentación y el reensamblaje de
grandes datagramas para su transmisión a
través de redes de trama
pequeña.
1.2. Ambito
El Protocolo Internet está específicamente
limitado a proporcionar las
funciones necesarias para enviar un paquete
de bits (un datagrama
internet) desde un origen a un destino a
través de un sistema de redes
interconectadas. No existen mecanismos para
aumentar la fiabilidad de
datos entre los extremos, control de flujo,
secuenciamiento u otros
servicios que se encuentran normalmente en
otros protocolos host-a-
host. El protocolo internet puede
aprovecharse de los servicios de sus
redes de soporte para proporcionar varios
tipos y calidades de
servicio.
1.3. Interfaces
Este protocolo es utilizado por protocolos
host-a-host en un entorno
internet. Este protocolo utiliza a su vez
protocolos de red locales
para llevar el datagrama internet a la
próxima pasarela ("gateway") o
host de destino.
Por ejemplo, un módulo TCP llamaría al
módulo internet para tomar un
segmento TCP (incluyendo la cabecera TCP y
los datos de usuario) como
la parte de datos de un datagrama internet.
El módulo TCP
suministraría las direcciones y otros
parámetros de la cabecera
internet al módulo internet como
argumentos de la llamada. El módulo
internet crearía entonces un datagrama
internet y utilizaría la
interfaz de la red local para transmitir el
datagrama internet.
En el caso de ARPANET, por ejemplo, el
módulo internet llamaría a un
módulo de red local el cual añadiría el
encabezado 1822 [2] al
datagrama internet creando así un mensaje
ARPANET a transmitir al IMP.
La dirección ARPANET sería deducida de la
dirección internet por la
interfaz de la red local y sería la
dirección de algún host en
ARPANET, el cual podría ser una pasarela a
otras redes.
1.4. Operación
El protocolo internet implementa dos
funciones básicas:
direccionamiento y fragmentación.
Los módulos internet usan las direcciones
que se encuentran en la
cabecera internet para transmitir los
datagramas internet hacia sus
destinos. La selección de un camino para
la transmisión se llama
encaminamiento.
Los módulos internet usan campos en la
cabecera internet para
fragmentar y reensamblar los datagramas
internet cuando sea necesario
para su transmisión a través de redes de
"trama pequeña".
El modelo de operación es que un módulo
internet reside en cada host
involucrado en la comunicación internet y
en cada pasarela que
interconecta redes. Estos módulos
comparten reglas comunes para
interpretar los campos de dirección y para
fragmentar y ensamblar
datagramas internet. Además, estos módulos
(especialmente en las
pasarelas) tienen procedimientos para tomar
decisiones de
encaminamiento y otras funciones.
El protocolo internet trata cada datagrama
internet como una entidad
independiente no relacionada con ningún
otro datagrama internet. No
existen conexiones o circuitos lógicos
(virtuales o de cualquier otro
tipo).
El protocolo internet utiliza cuatro
mecanismos clave para prestar su
servicio: Tipo de Servicio, Tiempo de Vida,
Opciones, y Suma de
Control de Cabecera.
El Tipo de Servicio se utiliza para indicar
la calidad del servicio
deseado. El tipo de servicio es un conjunto
abstracto o generalizado
de parámetros que caracterizan las
elecciones de servicio presentes en
las redes que forman Internet. Esta
indicación de tipo de servicio
será usada por las pasarelas para
seleccionar los parámetros de
transmisión efectivos para una red en
particular, la red que se
utilizará para el siguiente salto, o la
siguiente pasarela al
encaminar un datagrama internet.
El Tiempo de Vida es una indicación de un
límite superior en el
periodo de vida de un datagrama internet. Es
fijado por el remitente
del datagrama y reducido en los puntos a lo
largo de la ruta donde es
procesado. Si el tiempo de vida se reduce a
cero antes de que el
datagrama llegue a su destino, el datagrama
internet es destruído.
Puede pensarse en el tiempo de vida como en
un plazo de
autodestrucción.
Las Opciones proporcionan funciones de
control necesarias o útiles en
algunas situaciones pero innecesarias para
las comunicaciones más
comunes. Las opciones incluyen recursos para
marcas de tiempo,
seguridad y encaminamiento especial.
La Suma de Control de Cabecera proporciona
una verificación de que la
información utilizada al procesar el
datagrama internet ha sido
transmitida correctamente. Los datos pueden
contener errores. Si la
suma de control de cabecera falla, el
datagrama internet es descartado
inmediatamente por la entidad que detecta
el error.
El protocolo internet no proporciona ningún
mecanismo de comunicación
fiable. No existen acuses de recibo ni entre
extremos ni entre saltos.
No hay control de errores para los datos,
sólo una suma de control de
cabecera. No hay retransmisiones. No existe
control de flujo.
Los errores detectados pueden ser
notificados por medio del Internet
Control Message Protocol (ICMP) (Protocolo
de Mensajes de Control de
Internet) [3] el cual está implementado en
el módulo del protocolo
internet.
2. PANORAMA GENERAL
2.1. Relación con Otros Protocolos
El siguiente diagrama ilustra el lugar del
protocolo internet en la
jerarquía de protocolos:
+------+ +-----+ +-----+ +-----+
|Telnet| | FTP | | TFTP| ... | ... |
+------+ +-----+ +-----+ +-----+
| | | |
+-----+ +-----+ +-----+
| TCP | | UDP | ...
| ... |
+-----+ +-----+ +-----+
|
|
|
+--------------------------+----+
| Protocolo Internet & ICMP |
+--------------------------+----+
|
+---------------------------+
| Protocolo de la Red Local |
+---------------------------+
Relación entre Protocolos
Figura 1.
El protocolo Internet interactúa por un
lado con los protocolos host-
a-host de alto nivel y por otro con el
protocolo de la red local. En
este contexto una "red local"
puede ser una pequeña red en un edificio
o una gran red como ARPANET.
2.2. Modelo de Operación
El modelo de operación para transmitir un
datagrama de una aplicación
a otra se ilustra en el siguiente escenario:
Suponemos que esta transmisión
involucra a una pasarela intermedia.
La aplicación remitente prepara
sus datos y llama a su módulo
internet local para enviar esos
datos como un datagrama y pasa la
dirección de destino y otros
parámetros como argumentos de la
llamada.
El módulo internet prepara una
cabecera de datagrama y adjunta los
datos a él. El módulo internet
determina una dirección de la red de
área local para esta dirección
internet, que en este caso es la
dirección de una pasarela.
Envía este datagrama y la
dirección de red local a la interfaz de
red local.
La interfaz de red local crea
una cabecera de red local, le adjunta
el datagrama y entonces envía
el resultado a través de la red local.
El datagrama llega a un host
pasarela encapsulado en la cabecera de
red local, la interfaz de red
local desprende esta cabecera y dirige
el datagrama hacia el módulo
internet. El módulo internet determina
a partir de la dirección
internet que el datagrama debe ser
reenviado a otro host en una
segunda red. El módulo internet
determina una dirección de red
local para el host de destino. Llama
a la interfaz de red local de
esa red para enviar el datagrama.
Esta interfaz de red local crea
una cabecera de red local y le
adjunta el datagrama enviando el
resultado al host de destino.
En este host de destino la
interfaz de red local le quita al
datagrama la cabecera de red
local y se lo pasa al módulo internet.
El módulo internet determina
que el datagrama va dirigido a una
aplicación en este host. Pasa
los datos a la aplicación en respuesta
a una llamada al sistema,
pasando la dirección de origen y otros
parámetros como resultado de
la llamada.
Aplicación
Aplicación
\
/
Módulo
Internet Módulo
Internet Módulo
Internet
\
/ \
/
IRL-1
IRL-1 IRL-2 IRL-2
\ /
\
/
Red Local 1
Red Local 2
Trayectoria de la transmisión
Figura 2
2.3. Descripción de Funciones
La función o propósito del Protocolo
Internet es mover datagramas a
través de un conjunto de redes
interconectadas. Esto se consigue
pasando los datagramas desde un módulo
internet a otro hasta que se
alcanza el destino. Los módulos internet
residen en hosts y pasarelas
en el sistema internet. Los datagramas son
encaminados desde un módulo
internet a otro a través de redes
individuales basándose en la
interpretación de una dirección internet.
Por eso, un importante
mecanismo del protocolo internet es la
dirección internet.
En el enrutamiento de mensajes desde un
módulo internet a otro, los
datagramas pueden necesitar atravesar una
red cuyo tamaño máximo de
paquete es menor que el tamaño del
datagrama. Para salvar esta
dificultad se proporciona un mecanismo de
fragmentación en el
protocolo internet.
Direccionamiento
Se establece una distinción
entre nombres, direcciones y rutas [4].
Un nombre indica qué buscamos.
Una dirección indica dónde está. Una
ruta indica cómo llegar allí.
El protocolo internet maneja
principalmente direcciones. Es
tarea de los protocolos de mayor
nivel (es decir, protocolos
host-a-host o entre aplicaciones) hacer
corresponder nombres con
direcciones. El módulo internet hace
corresponder direcciones de
internet con direcciones de red local.
Es tarea de los procedimientos
de menor nivel (es decir, redes
locales o pasarelas) realizar la
correspondencia entre direcciones
de red local y rutas.
Las direcciones son de una
longitud fija de 4 octetos (32 bits). Una
dirección comienza por un
número de red, seguido de la dirección
local (llamada el campo
"resto"). Hay 3 formatos o clases de
direcciones internet: En la
Clase A, el bit más significativo es 0,
los 7 bits siguientes son la
red, y los 24 bits restantes son la
dirección local; en la Clase B,
los dos bits más significativos son
uno-cero ("10"), los
14 bits siguientes son la red y los últimos 16
bits son la dirección local; en
la Clase C, los tres bits más
significativos son uno-uno-cero
("110"), los 21 bits siguientes son
la red y los 8 restantes son la
dirección local.
Se debe tener cuidado al
relacionar direcciones internet con
direcciones de red local; un
host individual físicamente hablando
debe ser capaz de actuar como si
fuera varios hosts distintos, hasta
el punto de usar varias
direcciones internet distintas. Algunos
hosts tendrán también varios
interfaces físicos (multi-homing).
Esto quiere decir que se debe
establecer algún mecanismo que permita
a un host tener varios
interfaces físicos de red, cada uno de ellos
con varias direcciones lógicas
internet.
Se pueden encontrar ejemplos de
correspondencias de direcciones en
"Correspondencias de
Direcciones" [5].
Fragmentación
La fragmentación de un
datagrama internet es necesaria cuando éste
se origina en una red local que
permite un tamaño de paquete grande
y debe atravesar una red local
que limita los paquetes a un tamaño
inferior para llegar a su
destino.
Un datagrama internet puede ser
marcado como "no fragmentar". Todo
datagrama internet así marcado
no será fragmentado entre distintas
redes bajo ninguna
circunstancia. Si un datagrama internet marcado
como "no fragmentar"
no puede ser entregado en su destino sin
fragmentarlo, entonces debe ser
descartado.
La fragmentación, transmisión
y reensamblaje a través de una red
local invisible para el módulo
del protocolo internet se llama
fragmentación intranet y puede
ser utilizada [6].
El procedimiento de
fragmentación y reensamblaje en internet tiene
que ser capaz de dividir un
datagrama en un número casi arbitrario
de piezas que puedan ser luegos
reensambladas. El receptor de los
fragmentos utiliza el campo de
identificación para asegurarse de que
no se mezclan fragmentos de
distintos datagramas. El campo posición
("offset") le indica
al receptor la posición de un fragmento en el
datagrama original. La posición
y longitud del fragmento determinan
la porción de datagrama
original comprendida en este fragmento. El
indicador
"más-fragmentos" indica (puesto a cero) el último
fragmento. Estos campos proporcionan información suficiente
para
reensamblar datagramas.
El campo identificador se usa
para distinguir los fragmentos de un
datagrama de los de otro. El
módulo de protocolo de origen de un
datagrama internet establece el
campo identificador a un valor que
debe ser único para ese
protocolo y par origen-destino durante el
tiempo que el datagrama estará
activo en el sistema internet. El
módulo de protocolo de origen
de un datagrama completo pone el
indicador
"más-fragmentos" a cero y la posición del fragmento a
cero.
Para fragmentar un datagrama
internet grande, un módulo de protocolo
internet (p. ej., en una
pasarela) crea dos nuevos datagramas
internet y copia el contenido de
los campos de cabecera internet del
datagrama grande en las dos
cabeceras nuevas. Los datos del
datagrama grande son divididos
en dos trozos tomando una resolución
mínima de 8 octetos (64 bits)
(el segundo trozo puede no ser un
múltiplo entero de 8 octetos,
pero el primero sí debe serlo).
Llamemos al número de bloques
de 8 octetos en el primer trozo NFB
(Number of Fragment Blocks:
Número de Bloques del Fragmento). El
primer trozo de datos es
colocado en el primer nuevo datagrama
internet y el campo longitud
total se establece a la longitud del
primer datagrama. El indicador
"más fragmentos" es puesto a uno. El
segundo trozo de datos es
colocado en el segundo nuevo datagrama
internet y el campo longitud
total se establece a la longitud del
segundo datagrama. El indicador
"más fragmentos" lleva el mismo
valor que en el datagrama
grande. El campo posición del segundo
nuevo datagrama se establece al
valor de ese campo en el datagrama
grande más NFB.
Este procedimiento puede
generalizarse para una n-partición, mejor
que para la división en dos
partes descrita.
Para ensamblar los fragmentos
de un datagrama internet, un módulo de
protocolo internet (por ejemplo
en un host de destino) combina todos
los datagramas internet que
tengan el mismo valor en los cuatro
campos: identificación, origen, destino y protocolo. La combinación
se realiza colocando el trozo de
datos de cada fragmento en su
posición relativa indicada por
la posición del fragmento en la
cabecera internet de ese
fragmento. El primer fragmento tendrá
posición cero, y el último
fragmento tendrá el indicador "más
fragmentos" puesto a cero.
2.4. Pasarelas
Las pasarelas implementan el protocolo
internet para reexpedir
datagramas entre redes. Las pasarelas
también implementan el Protocolo
Pasarela a Pasarela (Gateway to Gateway
Protocol, GGP) [7] para
coordinar el encaminamiento y otra
información de control internet.
En una pasarela los protocolos de nivel
superior no necesitan ser
implementados y las funciones GGP son
añadidas al módulo IP.
+--------------------------------+
| Protocolo Internet & ICMP
& GGP|
+--------------------------------+
|
|
+---------------+ +---------------+
| Red Local |
| Red Local |
+---------------+ +---------------+
Protocolos de Pasarela
Figura 3.
3. ESPECIFICACION
3.1. Formato de la Cabecera Internet
A continuación vemos un resumen del
contenido de la cabecera internet.
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Versión| IHL |
Tipo Servicio |
Longitud Total
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Identificación
|Flags| Posición |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Tiempo de Vida | Protocolo
| Suma de Control de Cabecera |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Dirección de Origen
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Dirección de Destino
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Opciones
| Relleno |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Ejemplo de Cabecera de un Datagrama Internet
Figura 4.
Nótese que cada marca (-) corresponde a una
posición de un bit.
Versión:
4 bits
El campo Versión describe el
formato de la cabecera internet. Este
documento describe la versión
4.
IHL: 4
bits
Longitud de la Cabecera Internet
(Internet Header Length), es la
longitud de la cabecera en
palabras de 32 bits, y por tanto apunta
al comienzo de los datos.
Nótese que el valor mínimo para una
cabecera correcta es 5.
Tipo de Servicio: 8 bits
El Tipo de Servicio proporciona
una indicación de los parámetros
abstractos de la calidad de
servicio deseada. Estos parámetros se
usarán para guiar la selección
de los parámetros de servicio reales
al transmitir un datagrama a
través de una red en particular.
Algunas redes ofrecen prioridad
de servicio, la cual trata de algún
modo el tráfico de alta
prioridad como más importante que el resto
del tráfico (generalmente
aceptando sólo tráfico por encima de
cierta prioridad en momentos de
sobrecarga). La elección más común
es un compromiso a tres niveles
entre baja demora, alta fiabilidad,
y alto rendimiento.
Bits 0-2: Prioridad.
Bit 3:
0 = Demora Normal,
1 = Baja Demora.
Bit 4:
0 = Rendimiento Normal , 1 = Alto rendimiento.
Bit 5:
0 = Fiabilidad Normal , 1 = Alta
fiabilidad.]
Bits 6-7: Reservado para uso futuro.
0 1
2 3 4
5 6 7
+-----+-----+-----+-----+-----+-----+-----+-----+
|
| | | | |
|
| PRECEDENCIA
| D
| T
| R
| 0
| 0
|
|
| | |
| | |
+-----+-----+-----+-----+-----+-----+-----+-----+
Precedencia
111
- Control de Red
110
- Control Entre Redes
101
- CRITICO/ECP
100
- Muy urgente (Flash Override)
011
- Urgente (Flash)
010
- Inmediato
001
- Prioridad
000
- Rutina
El uso de las indicaciones de
Retraso, Rendimiento y fiabilidad
puede incrementar el coste (en
cierto sentido) del servicio. En
muchas redes un mejor
rendimiento para uno de estos parámetros
conlleva un peor rendimiento en
algún otro. Excepto para casos
excepcionales no se deben
establecer más de dos de estos tres
indicadores.
El tipo de servicio se usa para
especificar el tratamiento del
datagrama durante su
transmisión a través del sistema internet. Se
dan ejemplos de relación entre
el tipo de servicio internet y el
servicio real proporcionado por
redes como AUTODIN II, ARPANET,
SATNET y PRNET en
"Correspondencias de Servicios" [8]
La denominación de precedencia
'Control de Red' está pensada para
ser usada dentro de una sola
red. El uso y control efectivos de este
modo es responsabilidad de cada
red. El modo 'Control Entre Redes'
está pensado para su uso
exclusivo por parte de generadores de
control de pasarela. Si el uso
efectivo de estos modos de
precedencia concierne a una red
en particular, es responsabilidad de
esa red controlar el acceso a, y
el uso de, esos modos de
precedencia.
Longitud Total: 16 bits
La Longitud Total es la longitud
del datagrama, medida en octetos,
incluyendo la cabecera y los
datos. Este campo permite que la
longitud máxima de un datagrama
sea de 65,535 octetos. Los
datagramas de tal longitud no
son prácticos para la mayoría de hosts
y redes. Todos los hosts deben
estar preparados para aceptar
datagramas de hasta 576 octetos
(tanto si llegan completos como en
fragmentos). Se recomienda que
los hosts envíen datagramas mayores
de 576 octetos sólo si tienen
la seguridad de que el destinatario
está preparado para aceptarlos.
El número 576 se ha
seleccionado para permitir que un bloque de
datos de tamaño razonable sea
transmitido junto a la información de
cabecera necesaria. Por ejemplo,
este tamaño permite que un bloque
de datos de 512 octetos más 64
octetos de cabecera quepa en un
datagrama . La cabecera internet
de tamaño máximo son 60 octetos, y
una cabecera internet típica
son 20 octetos, admitiendo así un
margen para cabeceras de
protocolos de nivel superior.
Identificación: 16 bits
Es un valor de identificación
asignado por el remitente como ayuda
en el ensamblaje de fragmentos
de un datagrama.
Flags (indicadores): 3 bits
Son diversos indicadores de
control.
Bit 0: reservado,
debe ser cero.
Bit 1: (DF) No
Fragmentar (Don't Fragment) 0 = puede fragmentarse,
1 = No Fragmentar.
Bit 2: (MF) Más
Fragmentos (More Fragments) 0 = Último Fragmento,
1 = Más Fragmentos.
0 1 2
+---+---+---+
| | D | M |
| 0 | F
| F |
+---+---+---+
Posición del Fragmento: 13 bits
Este campo indica a que parte
del datagrama pertenece este
fragmento.
La posición del fragmento se
mide en unidades de 8 octetos (64
bits). El primer fragmento tiene
posición 0.
Tiempo de Vida: 8 bits
Este campo indica el tiempo
máximo que el datagrama tiene permitido
permanecer en el sistema
internet. Si este campo contiene el valor
cero, entonces el datagrama debe
ser destruído. Este campo es
modificado durante el
procesamiento de la cabecera internet. El
tiempo es medido en segundos,
pero como todo módulo que procese un
datagrama debe decrementar el
TTL (Time To Live: Tiempo de Vida) al
menos en uno, incluso si procesa
el datagrama en menos de un
segundo, se debe pensar en el
TTL sólo como un límite superior del
tiempo durante el cual un
datagrama puede existir. La intención es
hacer que los datagramas
imposibles de entregar sean descartados, y
limitar el máximo periodo de
vida de un datagrama.
Protocolo:
8 bits
Este campo indica el protocolo
del siguiente nivel usado en la parte
de datos del datagrama internet.
Los valores de varios protocolos
son especificados en
"Números Asignados" [9].
Suma de Control de Cabecera: 16 bits
Suma de Control de la cabecera
solamente. Dado que algunos campos de
la cabecera cambian (p. ej. el
tiempo de vida), esta suma es
recalculada y verificada en cada
punto donde la cabecera internet es
procesada.
El algoritmo de la suma de
control es:
El
campo suma de control es el complemento a uno de 16 bits de la
suma de los
complementos a uno de todas las palabras de 16 bits de
la cabecera. A la
hora de calcular la suma de control, el valor
inicial de este
campo es cero.
Esta es una suma de control
fácil de calcular y la evidencia
experimental indica que es
adecuada, pero es provisional y puede ser
reemplazada por un procedimiento
CRC, dependiendo de la experiencia
ulterior.
Dirección de Origen: 32 bits
La dirección de origen. Ver sección 3.2.
Dirección de Destino: 32 bits
La dirección de destino. Ver sección 3.2.
Opciones:
variable
Las opciones pueden o no
aparecer en los datagramas. Deben ser
implementadas por todos los
módulos IP (host y pasarelas). Lo que es
opcional es su transmisión en
cualquier datagrama en particular, no
su implementación.
En algunos entornos la opción
de seguridad puede ser requerida en
todos los datagramas.
El campo opción es de longitud
variable. Pueden existir cero o más
opciones. Existen dos casos para
el formato de una opción:
Caso 1: Un sólo octeto de tipo-opción.
Caso 2: Un octeto tipo-opción, un octeto longitud-opción
y los
octetos correspondientes a los datos de opción.
El octeto longitud-opción es la
cuenta del octeto tipo-opción y el
octeto longitud-opción así
como los octetos de datos de opción.
El octeto tipo-opción tiene 3
campos
1 bit indicador de copiado,
2 bits clase de opción,
5 bits número de opción.
El indicador de copiado indica
si esta opción es copiada en todos
los fragmentos al fragmentar.
0 = no copiada
1 = copiada
Las clases de opción son:
0 = control
1 = reservado para
uso futuro
2 = depuración y
medida
3 = reservado para
uso futuro
Se definen las siguientes
opciones de internet:
CLASE
NUMERO LONGITUD DESCRIPCION
-----
------ -------- -----------
0 0 - Fin de la lista de opciones. Esta
opción
ocupa un sólo octeto. No tiene octeto de
longitud.
0 1 - Sin Operación. Esta opción ocupa un
sólo
octeto. No tiene octeto de longitud.
0 2 11 Seguridad. Usado para Seguridad,
Compartimentación, Grupo de Usuario
(TCC),
y Códigos de Manejo de Restricciones
compatibles con los requerimientos del
Departamento de Defensa.
0 3 var. Encaminamiento de Origen No Estricto
(Loose Source Routing). Usado para encaminar
el datagrama internet en base a la
información suministrada por el origen.
0 9 var. Encaminamiento de Origen Fijo (Strict
Source Routing). Usado para encaminar el
datagrama internet en base a la información
suministrada por el origen.
0 7 var. Registrar Ruta (Record Route). Usado para
rastrear la ruta que sigue un datagrama
internet.
0 8 4 Identificador de Flujo (Stream ID).
Usado
para
transportar el identificador de flujo.
2 4 var. Marca de Tiempo Internet (Internet
Timestamp)
Definiciones de Opciones
Específicas
Fin De La Lista de
Opciones
+--------+
|00000000|
+--------+
Tipo=0
Esta
opción indica el final de la lista de opciones. Esta puede
no
coincidir con el final de la cabecera internet ségún expresa
la
longitud de cabecera internet. Se usa al final de todas las
opciones,
no al final de cada opción, y sólo es necesario usarla
si,
caso de no hacerlo, el final de las opciones no coincidiera
con el
final de la cabecera internet.
Puede
ser copiado, introducido o borrado en la fragmentación, o
por
cualquier otra razón.
Sin Operación
+--------+
|00000001|
+--------+
Tipo=1
Esta
opción puede usarse entre opciones para, por ejemplo,
ajustar
el comienzo de una opción siguiente a una posición
múltiplo
de 32 bits.
Puede
ser copiado, introducido o borrado en la fragmentación, o
por
cualquier otra razón.
Seguridad
Esta
opción proporciona a los hosts una forma de enviar
parámetros
de seguridad, compartimentación, manejo de
restricciones
y TCC (grupo de usuarios cerrado). El formato de
esta
opción es el siguiente:
+--------+--------+---//---+---//---+---//---+---//---+
|10000010|00001011|SSS SSS|CCC CCC|HHH HHH| TCC |
+--------+--------+---//---+---//---+---//---+---//---+
Tipo=130 Longitud=11
Seguridad
(campo S): 16 bits
Especifica
uno de entre 16 niveles de seguridad (ocho de los
cuales
están reservados para uso futuro)
00000000 00000000 - No Clasificado
11110001 00110101 - Confidencial
01111000 10011010 - EFTO
10111100 01001101 - MMMM
01011110 00100110 - PROG
10101111 00010011 - Restringido
11010111 10001000 - Secreto
01101011 11000101 - Alto Secreto
00110101 11100010 - (Reservado para uso futuro)
10011010 11110001 - (Reservado para uso futuro)
01001101 01111000 - (Reservado para uso futuro)
00100100 10111101 - (Reservado
para uso futuro)
00010011 01011110 - (Reservado para uso futuro)
10001001 10101111 - (Reservado para uso futuro)
11000100 11010110 - (Reservado para uso futuro)
11100010 01101011 - (Reservado para uso futuro)
Compartimentos
(Campo C): 16 bits
Cuando
la información no está compartimentada se usa un valor
de
todo ceros. Otros valores para el campo Compartimentos
pueden
obtenerse de la Agencia de Inteligencia de Defensa.
Manejo
de Restricciones (campo H): 16 bits
Los
valores para los marcadores de control y liberación son
digrafos
alfanuméricos y están definidos en el Manual DIAM
65-19
"Marcadores de Seguridad Estándar", de la Agencia de
Inteligencia
de Defensa.
Código
de Control de Transmisión (Campo TCC): 24 bits
Proporciona
un mecanismo para segregar el tráfico y definir
comunidades
de interés controladas entre diversos
suscriptores. Los valores TCC son trigrafos, se pueden
encontrar
en "HQ DCA Code 530".
Debe
copiarse al fragmentar. Esta opción aparece como máximo una
vez
en un datagrama.
Ruta de Origen No
Estricta y Registrar Ruta
+--------+--------+--------+---------//--------+
|10000011|
long. | puntero| datos de ruta
|
+--------+--------+--------+---------//--------+
Tipo=131
La
opción de Encaminamiento de Origen No Estricto y Registrar
Ruta
("loose source and record route (LSRR)") proporciona un
mecanismo mediante el cual el origen
de un datagrama internet
puede
suministrar información de encaminamiento que será usada
por las
pasarelas para transmitir el datagrama a su destino, y
para
almacenar la información de la ruta.
La
opción comienza con el código de tipo de opción. El segundo
octeto
es la longitud de la opción que incluye al código de tipo
de
opción, al propio octeto de longitud, al octeto con el
puntero
y a los (long. - 3) octetos de datos de la ruta. El
tercer
octeto es el puntero a los datos de ruta que indica el
octeto
en el cual comienza la siguiente dirección de origen a
procesar.
El puntero es relativo a esta opción, y el valor legal
más
pequeño para el puntero es 4.
Los
datos de ruta se componen de una serie de direcciones
internet.
Cada dirección internet son 32 bits o 4 octetos. Si el
puntero
es mayor que la longitud, la ruta de origen está vacía
(y la
ruta registrada llena) y el encaminamiento debe basarse en
el campo
de la dirección de destino.
Si se ha
alcanzado la dirección indicada en el campo dirección
de
destino y el puntero no es mayor que la longitud, la
siguiente
dirección en la ruta de origen sustituye a la
dirección
del campo de dirección de destino, y la dirección de
ruta
registrada sustituye a la dirección de origen recién usada,
y se
suma cuatro al puntero.
La
dirección de ruta registrada es la propia dirección internet
que
tiene el módulo internet en el entorno en el cual el
datagrama
está siendo reenviado.
Este
procedimiento de sustituir la ruta de origen con la ruta
registrada
(si bien está en orden inverso del necesario para ser
usada
como ruta de origen) significa que la opción (y la
cabecera
IP en su totalidad) sigue teniendo una longitud
constante
a medida que el datagrama progresa a través de
internet.
Esta
opción es una ruta de origen no estricta porque la pasarela
o IP del
host puede utilizar cualquier ruta con cualquier número
de
pasarelas intermedias para alcanzar la siguiente dirección en
la ruta.
Debe
copiarse al fragmentar. Aparece como máximo una vez en un
datagrama.
Ruta de Origen
Estricta y Registrar Ruta
+--------+--------+--------+---------//--------+
|10001001|
long. | puntero| datos de ruta
|
+--------+--------+--------+---------//--------+
Tipo=137
La
opción de Ruta de Origen Estricta y Registrar Ruta (strict
source
and record route (SSRR)) proporciona al origen de un
datagrama
internet un medio de suministrar información de
encaminamiento
a ser usada por las pasarelas al reenviar el
datagrama
al destino y para registrar la información de la ruta.
La
opción comienza con el código de tipo de opción. El segundo
octeto
es la longitud de la opción que incluye al código de tipo
de
opción, al propio octeto de longitud, al octeto con el
puntero
y a los (long. - 3) octetos de datos de la ruta. El
tercer
octeto es el puntero a los datos de ruta que indica el
octeto
en el cual comienza la siguiente dirección de origen a
procesar.
El puntero es relativo a esta opción, y su menor valor
legal es
4.
Los
datos de ruta se componen de una serie de direcciones
internet.
Cada dirección internet son 32 bits o 4 octetos. Si el
puntero
es mayor que la longitud, la ruta de origen está vacía
(y la
ruta registrada llena) y el encaminamiento debe basarse en
el campo
de la dirección de destino.
Si se ha
alcanzado la dirección indicada en el campo de
dirección
de destino y el puntero no es mayor que la longitud,
la
siguiente dirección en la ruta de origen sustituye a la
dirección
del campo de dirección de destino, y la dirección de
ruta
registrada sustituye a la dirección de origen recién usada,
y se
suma cuatro al puntero.
La
dirección de ruta registrada es la propia dirección internet
del
módulo internet tal y como es en el entorno en el cual el
datagrama
está siendo reexpedido.
Este
procedimiento de sustituir la ruta de origen con la ruta
registrada
(si bien está en orden inverso del necesario para ser
usada
como ruta de origen) significa que la opción (y la
cabecera
IP en su totalidad) sigue teniendo una longitud
constante
a medida que el datagrama progresa a través de
internet.
Esta
opción es una ruta de origen estricta porque la pasarela o
el IP
del host deben enviar el datagrama directamente a la
siguiente
dirección en la ruta de origen sólamente a través de
la red
conectada directamente indicada en la siguiente
dirección,
para alcanzar la siguiente pasarela o host
especificado
en la ruta.
Debe
copiarse al fragmentar. Aparece como máximo una vez en un
datagrama.
Registrar Ruta
+--------+--------+--------+---------//--------+
|00000111|
long. | puntero| datos de ruta |
+--------+--------+--------+---------//--------+
Tipo=7
La
opción de Registrar Ruta proporciona un mecanismo para
registrar
la ruta de un datagrama internet.
La
opción comienza con el código de tipo de opción. El segundo
octeto
es la longitud de la opción que incluye al código de tipo
de
opción, al propio octeto de longitud, al octeto con el
puntero
y a los (long. - 3) octetos de datos de la ruta.El
tercer
octeto es el puntero a los datos de ruta que indica el
octeto
en el cual comienza la siguiente area para almacenar una
dirección
de ruta. El puntero es relativo a esta
opción, y su
menor
valor legal es 4.
Una
ruta registrada se compone de una serie de direcciones
internet.
Cada dirección internet son 32 bits o 4 octetos. Si el
puntero
es mayor que la longitud, el area de datos de la ruta
registrada
esta llena. El host de origen debe construir
esta
opción
con una área de datos de ruta con suficiente espacio para
contener
todas las direcciones esperadas. El tamaño de la opción
no
cambia al agregar direcciones. El contenido inicial del área
de datos
de ruta debe ser cero.
Cuando
un módulo internet encamina un datagrama, comprueba si la
opción
Registrar ruta está presente. Si lo está, inserta su
propia
dirección internet, tal y como se la conoce en el entorno
en el
cual el datagrama está siendo transmitido, en la ruta
registrada,
comenzando en el octeto indicado por el puntero, e
incrementa
el puntero en cuatro.
Si el área de datos de ruta ya está llena (el puntero sobrepasa
a
longitud) el datagrama es transmitido sin insertar la
direcciòn
en la ruta registrada. Si hay algo de espacio pero no
el
suficiente para insertar una dirección completa, el datagrama
original
es considerado erróneo y descartado. En ambos casos se
puede
enviar un mensaje de problema de parámetros ICMP al host
de
origen [3].
No se
copia al fragmentar, va sólo en el primer fragmento.
Aparece
como máximo una vez en un datagrama.
Identificador de
Flujo
+--------+--------+--------+--------+
|10001000|00000010| ID de Flujo
|
+--------+--------+--------+--------+
Tipo=136
Longitud=4
Esta
opción proporciona una forma de transportar el
identificador
de flujo SATNET de 16 bits a través de redes que
no
soportan el concepto de flujo.
Debe
copiarse al fragmentar. Aparece como máximo una vez en un
datagrama.
Marca de tiempo
Internet
+--------+--------+--------+--------+
|01000100|
long. | puntero|oflw|flg|
+--------+--------+--------+--------+
| dirección
internet |
+--------+--------+--------+--------+
| Marca
de tiempo
|
+--------+--------+--------+--------+
|
.
|
.
.
Tipo =
68
La
Longitud de opción es el número de octetos en la opción
contando
los octetos de tipo, longitud, puntero y
desbordamiento/indicadores
(oflw/flg, overflow/flags) (máxima
longitud:
40)
El
puntero es el número de octetos desde el principio de esta
opción
hasta el final de las marcas de tiempo mas uno (es decir,
apunta
al octeto de comienzo del espacio para la siguiente marca
de
tiempo). El valor legal mínimo es 5. El área de marca de
tiempo
está llena cuando el puntero es mayor que la longitud.
El
Desbordamiento (oflw) (4 bits) es el número de módulos IP que
no han
podido registrar marcas de tiempo debido a falta de
espacio.
Los
valores de los Indicadores (4 bits) son
0
-- Sólo marcas de tiempo, almacenadas en palabras de 32 bits
consecutivas,
1
-- cada marca de tiempo es precedida con la dirección
internet de la entidad registradora,
3
-- Los campos de dirección internet están preespecificados.
Un módulo IP registra su marca de tiempo sólo si su
dirección concuerda con la siguiente dirección internet
especificada.
La Marca
de Tiempo es una marca temporal de 32 bits, justificada
a la
derecha, en milisegundos desde la medianoche UT. Si el
tiempo
no está disponible en milisegundos o no puede darse con
respecto
a la medianoche UT, entonces se puede insertar
cualquier
tiempo como marca de tiempo, siempre que el bit de
mayor
orden sea puesto a uno para indicar el uso de un valor no
estándar.
El host
de origen debe construir está opción con un área de
datos
para la marca de tiempo lo sufucientemente grande para que
quepa
toda la información de marcas temporales esperada. El
tamaño
de la opción no cambia al añadir marcas de tiempo. El
contenido
inicial del área de datos de marcas de tiempo debe ser
cero o
pares dirección internet/cero.
Si el
área de datos de marca de tiempo ya está llena (el puntero
sobrepasa
a la longitud) el datagrama es transmitido sin
insertar
marca de tiempo, pero el contador de desbordamiento es
incrementado
en uno.
Si hay
algo de espacio pero no el suficiente para insertar una
marca de
tiempo completa, o el contador de desbordamiento el
mismo se
desborda, el datagrama original es considerado erróneo
y
descartado. En ambos casos se puede enviar un mensaje de
problema
de parámetros ICMP al host de origen [3].
La
opción de marca de tiempo no se copia al fragmentar. Es
transportada
sólo en el primer fragmento. Aparece como máximo
una vez
en un datagrama.
Valor de Relleno: variable
El Valor de Relleno se usa para
asegurar que la cabecera internet
ocupa un multiplo de 32 bits. El
valor de relleno es cero.
3.2. Discusión
La implementación de un protocolo debe ser
robusta. Cada
implementación debe estar preparada para
interoperar con otras creadas
por diferentes individuos. Aunque el objeto
de esta especificación es
ser explícita acerca del protocolo, existe
la posibilidad de que se
produzcan interpretaciones discrepantes. En
general, una
implementación debe ser conservadora en su
comportamiento al enviar, y
tolerante al recibir. Es decir, debe tener
cuidado de enviar
datagramas bien formados , pero debe aceptar
cualquier datagrama que
pueda interpretar (p. ej. no poner pegas a
errores técnicos cuando a
pesar de ello el significado sea claro).
El servicio básico internet está orientado
a datagramas y posibilita
la fragmentación de datagramas en las
pasarelas, teniendo lugar el
reensamblaje en el módulo internet de
destino en el host de destino.
Naturalmente, la fragmentación y el
reensamblaje de datagramas en una
red o mediante acuerdo privado entre las
pasarelas de una red está
permitido también, dado que esto es
transparente a los protocolos
internet y a protocolos de nivel superior.
Este tipo de fragmentación
y reensamblaje transparente se denomina
fragmentación "dependiente de
la red" (o intranet) y no se tratará
más sobre ello aquí.
En las direcciones internet se distingue
entre orígenes (fuentes) y
destinos a nivel de host y se proporciona
también un campo en el
protocolo para ellas. Se ha asumido que cada
protocolo proporcionará
los medios para cualquier multiplexado que
sea necesario en un host.
Direccionamiento
Para proporcionar flexibilidad
en la asignación de direcciones a
redes y tener en cuenta un gran
número de redes de pequeño a medio
tamaño, la interpretación del
campo dirección está codificada para
especificar un peuqeño número
de redes con un gran número de hosts,
un número moderado de redes con
un número moderado de hosts, y un
gran
número de redes con un pequeño número de hosts. Además
existe
un código de escape para un
modo de direccionamiento extendido.
Formatos de dirección:
Bits de mayor orden Formato
Class
------------------- ------------------------------- -----
0
7 bits de red, 24 bits de host
a
10
14 bits de red, 16 bits de host b
110
21 bits de red, 8 bits de host c
111 cód.
escape para modo extendido
Un valor cero en el
campo de red indica la red actual. Sólo se usa
en ciertos mensajes
ICMP. El modo de direccionamiento extendido no
está definido.
Ambas características están reservadas para uso
futuro.
Los valores efectivos asignados
para direcciones de red se dan en
"Números asignados"
[9].
La dirección local, asignada
por la red local, debe tener en cuenta
que un sólo host puede actuar
como varios hosts internet distintos.
Es decir, debe existir una
correspondencia, entre direcciones de
host internet e interfaces de
red/host que permitan que a un
interface le correspondan varias
direcciones internet. Se debe tener
en cuenta que un host puede
tener varios interfaces físicos y deba
tratar los datagramas de varios
de ellos como si fueran destinados
al mismo host.
La correspondencia entre
direcciones internet y direcciones para
ARPANET, SATNET, PRNET y otras
redes se describen en
"Correspondencias entre
direcciones" [5].
Fragmentación y Reensamblaje.
El campo de identificación
internet (ID) se usa junto con las
direcciones de origen y destino,
y los campos de protocolo, para
identificar fragmentos de
datagrama para su reensamblaje.
El bit indicador Más Fragmentos
("More Fragments") (MF) está a uno
si el datagrama no es el
último fragmento. El campo Posicón de
Fragmento ("Fragment
Offset") identifica la posición del fragmento,
relativa al comienzo del
datagrama original no fragmentado. Los
fragmentos se miden en unidades
de 8 octetos. La estrategia de
fragmentación
está diseñada de forma que un datagrama no fragmentado
tiene toda su información de
fragmentación a cero (MF = 0, posición
de fragmento = 0). Si un
datagrama internet es fragmentado, su parte
de datos debe ser dividida en
múltiplos de 8 octetos.
Este formato permite 2**13 =
8192 fragmentos de 8 octetos cada uno,
para un total de 65,536 octetos.
Nótese que esto es consistente con
el campo de longitud total del
datagrama (por supuesto, la cabecera
se cuenta en la longitud total
y no en los fragmentos).
Cuando tiene lugar la
fragmentación, algunas opciones se copian,
pero otras permanecen sólo en
el primer fragmento.
Cada módulo internet debe ser
capaz de transmitir un datagrama de 68
octetos sin necesidad de más
fragmentación. Esto es porque una
cabecera internet puede ser de
hasta 60 octetos, y el fragmento
mínimo son 8 octetos.
Todo destino internet debe ser
capaz de recibir un datagrama de 576
octetos en una sola pieza o en
fragmentos a reensamblar.
Los campos que pueden verse
afectados por la fragmentación incluye
a:
(1) el campo
opciones
(2) el indicador
Más Fragmentos
(3) la posición del
fragmento
(4) el campo
longitud de la cabecera internet
(5) el campo
longitud total
(6) la suma de
control de la cabecera
Si el indicador "Don't
Fragment" (No Fragmentar) (DF) está a uno,
entonces NO está permitida la
fragmentación de este datagrama, si
bien puede ser descartado. Esto
puede utilizarse para prohibir la
fragmentación en casos donde el
host receptor no dispone de
suficientes recursos para
reensamblar los fragmentos internet.
Un ejemplo del uso de la
característica "Don't Fragment" es aliviar
la carga de un pequeño host. Un
pequeño host podría tener un
programa de arranque que acepte
un datagrama, lo almacene en memoria
y lo ejecute.
Los procedimientos de
fragmentación y reensamblaje se describen de
forma mucho más sencilla
mediante ejemplos. Los siguientes
procedimientos son
oimplementaciones de ejemplo.
Notación general en los
pseudo-programas siguientes: "=<" significa
"menor o igual que",
"#" significa "no igual", "=" significa
"igual",
"<-" significa "se le asigna". Además, "x to y" incluye
'x'
y excluye 'y'; por ejemplo,
"4 to 7" incluiría 4, 5 y 6 (pero no 7).
Un Ejemplo de Procedimiento de
Fragmentación
Al datagrama de
tamaño máximo que se puede transmitir a través de
la siguiente red se
le llama la unidad de transmisión máxima
(maximun
transmission unit (MTU)).
Si la longitud
total es menor o igual la unidad de transmisión
máxima entonces
pasar este datagrama al siguiente paso en el
procesamiento de
datagrama; sino partir el datagrama en dos
fragmentos, siendo
el primero de tamaño máximo, y el segundo el
resto del
datagrama. El primer fragmento es pasado al siguiente
paso en el
procesamiento de datagramas, mientras que el segundo
fragmento se pasa
otra vez a este procedimiento en caso de ser
todavía demasiado
grande.
Notación:
FO - Posición de Fragmento ("Fragment
Offset")
IHL - Long.
de la cabecera internet (Internet Header Length)
DF -
Indicador No Fragmentar ("Don't Fragment")
MF -
indicador Más Fragmentos ("More Fragment")
TL -
Longitud total (Total Length)
OFO - FO
Previo ("Old Fragment Offset")
OIHL - IHL
Previo
OMF - indicador
MF Previo (Old More Fragments)
OTL - Longitud
total previa (Old Total Length)
NFB - Núm.
de bloques de fragmento
(Number of Fragment Blocks)
MTU - Unidad
de transmisión máxima
(Maximum Transmission Unit)
Procedimiento:
SI TL
=< MTU ENTONCES
Pasar este datagrama al siguiente paso en el procesamiento
de datagramas.
SINO SI
DF = 1 ENTONCES
descartar el datagrama
SINO
Para
producir el primer fragmento:
(1) Copiar la cabecera internet original;
(2) OIHL <- IHL; OTL <- TL; OFO <- FO; OMF
<- MF;
(3) NFB <- (MTU-IHL*4)/8;
(4) Adjuntar los primeros NFB*8 octetos de datos;
(5) Corregir la cabecera:
MF <- 1; TL <- (IHL*4)+(NFB*8);
Recalcular la Suma de Control;
(6) Pasar este datagrama al siguiente paso en el
procesamiento
de datagramas;
Para
producir el segundo fragmento:
(7) Copiar de forma selectiva la cabecera internet
(algunas
opciones no se copian, ver definiciones de opción);
(8) Añadir los datos restantes;
(9) Corregir la cabecera:
IHL <- (((OIHL*4)-(long. de opciones no copiadas))+3)/4;
TL <- OTL - NFB*8 - (OIHL-IHL)*4);
FO <- OFO + NFB; MF <- OMF; Recalcular Suma de Control;
(10)
Pasar este fragmento al test de fragmentación; FIN.
En el procedimiento
anterior cada fragmento (excepto el último)
fue construído con
el tamaño máximo permitido. Otra alternativa
podría producir
datagramas menores que el tamaño máximo. Por
ejemplo, uno podría
implementar un procedimiento de fragmentación
que dividiera
repetidamente los datagramas grandes en dos hasta
que los fragmentos
resultantes fueran de menor tamaño que el
tamaño de la
unidad de transmisión máxima.
Un ejemplo de Procedimiento de
Reensamblaje
Para cada datagrama
el identificador de buffer se calcula como la
concatenación de
los campos de origen, destino, protocolo e
identificación. Si
se trata de un datagrama completo (es decir,
los campos Posición
de Fragmento y Más Fragmentos son cero),
entonces todos los
recursos de reensamblaje asociados con este
identificador de
buffer son liberados y el datagrama se pasa al
siguiente paso en el
procesamiento de datagramas.
Si no hay a mano
otros fragmentos con este identificador de buffer
entonces se asignan
recursos de reensamblaje. Los recursos de
reensamblaje
consisten en un buffer de datos, un buffer de
cabecera, una tabla
de bits de bloque de fragmento, un campo de
longitud total de
datos, y un temporizador. Los datos contenidos
en el fragmento se
guardan en el buffer de datos de acuerdo con su
posición de
fragmento y longitud y se modifican bits en la tabla
de bits de bloques
de fragmento correspondientes a los bloques de
fragmento recibidos.
Si este es el primer
fragmento (es decir, la posición del
fragmento es cero)
esta cabecera se guarda en el buffer de
cabecera. Si este es
el último fragmento (es decir, su campo Más
Fragmentos es cero)
se calcula la longitud total de los datos. Si
este fragmento
completa el datagrama ( lo cual se comprueba
mirando los bits
puestos a uno en la tabla de bloques de
fragmento), entonces
el datagrama es enviado al siguiente paso en
el procesamiento de
datagramas; sino se le asigna al temporizador
el máximo de su
valor actual y el valor del campo Tiempo de Vida
de este fragmento; y
por último la rutina de reensamblaje devuelve
el control.
Si el temporizador
se agota, se liberan todos los recursos de
reensamblaje para
este identificador de buffer. El valor inicial
del
temporizador es un límite inferior del tiempo de espera de
reensamblaje. Esto
es así porque el tiempo de espera será
incrementado si el
Tiempo de Vida del fragmento recién llegado es
mayor que el valor
actual del temporizador, pero no será
decrementado si es
menor. El valor máximo que este temporizador
puede alcanzar es el
timepo de vida máximo (aproximadamente 4.25
minutos). La
recomendación actual para el valor inicial del
temporizador es 15
segundos. Este puede variar conforme la
experiencia con este
protocolo se acumule. Nótese que la elección
del valor de este
parámetro está relacionada con la capacidad de
buffer disponible y
la velocidad de datos del medio de
transmisión; es
decir, la velocidad de datos por el valor del
temporizador es
igual al tamaño del buffer (p. ej., 10Kb/s X 15s =
150 Kb).
Notación:
FO -
Posición del Fragmento ("Fragment Offset")
IHL - Long.
de la cabecera internet (Internet Header Length)
MF -
indicador Más Fragmentos ("More Fragments")
TTL - Timepo
de Vida
NFB - Núm.
de bloques de fragmento
(Number of Fragment Blocks)
TL -
Longitud total (Total Length)
TDL - Longitud
total de Datos (Total Data Length)
BUFID - Identificador de buffer (Buffer Identifier)
RCVBT - Tabla de Bits de Fragmentos Recibidos
(Fragment Received Bit Table)
TLB - Límite
Inferior del Temporizador (Timer Lower Bound)
Procedimiento:
(1) BUFID <-
origen|destino|protocolo|identificación;
(2) SI FO = 0 Y MF = 0
(3) ENTONCES SI está reservado el
buffer con BUFID
(4) ENTONCES liberar
todo el reensamblaje para este BUFID;
(5) Pasar el datagrama
al siguiente paso; FIN.
(6) SINO SI no está reservado el
buffer con BUFID
(7) ENTONCES
Asignar recursos de reensamblaje con
BUFID;
TEMPORIZADOR <- TLB; TDL <- 0;
(8) guardar
los datos del fragmento en el buffer de
datos con BUFID desde el octeto FO*8 al octeto
(TL-(IHL*4))+FO*8;
(9) poner
a uno los bits RCVBT desde FO
a FO+((TL-(IHL*4)+7)/8);
(10) SI MF = 0
ENTONCES TDL <- TL-(IHL*4)+(FO*8)
(11) SI FO =
0 ENTONCES
guardar cabecera en buffer de cabecera
(12) SI TDL #
0
(13) Y
todos los bits RCVBT desde 0 a (TDL+7)/8 son uno
(14)
ENTONCES TL <- TDL+(IHL*4)
(15)
Pasar el datagrama al siguiente paso;
(16)
liberar todos los recursos de reensamblaje
para este BUFID; FIN.
(17) TEMPORIZADOR
<- MAX(TEMPORIZADOR,TTL);
(18) ceder
control hasta siguiente fragmento o hasta que
el temporizador se agote;
(19) El
temporizador se ha agotado: vaciar todo el reensamblaje
con este BUFID; FIN.
En el caso en que
dos o más fragmentos contengan los mismos datos
tanto idénticamente
como por solapamiento parcial, este
procedimiento usará
la copia llegada más recientemente en el
buffer de datos y en
el datagrama entregado.
Identificación
La elección del Indentificador
de un datagrama está basada en la
necesidad de proporcionar una
forma de identificar de forma única un
datagrama en particular. El
módulo del protocolo que reensambla
fragmentos los evalía como
pertenecientes al mismo datagrama si
tienen el mismo origen, destino,
protocolo e Identificador. De este
modo el remitente debe elegir un
Identificador que sea único para
ese par origen-destino y ese
protocolo, y durante el tiempo que el
detagrama (o cualquier fragmento
suyo) pueda perdurar en internet.
Parece entonces que un módulo
de protocolo que actue de remitente
necesite mantener una tabla de
Identificadores, con una entrada por
cada destino con el que haya
comunicado en el último periodo de
máxima duración de un paquete
en internet.
Sin embargo, dado que el campo
Identificador permite 65,536 valores
diferentes, algún host puede
ser capaz de usar simplemente
identificadores únicos
independientemente del destino.
Para algunos protocolos de nivel
superior resulta adecuado elegir el
identificador. Por ejemplo, los
módulos de protocolo TCP pueden
retransmitir un segmento TCP
idéntico, y la probabilidad de una
recepción correcta se vería
ampliada si la retransmisión lleva el
mismo identificador que la
transmisión original, ya que se podrían
usar fragmentos de cualquiera de
los dos datagramas para construir
un segmento TCP correcto.
Tipo de Servicio
El Tipo de servicio (Type Of
Service (TOS)) se utiliza para la
selección de la calidad del
servicio internet. El tipo de servicio
se especifica a través de los
parámetros abstractos de precedencia,
demora, rendimiento, y
fiabilidad. Estos parámetros abstractos se
hacen corresponder con
parámetros de servicio efectivos de las redes
particulares que el datagrama
atraviesa.
Precedencia. Medida
independiente de la importancia de este
datagrama.
Demora. La entrega inmediata es
importante para datagramas con esta
indicación.
Rendimiento. Una alta velocidad
de datos es importante para
datagramas con esta indicación.
Fiabilidad. Para datagramas con
esta indicación es importante un
mayor nivel de esfuerzo para
asegurar la entrega.
Por ejemplo, La ARPANET tiene un
bit de prioridad, y la posibilidad
de elegir entre mensajes
"estándar" (tipo 0) y "no controlados"
(tipo 3) (La elección entre
mensajes de paquete único o multipaquete
puede considerarse también un
parámetro de servicio). Los mensajes
no controlados tienden a ser
entregados con menos fiabilidad y a
sufrir menos demora. Supóngase
que un datagrama internet se va a
enviar a través de ARPANET. Sea
el tipo de servicio internet dado
como:
Precendencia: 5
Demora: 0
Rendimiento: 1
Fiabilidad: 1
En este ejemplo, la
correspondencia de estos parámetros con aquellos
disponibles para ARPANET sería
poner a uno el bit de prioridad de
ARPANET, ya que la precedencia
Internet se sitúa en la mitad
superior de su escala,
seleccionar mensajes estándar ya que se han
indicado los requerimientos de
rendimiento y fiabilidad y no de
demora. Se dan más detalles
sobre correspondencias de servicio en
"Correspondencias de
Servicio ("Service Mappings") [8].
Tiempo de Vida
El tiempo de vida es establecido
por el remitente al tiempo máximo
que un datagrama puede estar en
el sistema internet. Si el datagrama
permanece en el sistema internet
durante más tiempo que su tiempo de
vida, entonces el datagrama debe
ser destruído.
Este campo debe ser decrementado
en cada punto donde se procese para
reflejar el tiempo invertido en
procesar el datagrama. Incluso si no
existe información local acerca
del tiempo realmente empleado, el
campo debe decrementarse en 1.
El tiempo es medido en unidades de
segundo (es decir, el valor 1
significa un segundo). Por tanto, el
tiempo de vida máximo son 255
segundos o 4.25 minutos. Como todo
módulo que procese un datagrama
debe decrementar el TTL por lo menos
en uno incluso si lo procesa en
menos de un segundo, debe pensarse
en el TTL sólo como un límite
superior del tiempo que un datagrama
puede existir. La intención es
hacer que los datagramas que no se
pueden entregar sean
descartados, y limitar el máximo periodo de
vida del datagrama.
Algunos protocolos de conexión
fiables de alto nivel se basan en la
presunción de que los
datagramas duplicados más viejos no llegarán
después de pasar un cierto
tiempo. El TTL es para tales protocolos
un medio de tener la seguridad
de que su suposición se cumple.
Opciones
Las opciones son opcionales en
cada datagrama, pero obligatorias en
las implementaciones. Es decir,
la presencia o ausencia de una
opción es elección del
remitente, pero cada módulo internet debe ser
capaz de analizar cualquier
opción. Puede haber varias opciones
presentes en el campo opción.
Las opciones pueden no ocupar
exactamente un espacio múltiplo de 32
bits. La cabecera debe ser
completada con octetos de ceros. El
primero de estos será
interpretado como la opción fin-de-opciones, y
el resto como el relleno de la
cabecera internet.
Todo módulo internet debe ser
capaz de actuar en cada opción. La
Opción de Seguridad es
obligatoria si se debe atravesar un tráfico
clasificado, restringido o
compartimentado.
Suma de Control
La suma de control de la
cabecera internet es recalculada si la
cabecera es modificada. Por
ejemplo, una reducción del tiempo de
vida, las adiciones o cambios en
las opciones internet, o debido a
la fragmentación. Esta suma de
control a nivel internet está pensada
para proteger de errores de
transmisión los campos de la cabecera
internet.
Existen algunas aplicaciones
donde son aceptables unos pocos errores
en los bits de datos, mientras
que los retrasos por retransmisión no
lo son. Si el protocolo internet
impusiera la exactitud de datos
tales aplicaciones no podrían
ser soportadas.
Errores
Los errores en el protocolo
internet pueden indicarse mediante los
mensajes ICMP [3].
3.3. Interfaces
La descripción funcional de interfaces de
usuario para IP es, en el
mejor de los casos, ficticia, ya que cada
sistema operativo dispondrá
de distintos recursos. En consecuencia,
debemos advertir a los
lectores que diferentes implementaciones IP
pueden tener diferentes
interfaces de usuario. Sin embargo, todas
deben proporcionar un cierto
conjunto mínimo de servicios para
garantizar que todas las
implementaciones IP pueden soportar la misma
jerarquía de protocolos.
Esta sección especifica las interfaces
funcionales obligatorias para
todas las implementaciones IP.
El protocolo internet interactúa con la red
local por un lado y con un
protocolo de nivel superior o una
aplicación por el otro. En lo que
sigue, el protocolo de nivel superior o
aplicación (o incluso un
programa pasarela) será llamado el
"usuario", dado que es lo que usa
el módulo internet. Como el protocolo
internet es un protocolo de
datagramas, se mantiene un mínimo de
memoria o estado entre
transmisiones de datagramas, y cada llamada
del usuario al módulo del
protocolo internet proporciona toda la
información necesaria para que
el IP ejecute el servicio pedido.
Interface Ejemplo de nivel superior
Las siguientes dos llamadas de ejemplo
satisfacen los requisitos de la
comunicación entre el usuario y el módulo
del protocolo internet ("=>"
significa 'devuelve'):
SEND (src, dst, prot, TOS, TTL, BufPTR, len,
Id, DF, opt => result)
donde:
src = dirección de
origen
dst = dirección de
destino
prot = protocolo
TOS = tipo de
servicio
TTL = tiempo de vida
BufPTR = puntero a
buffer
len = longitud del
buffer
Id = Identificador
DF = No Fragmentar
opt = datos de
opción
result = respuesta
OK =
datagrama enviado correctamente
Error =
error en los argumentos o error en la red local
Nótese que la precedencia se
incluye en el TOS y la
seguridad/compartimiento se pasa
como opción.
RECV (BufPTR, prot, => result, src, dst,
TOS, len, opt)
donde:
BufPTR = puntero a
buffer
prot = protocolo
result = respuesta
OK =
datagrama recibido correctamente
Error =
error en los argumentos
len = longitud del
buffer
src = dirección de
origen
dst = dirección de
destino
TOS = tipo de
servicio
opt = datos de
opción
Cuando el usuario envía un datagrama,
ejecuta la llamada SEND
suministrando todos los argumentos. El
módulo del protocolo internet,
al recibir esta llamada, comprueba los
argumentos y prepara y envía el
mensaje. Si los argumentos son válidos y el
datagrama es aceptado por
la red local, la llamada retorna con éxito.
Si los argumentos no son
correctos, o bien el datagrama no es
aceptado por la red local, la
llamada retorna sin éxito. En retornos de
llamada sin éxito, se debe
construir un informe razonable sobre la
causa del problema, pero los
detalles de tales informes corresponden a
las distintas
implementaciones.
Cuando un datagrama llega al módulo del
protocolo internet desde la
red local, o hay una llamada RECV pendiente
del usuario al que va
dirigido o no la hay. En el primer caso, la
llamada pendiente es
satisfecha pasando la información desde el
datagrama al usuario. En el
segundo caso, se notifica al usuario de
destino que tiene un datagrama
pendiente. Si el usuario de destino no
existe, se devuelve un mensaje
de error ICMP al remitente, y los datos son
desechados.
La notificación de un usuario puede ser a
través de una pseudo
interrupción o un mecanismo similar,
correspondiente al entorno
particular del sistema operativo de la
implemetación.
Una llamada RECV de usuario puede ser
inmediatamente satisfecha por un
datagrama pendiente, o bien quedar pendiente
hasta que llegue un
datagrama.
La dirección de origen se incluye en la
llamada SEND en el caso de que
el host remitente tenga varias direcciones
(múltiples conexiones
físicas o direcciones lógicas). El módulo
internet debe comprobar que
la dirección de origen es una de las
direcciones legales de este host.
Una implementación también puede permitir
o exigir una llamada al
módulo internet para indicar interes en o
reservar para uso exclusivo
una clase de datagramas (p. ej., todos
aquellos con un cierto valor en
el campo protocolo)
Esta sección caracteriza funcionalmente una
interfaz USUARIO/IP. La
notación utilizada es similar a la mayoría
de llamadas de función de
lenguajes de alto nivel, pero este uso no
pretende excluir las
llamadas de sewrvicio tipo 'trap' (p. ej.,
SVCs, UUOs, EMTs), o
cualquier otra forma de comunicación entre
procesos.
APENDICE A: Ejemplos y Escenarios
Ejemplo 1:
Este es un ejemplo de un datagrama internet
con un mínimo de datos:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver= 4 |IHL= 5 | Tipo de Serv. | Long. Total =
21 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Identificación = 111 |Flg=0| Pos. de Fragmento = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
TTL = 123 | Protocolo = 1 |
suma de control
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
dirección de origen
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
dirección de destino
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
datos |
+-+-+-+-+-+-+-+-+
Ejemplo de Datagrama Internet
Figura 5.
Nótese que cada división representa una
posición de un bit.
Este es un datagrama internet en la versión
4 del protocolo internet;
la cabecera internet consta de 5 palabras de
32 bits, y la longitud
total del datagrama es de 21 octetos. Este
datagrama es un datagrama
completo (no un fragmento).
Ejemplo 2:
En este ejemplo, se muestra primero un
datagrama internet de tamaño
medio (452 octetos de datos), y después dos
fragmentos internet que
podrían ser resultado de la fragmentación
de este datagrama si la
transmisión de máximo tamaño permitida
fuese de 280 octetos.
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver= 4 |IHL= 5 | Tipo de Serv. | Long. Total =
472 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Identificación = 111 |Flg=0| Pos. de Fragmento = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
TTL = 123 | Protocolo = 6 |
suma de control
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
dirección de origen
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
dirección de destino
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
datos
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
datos
|
\
\
\
\
|
datos
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
datos
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Ejemplo de Datagrama Internet
Figura 6.
Ahora el primer fragmento resultado de
dividir el datagrama a los 256
octetos.
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver= 4 |IHL= 5 | Tipo de Serv. | Long. Total =
276 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Identificación = 111 |Flg=1| Pos. de Fragmento = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
TTL = 119 | Protocolo = 6 |
suma de control
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
dirección de origen
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
dirección de destino
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
datos
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
datos
|
\
\
\
\
|
datos
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
datos
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Ejemplo de Fragmento Internet
Figura 7.
Y el segundo fragmento.
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver= 4 |IHL= 5 | Tipo de Serv. | Long. Total =
216 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Identificación = 111 |Flg=0| Pos. de Fragmento = 32 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
TTL = 119 | Protocolo = 6 |
suma de control
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
dirección de origen
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
dirección de destino
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
datos
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
datos
|
\
\
\
\
|
datos
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
datos
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Ejemplo de Fragmento Internet
Figura 8.
Example 3:
Aqui se muestra un ejemplo de un datagrama
que contiene opciones:
0
1
2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver= 4 |IHL= 8 | Tipo de Serv. | Long. Total =
576 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
Identificación = 111 |Flg=0| Pos. de Fragmento = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
TTL = 123 | Protocolo = 6 |
suma de control
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
dirección de origen
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
dirección de destino
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cód. Opc. = x | Long. Opc.= 3 |
valor opción | Cód. Opc. = x |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Long. Opc.= 4 | valor de
opción |
Cód. Opc. = 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cód. Opc. = y | Long. Opc.= 3 |
valor opción | Cód. Opc. = 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
datos
|
\
\
\
\
|
datos
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
datos
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Ejemplo de Datagrama Internet
Figura 9.
APENDICE B: Orden de Transmisión de Datos
El orden de transmisión de la cabeceras y
los datos descritos en este
documento se resuelve a nivel de octeto.
Cuando un diagrama muestra un
grupo de octetos, el orden de transmisión
de éstos es el orden normal
en el cual se leen en Inglés. Por ejemplo,
en el siguiente diagrama
los octetos son transmitidos en el orden en
el que van numerados.
0
1 2
3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
1 | 2 | 3 | 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
5 | 6 | 7 | 8 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
9 | 10 | 11 | 12 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Orden de Transmisión de Bytes
Figura 10.
Cuando un octeto representa una cantidad
numérica el bit más a la
izquierda en el diagrama es el bit de mayor
orden o bit más
significativo. Es decir, El bit etiquetado
como 0 es el bit más
significativo. Por ejemplo, el diagrama
siguiente representa el valor
170 (decimal).
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|1 0 1 0 1 0 1 0|
+-+-+-+-+-+-+-+-+
Significado de Bits
Figura 11.
De forma similar, cuando un campo
multiocteto representa una cantidad
numérica el bit más a la izquierda de todo
el campo es el bit más
significativo. Cuando una cantidad
multi-octeto es transmitida se
transmite primero el octeto más
significativo.
GLOSARIO
1822
BBN
Report 1822, "Especificación de la Interconexión de un
Host y un IMP". La especificación de la interfaz entre un
host
y ARPANET.
ARPANET leader
La
información de control en un mensaje ARPANET en la interfaz
host-IMP.
mensaje ARPANET
La
unidad de transmisión entre un host y un IMP en ARPANET. El
tamaño
máximo es aproximadamente 1012 octetos (8096 bits).
paquete ARPANET
Una
unidad de transmisión usada internamente entre IMPs en
ARPANET.
El tamaño máximo es aprox. 126 octetos (1008 bits).
Destino
La
dirección de destino, un campo de la cabecera internet.
DF
El
bit 'Don't Fragment' (No Fragmentar) del campo de
indicadores.
Indicadores (Flags)
Un
campo de la cabecera internet con varios indicadores de
control.
Posición del Fragmento
Posición
del fragmento. Este campo de la cabecera internet
indica
a que lugar del datagrama internet pertenece un
fragmento.
GGP
Gateway
to Gateway Protocol (Protocolo Pasarela a Pasarela),
el
protocolo usado principalmente entre pasarelas para
controlar
el encaminamiento y otras funciones de pasarela.
cabecera
Información
de control al principio de un mensaje, segmento,
datagrama,
paquete o bloque de datos.
ICMP
Internet
Control Message Protocol (Protocolo de Mensajes de
Control
de Internet), implementado en el módulo internet, el
ICMP
es usado de pasarelas a hosts y entre hosts para informar
de
errores y hacer sugerencias de encaminamiento.
Identificación
Un
campo de la cabecera internet que almacena el valor
identificador
asignado por el remitente como ayuda para
ensamblar
los fragmentos de un datagrama.
IHL
El
campo de la cabecera internet 'Internet Header Length'
(Longitud
de la cabecera internet) es la longitud de la
cabecera
internet medida en palabras de 32 bits.
IMP
Interface
Message Processor (Procesador de Mensajes de
Interfaz),
el intercambiador de paquetes de ARPANET.
Dirección Internet
Una
dirección de origen o destino de 4 octetos (32 bits)
formada
por un campo de Red y un campo de Dirección Local.
Datagrama internet
La
unidad de datos intercambiada entre un par de módulos
internet
(incluye la cabecera internet).
Fragmento internet
Una
parte de los datos de un datagrama internet con una
cabecera
internet.
Dirección Local
La
dirección de un host en una red. La relación real entre una
dirección
local internet con las direcciones de un host en una
red
es muy general, permitiéndose relaciones de muchos a uno.
MF
El
indicador 'More-Fragments' (Más Fragmentos) presente en el
campo
indicadores de la cabecera internet.
módulo
Una
implementación, normalmente en software, de un protocolo u
otro
procedimiento.
indicador 'more-fragments'
Un
indicador que dice si este datagrama internet contiene el
final
de un datagrama internet, presente en el campo
Indicadores
de la cabecera internet.
NFB
Number
of Fragment Blocks (Número de Bloques de Fragmento) en
la
parte de datos de un fragmento internet. Es decir, la
longitud
de una parte de datos medida en unidades de 8
octetos.
octeto
Un
byte de 8 bits.
Opciones
El
campo Opciones de la cabecera internet puede contener
varias
opciones, y cada una de ellas puede ser de varios
octetos
de longitud.
Valor de Relleno (Padding)
El
campo Valor de Relleno de la cabecera internet se utiliza
para
asegurar que el campo de datos comienza en una dirección
múltiplo
de 32 bits. El relleno es cero.
Protocolo
En
este documento, un campo de la cabecera internet, el
identificador
del protocolo del siguiente nivel superior.
Resto
La
parte de dirección local de una dirección internet.
Origen
La
dirección de origen, un campo de la cabecera internet.
TCP
Transmission
Control Protocol (Protocolo de Control de
Transmisión):
Un protocolo host-a-host para comunicación
fiable
en entornos internet.
Segmento TCP
La
unidad de datos intercambiada entre dos módulos TCP
(incluyendo
la cabecera TCP).
TFTP
Trivial
File Transfer Protocol (Protocolo de Transferencia de
Archivos
Trivial): Un sencillo protocolo de transferencia de
archivos
construído sobre UDP).
Tiempo de Vida
Un
campo de la cabecera internet que indica el límite superior
de
cuánto tiempo puede existir el datagrama.
TOS
Type
of Service (Tipo de Servicio)
Longitud Total
El
campo de la cabecera Internet 'Longitud Total' es la
longitud
del datagrama en octetos, incluyendo cabecera y
datos.
TTL
Time
to Live (Tiempo de Vida)
Tipo de Servicio
Un
campo de la cabecera internet que indica el tipo (o
calidad)
de servicio para este datagrama.
UDP
User
Datagram Protocol (Protocolo de Datagrama de Usuario): Un
protocolo
a nivel de usuario para aplicaciones orientadas a
transacciones.
Usuario
El
usuario del protocolo internet. Este puede ser un módulo de
protocolo
de nivel superior, una aplicación, o un programa
pasarela.
Versión
El
campo Versión indica el formato de una cabecera internet.
REFERENCIAS
[1] Cerf, V., "The Catenet Model for
Internetworking", Information
Processing Techniques
Office, Defense Advanced Research Projects
Agency, IEN 48, Julio
1978.
[2] Bolt Beranek and Newman,
"Specification for the Interconnection of
a Host and an IMP",
BBN Technical Report 1822, Revisado Mayo 1978.
[3] Postel, J., "Internet Control
Message Protocol - DARPA Internet
Program Protocol
Specification", RFC 792, USC/Information
Sciences
Institute, Septiembre
1981.
[4] Shoch, J., "Inter-Network Naming,
Addressing, and Routing",
COMPCON, IEEE Computer
Society, Otoño 1978.
[5] Postel, J., "Address Mappings",
RFC 796, USC/Information Sciences
Institute, Septiembre
1981.
[6] Shoch, J., "Packet Fragmentation in
Inter-Network Protocols,"
Computer Networks, v. 3,
n. 1, Febrero 1979.
[7] Strazisar, V., "How to Build a
Gateway", IEN 109, Bolt Beranek and
Newman, Agosto 1979.
[8] Postel, J., "Service Mappings,"
RFC 795, USC/Information Sciences
Institute, Septiembre
1981.
[9] Postel, J., "Assigned Numbers,"
RFC 790, USC/Information Sciences
Institute, Septiembre
1981.