TCP/IP

1  Pila de protocolos TCP/IP

Los niveles que constituyen TCP/IP son los siguientes:

Otros autores dividen la estructura TCP/IP en estos cuatro niveles:

2  Formato de una dirección IP

Las direcciones IP tienen una longitud de 32 bits y constan de dos campos:

En terminología TCP/IP, una red consiste en un grupo de hosts que pueden comunicarse directamente sin utilizar un encaminador. Todos los hosts TCP/IP que componen una misma red deben tener asignado el mismo identificador de red. Los hosts con distintos identificadores de red deben comunicarse a través de un encaminador.

Una interred TCP/IP es una red de redes interconectadas a través de encaminadores. Cada una de las redes de una interred debe disponer de un identificador de red único.

2.1  Clases de direcciones

Cuando se creó el esquema de direcciones IP, se definieron unas clases de direcciones IP adaptadas a los distintos tipos de redes existentes. Se asignó un número distinto de bits a los identificadores de red de las distintas clases. Los bits de las direcciones se organizan en cuatro bytes, según el siguiente esquema:

2.2  Notación decimal con puntos

Para recordar las direcciones de 32 bits se representa cada octeto (byte) en forma de número decimal entre 0 y 255. Por ejemplo, la expresión decimal de 11000001 0001010 00011110 00000010 es 193.10.30.2.

Por convenio, cuando los campos identificadores de red tienen el valor 0, la dirección hace referencia a una red. Por ejemplo, 135.8.0.0 hace referencia a la red cuyo identificador es 135.8.

2.3  Restricciones de las direcciones IP

Algunas direcciones IP tienen un uso especial y no pueden utilizarse para identificar redes ni hosts.

La tabla resume las direcciones disponibles de clase A, B y C.

Clase Desde Hasta Identificadores de red Identificadores de host
A 1 126 126 16.777.214
B 128 191 16.384 65.534
C 192 223 2.097.152 254
Tabla 1: Direcciones IP disponibles

Existen un rango de direcciones IP que no pueden utilizarse en Internet. No son encaminables y los encaminadores Internet no las envían. Existe un rango reservado para cada clase de dirección IP (RFC 1918):

El primer bloque es una única dirección de red de clase A. El segundo bloque es un conjunto de 16 direcciones de red contiguas de clase B. El tercer bloque es un conjunto de 256 direcciones de red contiguas de clase C.

Los routers presentes en Internet no encaminan estas direcciones.

2.4  Direccionamiento de una interred TCP/IP

Distintas razones para segmentar una red son las siguientes:

2.5  Direccionamiento de subredes

El mecanismo de las subredes utiliza algunos bits de los octetos del identificador de host para identificar la subred. Si no se utilizan subredes, una dirección IP se interpreta en dos campos:
identificador de red identificador de host
Si se utilizan subredes, la dirección IP se interpreta en tres campos:
identificador de red identificador de subred identificador de host

2.5.1  Máscaras de subred

El identificador de subred se crea utilizando bits del campo del identificador de hosts mediante una técnica denominada máscara de subred. Sea la siguiente dirección de clase B:
10100001 01110101 10110111 10110111

Los dos octetos finales de una dirección de clase B componen el identificador de host. Para codificar el identificador de subred, es posible reservar algunos de los bits del identificador de host utilizando un máscara de subred, como se ve en la figura .

La máscara de subred es un número de 32 bits. Un 1 indica que el bit correspondiente de la dirección IP forma parte del identificador de subred. Un 0 indica que el bit pertenece al identificador de host.

Dirección de clase B

Dirección IP 1 0 1 0 0 0 0 1 0 1 1 1 0 1 0 1 1 0 1 10 1 1 1 1 0 1 1 0 1 1 1
Máscara de subred 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 0 0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 1 0 1 1 1 0 1 0 1 1 0 1 10 1 1 1 1 0 1 1 0 1 1 1
¬ Identificador de red ® Subred Identificador de host

Figura 1: Máscara de subred

Las máscaras de subred consisten en bits adyacentes de máximo orden (se podrían usar máscaras de subred con bits no contiguos, pero esto no tiene ningún sentido). Por tanto, sólo es necesario recordar ocho números decimales para poder reconocer todas las máscaras de subred. Las nueve máscaras de subred (más frecuentes) son:

Binario Decimal
00000000 0
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255

El número de bits en la máscara de red se ajusta en función del número de subredes necesarias. En direcciones de clase B, la máscara de subred 255.255.255.0 reserva el tercer octeto para el direccionamiento de subredes y permite 254 identificadores de subred(1).

2.6  Máscaras de subred predeterminadas

Al configurar una red para que admita direccionamiento de subredes, es necesario designar una máscara de subred aunque no se utilicen subredes. Las máscaras de subred predeterminadas son las siguientes:

Es necesario configurar la máscara de subred utilizando unos en los bits que corresponden al campo identificador de red de la clase. Por ejemplo, una máscara de red 255.255.0.0 no es válida en una dirección de clase C.

2.7  Ejemplo 1 de direccionamiento de una subred

Sea la red de clase C de la figura . La red se basa en la dirección de red 195.100.250.0, cuya representación binaria es:
11000011 01100100 11001101 00000000

La máscara de subred utilizada en el ejemplo es 255.255.255.224, cuyo equivalente binario es:

11111111 11111111 11111111 11100000

./subred.png
Figura 2: Una red de clase C con subredes

Se reservan tres bits del identificador de host para los identificadores de subred. Como éstos no pueden ser sólo ceros o unos, hay 23-2=6 identificadores de red (001, 010, 011, 100, 101 y 110). Con 5 bits disponibles para identificar el host, cada red puede llegar a admitir 25-2=30 hosts (los identificadores 00000 y 11111 no están disponibles).

Consideremos la dirección IP 195.100.205.175. Su equivalente binario es:

11000011 01100100 11001101 10101111
Tras aplicar la máscara de subred, los tres bits reservados para el identificador de subred se convierten en 10100000 (160 decimal). El identificador de host es 01111 (15 decimal).

La tabla resume los valores válidos del cuarto octeto al utilizar la máscara de red 255.255.255.224.

Subred (binario) Subred (decimal) Valores disponibles para el cuarto octeto (binario) Valores disponibles para el cuarto octeto (decimal)
001
010
011
100
101
110
32
64
96
128
160
192
00100001-00111110
01000001-01011110
01100001-01111110
10000001-10011110
10100001-10111110
11000001-11011110
33-62
65-94
97-126
129-158
161-190
193-222
Tabla 2: Direcciones de host de clase C disponibles al utilizar la máscara de subred 255.255.255.224

2.8  Ejemplo 2 de direccionamiento de una subred

------

Dada la red 10.16.176.0, con 900 PC, calcular:

  1. Máscara de subred,
  2. dirección IP del primer PC,
  3. dirección IP del último PC,
  4. dirección IP de broadcast.

3  Encaminamiento IP

3.1  Resolución de direcciones

La comunicación entre sistemas requiere conocer tanto las direcciones físicas (las del nivel de enlace) como las direcciones IP (del nivel de interred). Se plantean dos problemas:

El ARP (Address Resolution Protocol, Protocolo de Resolución de Direcciones) se encarga de averiguar las direcciones físicas a partir de las direcciones IP.

3.1.1  Mapeo Dirección IP ® Dirección Física

  1. A quiere comunicarse con B, y conoce su dirección IP, pero no su dirección física.
  2. A pregunta a B su dirección física mediante una difusión (broadcast).
  3. Todas las estaciones de la red reciben la pregunta, pero sólo B responde.

El mensaje ARP se envía encapsulado en el campo de datos de una trama. Un campo en la cabecera de la trama permite identificar el tipo de mensaje).

3.1.2  Mapeo Dirección Física ® Dirección IP

El protocolo RARP (Reverse ARP) es el ARP inverso. Usa el mismo formato de trama que ARP.

  1. A quiere conocer su dirección IP (o la de un tercero).
  2. A consulta a un servidor RARP, mediante difusión.
  3. La dirección física del emisor (o la del tercero) aparece en la trama.
  4. El servidor ARP contesta a la máquina proporcionándole su dirección IP.

4  El protocolo IP

Las principales funcionalidades del protocolo IP son las siguientes:

4.1  El datagrama IP

El datagrama se envía encapsulado en el campo de datos de una trama. En la figura se ven los campos que conforman un datagrama IP.

0 « 4 4 « 8 8 « 16 16 « 19 19 « 24 24 « 31
vers. IP longc tipo servicio longitud total
identificación flags offset segmento
tiempo vida protocolo checsum de la cabecera
dirección IP fuente
dirección IP destino
opciones IP (variable) relleno
DATOS
Figura 3: Datagrama IP

El campo longc indica el tamaño de la cabecera del datagrama en palabras de 32 bits. Su valor mínimo es 5.

La longitud total del datagrama se expresa en bytes, e incluye la cabacera y el área de datos; el tamaño máximo es 65.535 bytes.

El campo offset fragmento se utiliza cuando se fragmentan datagramas en la transmisión (por ejemplo, la MTU2 en Ethernet es de 1500 bytes para el campo de datos). E indica la posición del fragmento dentro del datagrama original.

En el campo flags se tienen dos bits:

El campo protocolo indica el protocolo de nivel superior (transporte) al que van destinados los datos. Se usa para demultiplexar paquetes.

4.2  Encaminamiento en IP

Dos hosts pueden comunicarse directamente mediante tramas sólo si comparten la misma red IP (diálogo directo). En ese caso, el emisor encapsula el datagrama en una trama, averigua la dirección física del destino (ARP) y le envía directamente la trama.

Cuando el destino no está en la misma red que el origen hay que enviar el datagrama a un router (diálogo indirecto). El proceso es similar, pero ahora la dirección física del destino es la del router (la dirección IP sigue siendo la del destino real).

4.2.1  Tablas de encaminamiento

Estas tablas son un elemento primordial en el encaminamiento IP. Contienen información sobre los posibles destinos y cómo llegar a ellos.

Estas tablas están tanto en los hosts como en los routers. Deben ser pequeñas para un funcionamiento más eficiente. Los tipos de entradas posibles en una tabla de encaminamiento son:

4.2.2  Encaminamiento IP en los routers

Es la función más importante de IP. Los routers intercambian información para mantener actualizadas las tablas de encaminamiento.

Los protocolos más actualizados para actualizar las tablas son:

5  El protocolo ICMP

El protocolo ICMP (Internet Control Message Protocol, Protocolo de Mensajes de Control de Internet) permite enviar mensajes de control con lo que se puede saber, por ejemplo, porqué no ha llegado un datagrama.

Los mensajes ICMP viajan encapsulados en en el campo datos de un datagrama IP; sin embargo, ICMP no se considera un protocolo de nivel superior al IP, sino también del nivel de interred.

5.1  Formato de un mensaje ICMP

Cada mensaje tiene su propio formato, pero todos empiezan con los mismos campos:

Los principales tipos de mensajes ICMP son:

La orden ping se basa en el empleo de mensajes de petición y respuesta de eco. Se utiliza para detectar problemas en la red. Permite:

6  El protocolo UDP

El nivel de transporte en TCP/IP (o de host a host) proporciona dos tipos de servicio: con conexión y sin conexión, que corresponden, respectivamente, a los protocolos TCP y UDP.

UDP (User Datagram Protocol) proporciona un mecanismo para distinguir múltiples fuentes y destinos en un mismo host: los puertos.

Los mensajes UDP se envían encapsulados en el campo de datos de un datagrama IP. UDP proporciona un servicio de datagramas de usuario:

6.1  Formato de un mensaje UDP

Los mensajes UDP tienen el siguiente formato:

0 « 16 16 « 31
Puerto origen UDP Puerto destino UDP
Longitud mensaje Checksum
Datos

El puerto origen es opcional.

6.2  Asignación de puertos a procesos

Hay dos alternativas básicas:

7  El protocolo TCP

El TCP (Transmission Control Protocol) es un protocolo del nivel de transporte que proporciona fiabilidad en la comunicación de datos. Al igual que UDP utiliza el mecanismo de puertos para poder tener varios orígenes y destinos en una misma máquina.

Sus características básicas son:

Una conexión TCP está identificada por los dos extremos, en la forma (IP origen, puerto origen), (IP destino, puerto destino). Un mismo número de puerto puede estar siendo utilizado en distintas conexiones. Como en UDP, existen asignación de puertos estática (WKP) y dinámica. Se puede utilizar el mismo puerto para TCP y UDP.

7.1  Control de flujo y recuperación de errores

La unidad de datos de TCP se denomina segmento. El control de flujo se realiza extremo a extremo mediante ventana deslizante, y el tamaño máximo de la ventana de transmisión es variable. El reconocimiento (ACK) de los datos es a nivel de bytes, no de segmentos. Utiliza un mecanismo full-duplex con 4 ventanas. Se permite el uso de datos urgentes, que no estén sujetos al control de flujo.

Para la detección de duplicados se utilizan los números de secuencia de los segmentos. Cada segmento lleva un número de secuencia que corresponde al del primer byte del campo de datos.

7.2  Segmentos TCP/IP

El segmento TCP/IP va encapsulado dentro de un datagrama IP, que a su vez irá encapsulado dentro de una trama del nivel de enlace.

Cada segmento se divide en cabecera y datos, según se ve en la siguiente figura (:

0 4 10 16 24 31
Puerto TCP origen Puerto TCP destino
Número de secuencia
Número de reconocimiento
long reservado código ventana
checksum puntero a datos urgentes
opciones relleno
DATOS
Figura 4: Formato de un segmento TCP/IP

El número de secuencia identifica la secuencia del primer byte de datos del segmento en el flujo emisor. El número de reconocimiento indica cuál es el siguiente byte de datos que se espera recibir; es válido si el bit ACK del campo código está activo. El campo long indica la longitud de la cabecera en palabras de 32 bits.

Los bits del campo código determinan el tipo de segmento y el significado de alguno de sus campos. Estos bits, de izquierda a derecha son:

El campo ventana indica el tamaño del buffer del receptor, y determina el tamaño de la ventana de transmisión. El checksum se aplica a todo el segmento (cabecera y datos). Las opciones permiten negociar algunos parámetros entre los TCP de ambos extremos, como el tamaño máximo de segmento durante la transmisión (MSS).

7.3  Establecimiento y cierre de una conexión TCP

TCP ofrece un servicio orientado a la conexión, con tres fases:

  1. Establecimiento de conexión, con sincronización y negociación de parámetros.
  2. Transferencia de datos.
  3. Cierre de conexión.

Para ello utiliza un servicio de entrega (IP) no fiable; por ello, los procesos de establecimiento y cierre deberán ser meticulosos, para garantizar aperturas y cierres correctos.

8  IPv6

8.1  Direcciones IPv6

Sus principales características son:


Notas:

1Como en el caso de los identificadores de red, los de subred no pueden constar por completo de ceros o unos; por eso se tienen 254 identificadores de subred y no 256.

2Maximum Transfer Unit, tamaño máximo de las tramas

Bibliografía

Para la elaboración de este tutorial he utilizado la siguiente bibliografía:

Nota Importante. Este tutorial parte de unos apuntes personales donde he ido recabando información que he encontrado en diversos libros, revistas, etc., así como de mi propia experiencia. En ningún momento pretende ser un texto original, es por esto que todo el mérito de lo aquí escrito se debe exclusivamente a los autores que cito en la bibliografía.


R. Hernando, 27 Enero de 2002.