El protocolo IP
Internet como ya hemos visto es una red de redes y se expande a nivel mundial, su protocolo base es TCP/IP, y fue diseñado desde el principio para trabajar entre redes.
La manera general en que trabaja TCP/IP es que la aplicación le entrega una cadena de datos al protocolo de transporte ( TCP o UDP ) el cual se encarga de contactar a la capa de red (IP) y entregarle datagramas que pueden ser hasta de 65 Kb de longitud (aunque la mayoría de las tarjetas de red manejas una longitud máxima de 1500 bytes denominada Maximum Transmission Unit).
La capa de red IP transmite los datagramas, tal vez divididos en unidades más pequeñas (fragmentos) hasta el destino, haciendo su mejor esfuerzo porque los paquetes lleguen a su destino. En el destino la capa IP ensambla los fragmentos y entrega los datagramas a la capa de transporte quien a su vez se los entrega a la aplicación.
Un paquete de IP tiene una estructura compuesta de una parte de encabezado y otra de datos. El encabezado consta de 20 octetos fijos y de una parte de opciones cuyo tamaño es variable (de cero o más octetos).
- Campo Versión: Permite saber si un datagrama es de una misma versión de IP o si necesita alguna conversión cuando se están usando versiones diferentes.
- Campo longitud de encabezado: Permita saber el tamaño total del encabezado que consta de 20 bytes fijos y hasta 40 bytes de opciones.
- Campo tipo de servicio: Permite especificar a qué servicio pertenece este paquete o cuál se requiere (confiable, rápido, con prioridad, enrutado, etc.).
- Campo de longitud total: Indica la longitud del datagrama incluyendo encabezado y datos.
- Campo de identificación: Indica el número de datagrama, lo cual permite ensamblar fragmentos de un mismo datagrama en la capa IP.
- Bit de D: Significa Do not Fragment (no fragmentar), y obliga que los enrutadores no fragmenten el datagrama porque el nodo destino será incapaz de ensamblarlo de nuevo. Esto se aplica por ejemplo cuando un aparato hace su proceso de inicialización (boot) por medio del protocolo BOOTP o de TFTP.
- Bit de M: Significa More Fragments, y es un bit que está encendido en todos los fragmentos que componen un datagrama, lo cual le está diciendo a la capa IP que se está recibiendo un datagrama en fragmentos. El último fragmento de un datagrama tiene este bit apagado.
- Campo de desplazamiento: Indique cuál fragmento es éste de los 8192 (o menos) que componen un datagrama completo.
- Campo de tiempo de vida: Se inicializa a un número entre 1 y 255 que se supone son segundos aunque en la práctica se usa para indicar saltos entre enrutadores. cada vez que un fragmento cruza por un enrutador este campo se decrementa en una unidad, o en varias unidades si permaneció suficiente tiempo en una cola. Esto permite que los paquetes cuyo tiempo de vida llega a cero sean descartados y no vaguen por la red indefinidamente.
- Campo de protocolo: Indica si el protocolo de transporte es TCP o UDP u otro.
- Campo de chequeo: Permite calcular si el encabezado llegó íntegro. Consiste en ir sumando (usando aritmética de complementos a unos) cada 16 bits del encabezado y sacarle al resultado su complemento a unos, lo cual debe ser igual a este campo.
- Campos IP Origen e IP Destino: Indican la dirección IP única a nivel mundial del nodo origen y nodo destino. Las direcciones IP son administradas a nivel mundial por el NIC y para poder usarlas se necesita solicitarlas y registrarlas. Existen 5 categorías principales: Las direcciones que comienzan con el número 1 a 127 son clase A, las de 128 a 191 son clase B, las de 192 a 223 son clase C, las de 224 a 239 son clase D (multicast) y de 240 a 247 son clase E (para usos futuros).
- Campo de opciones: Estos octetos se dejaron sin especificar con el objeto de darles significado cuando el protocolo tuviera más necesidades. Se han especificado algunas opciones como son paquetes con seguridad, rutas de entrega estrictas o sugeridas, registro de rutas y registro de tiempos de travesía.