Está en la página 1de 53

Nivel de red: Direccionamiento lógico

Actualmente se usa el término dirección IP para denominar una dirección lógica a nivel de red del conjunto de protocolos TCP/IP.
19.1 DIRECCIONES IPv4
Una dirección 1Pv4 es una dirección de 32 bits que define única y universalmente la conexión de un dispositivo
(por ejemplo, una computadora o un enrutador) a Internet.

Espacio de direcciones

Notaciones
Notación binaria

Notación punto-decimal

Direccionamiento con clases


Esta arquitectura se denomina direccionamiento
con clases.

Clases y bloques

Las direcciones de clase A estaban reservadas para organizaciones


grandes con un gran número de computadoras o enrutadores conectados.
Las direcciones clase B estaban
reservadas para organizaciones de tamaño medio con decenas de miles de computadoras o enrutadores conectados.
Las direcciones clase C estaban diseñadas para organizaciones pequeñas con un número pequeño
de computadoras o enrutadores conectados.
Las direcciones clase D estaban diseñadas para multienvío, como veremos en un capitulo posterior.

Identificador de red y de computadora (netid y hostid)


En el direccionamiento con clases, una dirección 1P de clase A, B o C se divide en netid y hostid. Estas partes
son de longitud variable, dependiendo de la clase de la dirección. La Figura 19.2 muestra algunos bytes
con netid y hostid. El netid está en color, el hostid está tramado. Observé que el concepto no se aplica a las
clases D y E.
Máscara
Aunque la longitud del identificador de red y de host ( en bits) está predeterminada en el direccionamiento
con clases, se puede usar una máscara (también llamada máscara por defecto), un número de 32 bits
compuesto por 1s contiguos seguidos de 0s contiguos.

Esta rotación también se denomina notación barra o notación de enrutamiento


entre dominios sin clase (CIDR, Classless Interdomain Routing). La notación se usa en direccionamiento
sin clases, que veremos más tarde.
Subnetting (creación de subredes)
se introdujo el subnetting. Si una organización recibía un
gran bloque de direcciones clase A o B, podía dividir las direcciones en varios grupos contiguos y asignar
cada grupo a redes más pequeñas (denominadas subredes) o, en casos raros, compartir parte de las direcciones
con vecinos.
Supernetting (creación de súper redes)
Una solución fue la técnica de supernetting.
Con supernetting, una organización puede combinar varios bloques de clase C para crear un rango
de direcciones más grande. En otras palabras, se combinan varias redes para crear una súper red.
Agotamiento de direcciones

Direccionamiento sin clases


Para resolver el agotamiento de direcciones y dar acceso a Internet a más organizaciones, se diseñó e implementó
el direccionamiento sin clases. Con este esquema, no hay clases, pero las direcciones todavía se
asignan en bloques.
Bloques de direcciones
El tamaño del bloque (el número de direcciones) varía dependiendo de la naturaleza y el tamaño de la entidad.
Restricción
1. Las direcciones de un bloque deben ser contiguas, una detrás de otra.
2. El número de direcciones en un bloque debe ser potencia de dos (1, 2, 4, 8, ...).
3. La primera dirección debe ser divisible por el número de direcciones.
Máscara
Como vimos antes, una máscara es un número de 32 bits en el cual los n bits más a la izquierda son 1 y
los 32 - n bits de la derecha son 0. Sin embargo, en el direccionamiento sin clase la máscara de un bloque puede tomar cualquier
valor desde 0 hasta 32.
Primera dirección

Ultima dirección

Número de direcciones

Direcciones de red
Un concepto muy importante en el direccionamiento IP es la dirección de red.

Jerarquia
Las direcciones IP, como otras direcciones o identificadores que se encuentran actualmente, tienen niveles de
jerarquía. Por ejemplo, la red telefónica de Estados Unidos tiene tres niveles de jerarquía. Los tres dígitos más
a la izquierda defmen el código de área, los tres dígitos siguientes definen el intercambio y los cuatro últimos
dígitos definen la conexión del bucle local a la zona central.
Jerarquia de dos niveles: sin subnetting

La parte de la dirección que define la red se denomina prefijo; la parte que define el nodo se denomina
sufijo.

Tres niveles de jerarquía: subredes


Por ejemplo, suponga una organización que posee el bloque 17 .12.40 .0/26, que contiene 64 direcciones.
La organización tiene tres oficinas y necesita dividir las direcciones en tres subbloques de 32, 16 y 16 direcciones. Se pueden hallar
las nuevas máscaras usando los argumentos siguientes:
l. Suponga que la máscara para la primera subred es n1, entonces 232-n1 debe ser 32, lo que significa que
n1=27.
2. Suponga que la máscara para la segunda subred es n2, entonces 232-n2 debe ser 16, lo que significa que
n2=28.
3. Suponga que la máscara para la segunda subred es n3, entonces 232-n3 debe ser 16, lo que significa que
n3=28.
Esto significa que se tienen las máscaras 27, 28 y 28, siendo la máscara de la organización 26. La Figura
19.7 muestra una configuración para el escenario anterior.

Vamos a comprobar para ver si podemos hallar las direcciones de subred para una de las direcciones en la subred.
a. En la subred 1, la dirección 17.12.14.29/27 nos puede dar la dirección de subred si se usa la máscara
/27 porque:

b. En la subred 2, la dirección 17.12.14.45/28 nos puede dar la dirección de subred si se usa la máscara
/28 porque:

c. En la subred 3, la dirección 17.12.14.50/28 nos puede dar la dirección de subred si se usa la máscara
/28 porque:

Más niveles de jerarquía


Una organízación
puede dividir el bloque asignado de direcciones en subbloques. Cada subbloque puede a su vez dividirse
en bloques más pequeños. Así sucesivamente.
Asignación de direcciones
La responsabilidad última de la asignación de direcciones se le ha dado a una autoridad global
denominada Internet Corporation for Assigned Names and Addresses (ICANN).
En otras palabras, un ISP recibe un gran bloque para ser distribuido entre sus usuarios
de Internet. A esto se le denomina agregación de direcciones: muchos bloques de direcciones se agregan en
un bloque y se asignan a un ISP.

Traducción de dirección de red (Network Address Translation, NAT)


Una solución rápida para este problema es la traducción de direcciones de red (NAT). NAT permite a un
usuario tener internamente un gran conjunto de direcciones y una dirección, o un conjunto de pequeñas direcciones, de cara al
exterior.

Traducción de direcciones
Todos los paquetes de salida pasan a través del enrutador NAT, que sustituye la dirección origen en el paquete con la dirección
global NAT. Todos los paquetes de entrada pasan también a través del enrutador NAT, que sustituye la dirección destino en el
paquete (la dirección global del enrutador NAT) con la dirección privada apropiada.
Tabla de traducción
El problema se resuelve si el enrutador NAT tiene una tabla de traducción.
Usar una dirección IP En su forma más sencilla, una tabla de traducción tiene sólo dos columnas: la dirección privada y la
dirección externa (dirección destino del paquete).

Usar un conjunto de direcciones IP Puesto que el enrutador NAT tiene sólo una dirección global, sólo un
nodo de la red privada puede acceder al mismo nodo externo. Para eliminar esta restricción, el enrutador NAT
usa un conjunto de direcciones globales.
Usar direcciones IP y números de puerto Para permitir una relación muchos a muchos entre nodos de la
red privada y programas servidores externos, se necesita más información en la tabla de traducción.

NAT e ISP
Un ISP que sirva clientes de marcado puede usar la tecnología NAT para conservar direcciones.
19.2 DIRECCIONES IPv6
Estructura

Notación hexadecimal con dos puntos


Para hacer las direcciones más legibles, 1Pv6 especifica la notación hexadecimal con dos puntos.
Abreviatura
Usando esta forma de abreviatura, 0074 se puede escribir como 74, 000F como F y 0000 como 0.

Espacio de direcciones
IPv6 tiene un rango de direcciones mucho mayor: hay disponibles 2 128 direcciones. Los diseñadores de IPv6
dividieron las direcciones en varias categorías.
Direcciones unicast
Una dirección unicast defme una única computadora.
IPv6 define dos tipos de direcciones unicast: con base geográfica y con base en el proveedor.
La dirección basada en el proveedor tiene los campos siguientes:
Identificador de tipo. Este campo de 3 bits define la dirección como una dirección basada en el proveedor.
Identificador de registro. Este campo de 5 bits define la agencia que ha registrado la dirección. Actualmente
hay definidas 3 agencias de registro.
Identificador del proveedor. Este campo de longitud variable identifica el proveedor de acceso a
Internet (como un ISP). Se recomienda un campo de 16 bits.
Identificador del subscriptor. Cuando una organización se suscribe a Internet a través de un proveedor,
se le asigna un identificador de suscriptor. Una longitud de 24 bit es recomendable para este campo.
Identificador de subred. Cada suscriptor puede tener muchas subredes distintas y cada subred puede
tener un identificador. El identificador de subred define una subred específica en el territorio del suscriptor.
Para este campo se recomienda una longitud de 32 bits.
Identificador de nodo. El último campo define la identificación del nodo conectado a una subred. Se
recomienda una longitud de 48 bits para que este campo sea compatible con el enlace de 48 bits de la
dirección física usado por Ethernet.
Direcciones multicast
Las direcciones multicast se usan para definir un grupo de nodos en lugar de uno. Un paquete enviado a una
dirección multicast debe ser entregado a cada miembro del grupo.

Direcciones anycast
IPv6 define también direcciones anycast. Una dirección unicast, como una dirección multicast, también
define un grupo de nodos. Sin embargo, un paquete destinado a una dirección anycast se entrega sólo a uno
de los miembros del grupo anycast, el más cercano (el que tiene la ruta más corta).
Direcciones reservadas
Estas direcciones comienzan con ocho 0s (el tipo de prefijo es 0000 0000).
Una dirección sin especificar se usa cuando un nodo no sabe su propia dirección y envía una consulta
para saber su dirección. Una dirección de bucle se usa cuando un nodo se quiere probar a sí mismo sin salir
a la red. Una dirección compatible se usará durante la transición de 1Pv4 a 1Pv6 (véase el Capítulo 20). Se
usa cuando una computadora que usa 1Pv6 quiere enviar un mensaje a otra computadora que usa 1Pv6, pero
el mensaje necesita pasar a través de una parte de la red que todavía opera en IPv4. Una dirección mapeada
se usará también durante la transición. Sin embargo, se usa cuando una computadora que ha migrado a 1Pv6
quiere enviar paquetes a una computadora que todavía usa IPv4.

Direcciones locales
Estas direcciones se usan cuando una organización quiere usar el protocolo 1Pv6 sin estar conectada a Internet.
Una dirección de enlace local se usa en una subred aislada; una dirección de sitio local se usa en un sitio
aislado con varias subredes.
19.5 RESUMEN
□ En el nivel de red, es necesario tener un sistema de identificación global que identifique únicamente a
cada nodo y enrutador para entregar un paquete de nodo a nodo.
□ Una dirección 1Pv4 tiene 32 bits de longitud y define única y universalmente un nodo o enrutador en
Internet.
□ En dirección con clases, la porción de la dirección IP que identifica cada red se denomina netid o
identificador de red.
□ En dirección con clases, la porción de la dirección 1P que identifica cada nodo o enrutador en la red se
denomina hostid o identificador de nodo.
□ Una dirección IP define la conexión de un dispositivo a una red.
□ Hay cinco clases de direcciones 1Pv4. Las clases A, B y C difieren en el número de nodos permitidos
por red. La clase D es para multienvío y la clase E es reservada.
□ La clase de la dirección se determina fácilmente examinando el primer byte.
□ Las direcciones de clase A, B y C son principalmente para comunicación unicast.
□ Las direcciones de clase D se usan para comunicación multicast.
□ La técnica de subnetting divide una red grande en varias más pequeñas, añadiendo un nivel de jerarquía
intermedio en direccionamiento IP.
□ La técnica de supernetting combina varias redes en una más grande.
□ En direccionamiento sin clases se puede dividir el espacio de direcciones en bloques de longitud variable.
□ Hay tres restricciones en direccionamiento sin clases:
a. El número de direcciones debe ser potencia de 2.
b. La máscara debe estar incluida en la dirección para definir el bloque.
c. La dirección de comienzo debe ser divisible por el número de direcciones en el bloque.
□ La máscara en dirección sin clases se expresa como la longitud del prefijo (/n) en notación CIDR.
□ Para hallar la primera dirección de un bloque, se ponen los 32 - n bits de más a la derecha a 0.
□ Para hallar el número de direcciones en el bloque, se calcula 2 32 -n, donde n es la longitud del prefijo.
□ Para hallar la última dirección de un bloque, se ponen los 32 - n bits de más a la derecha a 1.
□ La técnica de subnetting incrementa el valor den.
□ La autoridad global para asignación de direcciones es ICANN. Normalmente ICANN asigna bloques
de direcciones muy grandes a ISP, que a su vez asigna pequeños subbloques a clientes individuales.
□ Las direcciones IPv6 usan notación hexadecimal dos puntos con métodos de. abreviaturas disponibles.
□ Hay tres tipos de direcciones en 1Pv6: unicast, anycast y multicast.
□ En las direcciones 1Pv6, el campo de prefijo de longitud variable define el tipo de dirección u objetivo.
Nivel de red: Protocolo de Internet
el principal protocolo de red es el Protocolo de Internet (IP).
20.1 INTERCONEXIÓN ENTRE REDES
Los niveles físico y enlace de datos de una red funcionan localmente. Estos dos niveles se responsabilizan
de la entrega de datos en la red de un nodo al siguiente, como se muestra en la Figura 20.1.
Necesidad del nivel de red
El nivel de red es responsable de la entrega host a host y del encaminamiento de los paquetes a través de los encaminadores o
conmutadores.
Internet como una red de datagramas
La conmutación de paquetes utiliza circuitos virtuales o datagramas.
En Internet se ha elegido el enfoque basado en datagramas para la conmutación en el nivel de red.

Internet como red no orientada a conexión


En un servicio orientado a conexión, el origen establece en primer lugar una conexión con el destino antes de enviar el paquete.
En un servicio no orientado a conexión, el protocolo de nivel de red trata cada paquete de forma independiente y los paquetes no
tienen relación entre ellos.

20.2 IPv4
La versión 4 del protocolo de Internet (1Pv4) es un mecanismo de entrega utilizado en los protocolos TCP/ IP.

IPv4 es un protocolo de datagramas no orientado a conexión y no fiable - utiliza un servicio de mejor entrega posible. El término
mejor posible significa que 1Pv4 no ofrece control de errores ni control de flujo (sólo para la detección de errores en la cabecera).
Datagrama
Los paquetes en IPv4 se denominan datagramas. La Figura 20.5 muestra el formato de un datagrama en IPv4.
Un datagrama es un paquete de longitud variable que consta de dos partes: cabecera y datos. La cabecera
tiene de 20 a 60 bytes de longitud y contiene información esencial para el encaminamiento y la entrega. En
TCP/IP se muestra la cabecera en secciones de 4 bytes.

Versión (VER). Este campo de


4 bits define la versión del protocolo IPv4.
Longitud de la cabecera (HLEN). Este campo de 4 bits define la longitud total de la cabecera del
datagrama en palabras de 4 bytes.
Servicios. El IEFT cambió la interpretación y el nombre de este campo de 8 bits. Este campo, anteriormente
denominado tipo de servicio, se conoce ahora como servicios diferenciados.
l. Tipo de servicio En esta interpretación, los 3 primeros bits se denominan bits de precedencia. Los siguientes 4 bits
se denominan tipo de servicio (TOS) y el último no se utiliza.
a. Precedencia es un subcampo de 3 bits con valores entre 0 (000 en binario) y 7 (111 en binario). La precedencia define la
prioridad del datagrama en situaciones tales como congestión.

b. Bits TOS. En este campo de 4 bits, cada bit tiene un significado especial. Aunque un bit puede ser 0 o 1, uno y sólo uno de estos
bits puede tener el valor 1 en cada datagrama.
2. Servicios diferenciados En esta interpretación, los primeros 6 bits constituyen un subcampo denominado codepoint y los
últimos 12 bits no se utilizan.
a. Cuando los 3 bits de la derecha son O, los 3 bits de la izquierda se los bits de precedencia en la interpretación de tipo de servicio.
b. Cuando los 3 bits de la derecha no son todos O, los 6 bits definen 64 servicios basados en la asignación de prioridad de Internet
o de los administradores locales de acuerdo a la Tabla 20.3.

Longitud total. Este es un campo de 16 bits que define la longitud total (cabecera más datos) del datagrama
en bytes.

Identificación. Este campo se utiliza en la fragmentación (que se trata en la siguiente sección).


Indicadores. Este campo se utiliza en la fragmentación (que se trata en la siguiente sección).
Desplazamiento del fragmento. Este campo se utiliza en la fragmentación (que se trata en la siguiente
sección).

Tiempo de vida. Un datagrama tiene un tiempo de vida limitado en su viaje a través de Internet. Este
campo se diseñó originalmente para almacenar una marca de tiempo, que se reducía en uno cada vez
que visitaba un encaminador. El datagrama se descartaba cuando el valor se hacía 0.
Protocolo. Este campo de 8 bits define el protocolo de nivel superior que utiliza los servicios del nivel
IPv4. Un datagrama IPv4 puede encapsular datos de varios protocolos superiores como TCP, UDP,
ICMP e IGMP.
Suma de comprobación. El concepto de suma de comprobación y su cálculo se trata más adelante en
este capítulo.
Dirección origen. Este campo de 32 bits define la dirección IPv4 de un origen. El campo debe permanecer
sin cambio durante todo el tiempo en el que el datagrama 1Pv4 viaja desde el origen hasta el
destino.
Dirección de destino. Este campo de 32 bits define la dirección 1Pv4 del destino. El campo debe permanecer
sin cambio durante todo el viaje del datagrama desde el origen hasta el destino.
Fragmentación
Un datagrama puede viajar a través de diferentes redes. Cada encaminador extrae el datagrama 1Pv4 de la
trama que recibe, la procesa y la encapsula en otra trama.
Unidad de transferencia máxima (MTU)
Cada protocolo de nivel de enlace de datos tiene su propio formato de trama en la mayoría de los protocolos.
Uno de los campos definidos en el formato es el tamaño máximo del campo de datos.

Para que el protocolo IPv4 sea independiente de la red fisica, los diseñadores decidieron hacer la longitud
máxima de un datagrama IPv4 igual a 65535 bytes. Esto hace la transmisión más eficiente cuando se utiliza
un protocolo con una MTU de este tamaño. Sin embargo, para otras redes fisicas, se debe dividir el datagrama
para que pueda pasar a través de estas redes. A este proceso se le denomina fragmentación.
Campos relacionados con la fragmentación
Identificación. Este campo de 16 bits identifica un datagrama que procede de un host origen. La combinación
de la identificación y de la dirección origen IPv4 deben definir de forma única un datagrama
cuando deja el host origen.
Indicadores. Este es un campo de 3 bits. El primer bit está reservado. El segundo bit se denomina bit
de no fragmentación. Si su valor es 1, la máquina no debe fragmentar el datagrama. Si no puede pasar
el datagrama a través de la red fisica disponible, lo descarta y envía un mensaje de error ICMP al host
origen (véase el Capítulo 21). Si su valor es 0, el datagrama se puede fragmentar si es necesario. El
tercer bit se denomina bit de más fragmentos. Si su valor es 1, significa que el datagrama no es el último
fragmento, hay más fragmentos después del él. Si su valor es 0, significa que éste es el último
fragmento o que solo hay un fragmento (véase la Figura 20.10).
Desplazamiento del fragmento. Este campo de 13 bits muestra la posición relativa de este fragmento
respecto al datagrama completo. Es el desplazamiento de los datos en el datagrama original medido en
unidades de 8 bytes.
Es obvio que aunque cada fragmento siga un camino diferente y lleguen fuera de orden, el destino final puede reensamblar el
datagrama original a partir de los fragmentos recibidos (si ninguno de ellos se pierde) utilizando la siguiente estrategia:
1. El primer fragmento tiene un campo de desplazamiento de cero.
2. Se divide la longitud del primer fragmento por 8. El segundo fragmento tiene un desplazamiento igual a ese resultado.
3. Se divide la longitud total del primer y segundo fragmento por 8. El tercer fragmento tiene un valor de desplazamiento igual a
ese resultado.
4. Se continúa el proceso. El último fragmento tiene el bit que indica más fragmentos a 0.

Opciones
La cabecera de un datagrama IPv4 está compuesta de dos partes: una parte fija y una parte variable. La parte
fija tiene una longitud de 20 bytes y ya se ha tratado en la sección anterior. La parte variable comprende las
opciones que pueden ocupar un máximo de 40 bytes.

No operación
La opción de no operación ocupa 1 byte y se utiliza como un elemento de relleno entre opciones.
Fin de opción
Esta opción que ocupa 1 byte se utiliza como relleno al final del campo de opciones.
Registrar ruta
Esta opción se utiliza para registrar los encaminadores de Internet que tratan el datagrama. Puede listar hasta
9 direcciones de encarninadores. Se utiliza para depuración y gestión.
Camino estricto desde el origen
Este campo lo utiliza el origen para predeterminar un camino para el viaje del datagrama a través de Internet.
Camino relajado desde el origen
Este campo es similar al anterior, pero es menos rígido. Cada encaminador de la lista debe ser visitado, pero
el datagrama puede visitar también otros datagramas.

Marca de tiempo
La marca de tiempo se utiliza para registrar la hora de procesamiento en un encaminador. Este tiempo se
expresa en milisegundos desde la media noche utilizando el tiempo Universal o de Greenwich.
20.3 IPv6
Aunque IPv4 está bien diseñado, la comunicación ha evolucionado desde su aparición en 1970. IPv4 tiene algunas deficiencias
(que se enumeran a continuación) que hacen inapropiado su uso para la Internet de gran crecimiento.
* A pesar de todas las soluciones realizadas, como las subredes, el direccionamiento sin clase y NAT, la reducción de direcciones
sigue siendo un problema en Internet.
* Internet debe acomodar transmisión de audio y vídeo en tiempo real. Este tipo de transmisión requiere estrategias que minimicen
el retardo y permitan la reserva de recursos, algo no ofrecido en el diseño de IPv4.
* Internet debe permitir la autenticación y el cifrado de los datos para algunas aplicaciones. IPv4 no proporciona ni cifrado ni
autenticación.
Para solucionar estas deficiencias se ha propuesto como estándar IPv6 (versión 6 del protocolo de interconexión
entre redes) también conocido como IPng (Protocolo de interconexión de redes de la siguiente generación).
Ventajas
+ Espacio de direcciones mayor. Una dirección en IPv6 tiene 128 bits, como se; indicó en el Capítulo
19. Comparado con la dirección de 32 bits de IPv4, este es un enorme (2 96) incremento en el espacio
de direcciones.
+ Mejor formato de cabecera. IPv6 utiliza un nuevo formato de cabecera en el que las opciones se
separan de la cabecera base y se insertan, cuando se necesitan, entre la cabecera base y los datos del nivel superior. Esto simplifica
y acelera el proceso de encaminamiento debido a que la mayoría de las
opciones no necesitan se comprobadas por los encaminadores.
+ Nuevas opciones. IPv6 tiene nuevas opciones que permiten funcionalidades adicionales.
+ Capacidad de ampliación. IPv6 está diseñado para permitir la extensión del protocolo si lo necesitan
nuevas tecnologías o aplicaciones.
+ Soporte para la reserva de recursos. En IPv6, el campo que indica el tipo de servicio se ha eliminado,
pero se ha incluido un mecanismo (denominado campo de etiqueta de flujo) que permite al origen
solicitar un tratamiento especial para el paquete. Este mecanismo se puede utilizar para soportar tráfico
como audio o vídeo en tiempo real. nivel superior. Esto simplifica y acelera el proceso de encaminamiento debido a que la mayoría
de las opciones no necesitan se comprobadas por los encaminadores.
+ Nuevas opciones. IPv6 tiene nuevas opciones que permiten funcionalidades adicionales.
+ Capacidad de ampliación. IPv6 está diseñado para permitir la extensión del protocolo si lo necesitan
nuevas tecnologías o aplicaciones.
+ Soporte para la reserva de recursos. En IPv6, el campo que indica el tipo de servicio se ha eliminado,
pero se ha incluido un mecanismo (denominado campo de etiqueta de flujo) que permite al origen
solicitar un tratamiento especial para el paquete. Este mecanismo se puede utilizar para soportar tráfico
como audio o vídeo en tiempo real.
+ Soporte para seguridad. El cifrado y la autenticación son opciones que ofrece IPv6 para asegurar la
confidencialidad e integridad de los paquetes.
Formato del paquete
Cada paquete se compone de una cabecera base obligatoria seguido por una carga. La carga consta de dos partes: cabeceras de
extensión opcionales y datos del nivel superior. La cabecera base ocupa 40 bytes, mientras que las cabeceras de extensión y los
datos del nivel superior pueden ocupan hasta 65535 bytes de información.
Cabecera base
+ Versión. Este campo de 4 bits define el número de versión. En 1Pv6 el valor es 6.
+ Prioridad. Este campo de 4 bits define la prioridad del paquete respecto a la congestión de tráfico. Este campo se tratará más
tarde.
+ Etiqueta de flujo. Este campo de 3 bytes (24 bits) está diseñado para ofrecer un tratamiento especial para un flujo de datos
particular. Se tratará más adelante.
+ Longitud de la carga. Este campo de 2 bytes define la longitud del datagrama IP excluyendo la cabecera base.
+ Cabecera siguiente. Este campo de 8 bits define la cabecera que sigue a la cabecera base en el datagrama. La cabecera siguiente
es o una de las cabeceras de extensión opcionales utilizadas por IP o un paquete encapsulado de UDP o TCP. Cada cabecera de
extensión también contiene este campo. La Tabla 20.6 muestra los valores de las cabeceras siguientes. Observe que este campo en
la versión 4 se denominaba protocolo.
+ Límite de salto. Este campo de 8 bits tiene el mismo objetivo que el campo TIL en el protocolo IPv4.
+ Dirección origen. Este campo de 16 bytes (128 bits) especifica la dirección del origen.
+ Dirección destino. Este campo contiene la dirección Internet del destino. Si se utiliza encaminamiento desde el origen, este
campo contiene la dirección del siguiente encaminador.
Prioridad
La prioridad en un paquete IPv6 define la prioridad de cada paquete respecto a otros paquetes del mismo origen.
Tráfico con control de congestión Si un emisor se adapta a un tráfico lento cuando hay congestión, el
tráfico se conoce como tráfico con control de congestión. Por ejemplo, el protocolo TCP que utiliza el protocolo
de ventana deslizante, puede fácilmente responder al tráfico.

+ Tráfico no específico. Una prioridad O se asigna a un paquete cuando el proceso no define ninguna prioridad.
+ Datos de fondo. Este grupo (prioridad 1) define datos que normalmente se entregan de fondo. La entrega de noticias es un buen
ejemplo.
+ Tráfico de datos no esperado. Si un usuario no está esperando (atendiendo) la recepción de datos, al paquete se le asigna una
prioridad de 2. El correo electrónico pertenece a este grupo. El receptor de un correo electrónico no sabe cuándo va a llegar un
mensaje. Además, un correo electrónico normalmente se almacena antes de reenviarse. Un poco de retardo no tiene consecuencias.
+ Tráfico de gran cantidad de datos esperados. Un protocolo que transfiere un gran volumen de datos mientras el usuario está
esperando (atendiendo) a recibirlos (posiblemente con retardo) tiene asignada la prioridad 4. FTP y HTTP pertenece a este grupo.
+ Tráfico interactivo. Protocolos como TELNET que necesitan interacción con el usuario tienen asignada la segunda mayor
prioridad (6) en este grupo.
+ Tráfico de control. El tráfico de control tiene asignada la prioridad (7). Los protocolos de encaminamiento como OSPF y RIP y
los protocolos de gestión como SNMP tienen esta prioridad.
Tráfico sin control de congestión Se refiere a un tipo de tráfico que espera un mínimo retardo. No es deseable el descarte de
paquetes. La retransmisión en la mayoría de los casos es imposible.
Los números de prioridad que se asignan al tráfico sin control de congestión van del 8 al 15. Aunque no
hay todavía ninguna asignación estándar para este tipo de datos, las prioridades se asignan normalmente de
acuerdo a cómo la calidad de los datos recibidos puede ser afectada por el descarte de algunos paquetes.

Etiqueta de flujo
Una secuencia de paquetes, enviada por un emisor concreto a un destino, que necesita una gestión especial
en los encaminadores se denomina flujo de paquetes. La combinación de la dirección del origen y el valor de
la etiqueta de flujo define de forma única al flujo de paquetes.
Para permitir el uso efectivo de las etiquetas de flujo, se han definido tres reglas:
l. La estación origen es la que asigna la etiqueta de flujo a un paquete. La etiqueta es un número aleatorio
entre 1 y 224-1. Un emisor no debe reutilizar una etiqueta de flujo para otro flujo mientras el flujo
existente siga activo.
2. Si una estación no soporta la etiqueta de flujo, pone este campo a cero. Si un encaminador no soporta
la etiqueta de flujo simplemente lo ignora.
3. Todos los paquetes que pertenecen al mismo flujo tienen el mismo origen, el mismo destino, la misma
prioridad y las mismas opciones.
Comparación entre las cabeceras de IPv4 e IPv6

Cabeceras de ampliación
La longitud de la cabecera base tiene un tamaño fijo de 40 bytes. Sin embargo, para dar más funcionalidad al
datagrama IP, la cabecera base puede ser seguida de hasta seis cabeceras de ampliación.
Opción salto a salto
La opción salto a salto se utiliza cuando el emisor necesita pasar información a todos los encaminadores
visitados por el datagrama. Hasta el momento se han definido tres opciones; Pad1, PadN, y carga jumbo.
Encaminamiento desde el origen La opción encaminamiento desde el origen combina los conceptos de
las opciones camino estricto desde el origen y camino relajado desde el origen de IPv4.
Fragmentación
El concepto de fragmentación es el mismo que en IPv4. Sin embargo, el lugar en el que ocurre la fragmentación
es diferente. En IPv4, el emisor o un encaminador tiene que fragmentar el datagrama si su tamaño es
mayor que la MTU de la red sobre la cual debe viajar el datagrama. Un emisor debe utilizar la técnica de
descubrimiento de caminos MTU para encontrar la MTU más pequeña soportada por cualquier red del
camino.
Autenticación
La cabecera de ampliación para autenticación tiene un doble objetivo. Valida el mensaje y se asegura la integridad
de los datos. Se tratará esta cabecera de ampliación cuando se describa la seguridad en redes en el
Capítulo 26.
Carga de seguridad cifrada
La carga de seguridad cifrada (ESP) es una ampliación que ofrece confidencialidad y guarda contra la interceptación.
Se tratará esta cabecera en el Capítulo 26.
Opción de destino La opción de destino se utiliza cuando el emisor necesita pasar información al destino.
Los encaminadores intermedios no pueden acceder a esta información.
Comparación entre las opciones en /Pv4 y las cabeceras en 1Pv6
La Tabla 20.10 compara las opciones en IPv4 con las cabeceras de ampliación en IPv6.
20.4 TRANSICIÓN DE IPv4 E IPv6

Pila dual
Se recomienda que todas las estaciones, antes de migrar completamente a la versión 6, tengan una pila dual
de protocolos. En otras palabras, una estación debe ejecutar simultáneamente IPv4 e IPv6 hasta que Internet
utilice IPv6.
Túneles
Los túneles son una estrategia utilizada cuando dos computadoras que utilizan IPv6 quieren comunicarse entre sí y los paquetes
deben atravesar una región que usa IPv4. Para pasar por esta región, el paquete debe tener una dirección IPv4. Por tanto, el paquete
IPv6 se encapsula en un paquete IPv4 cuando entra en la región y se extrae cuando deja la región.
Traducción de cabeceras
La traducción de cabeceras es necesaria cuando la mayor parte de Internet se ha movido a IPv6 pero permanecen
algunos sistemas utilizando IPv4. El emisor quiere utilizar IPv6 pero el receptor no comprende IPv6.
La traducción de cabeceras utiliza direcciones proyectadas para traducir una dirección IPv6 a una dirección
IPv4. La Tabla 20.11 enumera algunas reglas utilizadas para transformar una cabecera de un paquete 1Pv6 a
una cabecera de un paquete IPv4.
20.7 RESUMEN
O IPV4 es un protocolo no orientado a conexión no fiable responsable de la entrega desde el origen al
destino.
O Los paquetes en el nivel IPv4 se denominan datagramas. Un datagrama consta de una cabecera (20 a
60 bytes) y datos. La longitud máxima de un datagrama es 65535 bytes.
O La MTU es el número máximo de bytes que un protocolo de enlace de datos puede encapsular. Las
MTU dependen del protocolo.
O La fragmentación es la división de un datagrama en unidades más pequeñas para acomodarse a la MTU
del protocolo de enlace de datos.
O La cabecera de un datagrama IPv4 consta de una sección fija de 20 bytes y una sección de opciones
variable con un máximo de 40 bytes.
O La sección de opciones de la cabecera de un datagrama IPv4 se utiliza para probar y depurar la red.
O Las seis opciones de IPv4 tienen funciones específicas. Son las siguientes: relleno entre opciones para
alineamiento, relleno, registrar el camino que toma el datagrama, selección obligatoria de un camino
indicada por el emisor, selección de ciertos caminos que deben ser visitados y registrar el tiempo de
procesamiento en los encaminadores.
O Un datagrama IPv6 está compuesto de una cabecera base y una carga.
O Las cabeceras de ampliación añaden funcionalidad al datagrama IPv6.
O Hay tres estrategias para gestionar la transición de la versión 4 a la versión 6: pila dual, túneles y traducción
de cabeceras.
Nivel de red: Asociación de direcciones,
informes de error y multicast
Sin embargo, estos paquetes deben estar encapsulados en una trama, que necesita direcciones fisicas (nodo a nodo). Veremos que
se ha diseñado un protocolo, denominado protocolo de resolución de direcciones (Address Resolution Protocol, ARP), para
lograr este objetivo.
21.1 ASOCIACIÓN DE DIRECCIONES
Una dirección física es una dirección local. Su jurisdicción es para una red local. Debe ser única a nivel
local, pero no necesariamente única a nivel universal. Se denomina dirección física porque habitualmente
(aunque no siempre) se incrementa en el hardware. Un ejemplo de dirección física es la dirección MAC de
48 bits usada en el protocolo Ethernet, que está impresa en la tarjeta de red (NIC) instalada en la computadora
o enrutador.
La asociación estática necesita la creación de una tabla de direcciones que asocia una dirección lógica
con una dirección física. Esta tabla se almacena en cada máquina de la red. Cada máquina que sabe, por
ejemplo, la dirección 1P de otra máquina, pero no su dirección fisica, puede buscarla en la tabla. Esto tiene
algunas limitaciones porque las direcciones físicas pueden cambiar de varias formas:
l. Una máquina podría cambiar su NIC, lo que resultaría en una nueva dirección física.
2. En algunas LAN, como Loca!Talk, la dirección física cambia cada vez que se arranca la computadora.
3. Una computadora portátil puede moverse de una red física a otra, dando como resultado un cambio en
su dirección física.
Asociación de direcciones lógicas a físicas: ARP
Pero el datagrama IP debe ser encapsulado en una trama para que pueda pasar a través de la red
física. Esto implica que el emisor necesita conocer la dirección física del receptor. La computadora o el enrutador
envían un paquete de consulta ARP. El paquete incluye las direcciones físicas e IP del emisor y la
dirección IP del receptor.
Cada computadora o enrutador de la red recibe y procesa el paquete de consulta ARP, pero sólo el receptor
real reconoce su dirección 1P y devuelve un paquete de respuesta ARP. El paquete de respuesta contiene
la dirección 1P del receptor y su dirección física. El paquete es enviado directamente al que hizo la consulta
usando la dirección física recibida en el paquete de consulta.

Memoria caché
Un sistema que recibe una respuesta ARP almacena la asociación en la memoria caché y la guarda durante 20 o 30 minutos a
menos que se acabe el espacio de la caché.
Formato de paquete
Encapsulado
Un paquete ARP se encapsula directamente en una trama de nivel de enlace.

Funcionamiento
Veamos cómo funciona ARP en una Internet típica. Estos son los pasos involucrados en un proceso ARP:
l. El emisor sabe la dirección 1P del destino. Veremos en breve como obtiene del emisor esta dirección.
2. 1P pide a ARP que cree un mensaje de consulta ARP, rellenando la dirección fisica del emisor, la
dirección IP del emisor y la dirección 1P destino. El campo de dirección fisica del destino se rellena
con ceros.
3. El mensaje se pasa a nivel de enlace donde es encapsulado en una trama usando la dirección fisica del
emisor, dirección origen y la dirección fisica de broadcast como dirección destino.
4. Cada computadora o enrutador recibe la trama. Debido que la trama contiene una dirección destino
broadcast, todas las estaciones reciben el mensaje y lo pasan a su ARP. Todas las máquinas excepto la
máquina destino descartan el paquete. La máquina destino reconoce su dirección IP.
5. La máquina destino responde con un mensaje de respuesta ARP que contiene su dirección física. Este
mensaje es unicast.
6. El emisor recibe el mensaje de respuesta. Ahora conoce la dirección fisica de la dirección destino.
7. El datagrama IP, que lleva los datos del destino, es encapsulado ahora en una trama y enviado al destino.
Cuatro casos distintos
A continuación, se muestran cuatro casos distintos de uso de los servicios ARP:
1. El emisor es una computadora y quien envía un paquete a otra computadora de la misma red. En este
caso, la dirección lógica que debe ser asociada con una dirección fisica es la dirección destino del 1P
en cabecera del datagrama.
2. El emisor es una computadora y quien envía un paquete a otra computadora en otra red. En este caso,
la computadora busca en su tabla de enrutamiento y encuentra la dirección IP del siguiente salto (enrutador)
hacia el destino. Si no tiene una tabla de enrutamiento, busca la dirección 1P del enrutador por
defecto. La dirección IP del enrutador se convierte en la dirección lógica que debe ser asociada con
una dirección física.
3. El emisor es un enrutador que ha recibido un datagrama destinado para una computadora en otra red.
Busca en su tabla de enrutamiento y encuentra la dirección IP del siguiente enrutador. La dirección
IP del siguiente enrutador se convierte en la dirección lógica que debe ser asociada a una dirección
fisica.
4. El emisor es un enrutador que ha recibido un datagrama destinado para una computadora de la misma
red. La dirección destino 1P del datagrama se convierte en la dirección lógica de destino que debe ser
asociada con una dirección fisica.
Asociación de direcciones físicas a lógicas: RARP, BOOTP y DHCP
En algunas ocasiones una computadora conoce su dirección física, pero necesita conocer su dirección lógica.
Esto puede ocurrir en dos casos:
1. Una estación sin disco está arrancando. La estación puede conocer su dirección física comprobando su
interfaz de red, pero no conoce su dirección IP.
2. Una organización no tiene suficientes direcciones IP para asignar a cada estación; necesita asignar
direcciones 1P bajo demanda. La estación puede enviar su dirección fisica y pedir una dirección IP
dedicada para un periodo de tiempo.
RARP
El Protocolo de resolución de direcciones inverso (Revese Address Resolution Protocol, RARP) halla la
dirección lógica para una máquina que sólo conoce su dirección fisica.

BOOTP
El protocolo Bootstrap Protocol (BOOTP) es un protocolo cliente/servidor diseñado para proporcionar una
asociación de dirección fisica a dirección lógica. BOOTP es un protocolo de nivel de aplicación.
La petición BOOTP es broadcast porque el cliente no conoce la dirección IP del servidor.
DHCP
BOOTP no es un protocolo de configuración dinámica. Cuando un cliente pide su dirección IP, el protocolo
BOOTP consulta una tabla que asocia la dirección física del cliente con su dirección IP. Esto implica que
el enlace entre la dirección física y la dirección EP del cliente ya existe.
El protocolo de configuración de host dinámico (Dynamic Host Configuration Protocol, DHCP) se
ha diseñado para proporcionar asignación estática y dinámica de direcciones, que puede ser manual o automática.

Asignación de dirección estática Con esta capacidad DHCP actúa como BOOTP. Es compatible hacia
atrás con BOOTP, lo que significa que en una computadora que ejecute un cliente BOOTP puede obtener una
dirección estática de un servidor DHCP.
Asociación de dirección dinámica DHCP tiene una segunda base de datos con un conjunto de direcciones
IP disponibles. Esta segunda base de datos hace que DHCP sea dinámico. Cuando un cliente DHCP pide una
dirección temporal IP, el servidor DHCP consulta el conjunto de direcciones IP disponibles (sin usar) y asigna
una dirección IP durante un periodo de tiempo negociable.
Configuración manual y automática Un problema importante con el protocolo BOOTP es que la tabla
que asocia las direcciones IP a las direcciones fisicas debe ser configurada manualmente.
21.2 ICMP
Se ha diseñado el Protocolo de Control de Mensajes de Internet (Internet Control Message Protocol,
ICMP) para compensar las dos deficiencias anteriores. Va unido al protocolo IP.
Tipos de mensajes
Los mensajes ICMP se dividen en dos grandes categorías: mensajes de informe error y mensajes de consulta.
Los mensajes de informe error informan de problemas que un enrutador o una computadora (destino)
puede encontrar cuando procesa un paquete IP.
Los mensajes de consulta, que se producen en pares, ayudan a una computadora o gestor de red a tener
información específica de un enrutador o de otra computadora.
Formato de mensaje
Un mensaje ICMP tiene una cabecera de ocho bytes y una sección de datos de tamaño variable. Aunque el
formato general de la cabecera es distinto para cada tipo de mensaje, los primeros cuatro bytes son comunes
para todos.
Informes de error
Una de las responsabilidades principales de ICMP es informar de los errores.

Destino inalcanzable
Cuando un enrutador no puede enviar un datagrama o una computadora no puede entregar un datagrama, el
datagrama se descarta y el enrutador o la computadora envían un mensaje de destino inalcanzable de vuelta
a la computadora origen que inició el datagrama.
Frenar origen
El protocolo 1P es un protocolo sin conexión. No hay comunicación entre la computadora origen, que produce
el datagrama, los enrutadores, que lo reenvían, y la computadora destino que lo procesa.
Tiempo excedido
El mensaje tiempo excedido se genera en dos casos.
Problemas con los parámetros
Cualquier ambigüedad en la cabecera de un datagrama puede crear problemas serios a medida que el datagrama viaja a través de
Internet. Si un enrutador o la computadora destino descubren un valor ambiguo o perdido en cualquier campo del datagrama,
descartan el datagrama y envían un mensaje de problemas con los parámetros al origen del mismo.
Redirección
Cuando un enrutador necesita enviar un paquete destinado a otra red, debe conocer la dirección IP del siguiente
enrutador apropiado. Esto mismo es cierto si el emisor es una computadora. Tanto enrutadores como
computadoras deben tener acceso a una tabla de rutas para hallar la dirección del enrutador o del siguiente
enrutador. Los enrutadores toman parte en el proceso de actualización de rutas, como veremos en el Capítulo
22, y se supone que están actualizados constantemente. El enrutamiento es dinámico.

Consulta
Además de informar de los errores, ICMP puede diagnosticar algunos problemas en la red. Esto se lleva a
cabo mediante los mensajes de consulta, un grupo de cuatro pares de mensajes distintos que se muestra en la
Figura 21.11.

Petición de eco y respuesta


Los mensajes de petición de eco y respuesta de eco se diseñaron para diagnóstico.
Petición de marca de tiempo y respuesta
Dos máquinas (computadoras o enrutadores) pueden usar los mensajes de petición de marca de tiempo y
respuesta para determinar el tiempo necesario para que un datagrama 1P a un viaje de ida y vuelta entre ellos.
También se pueden usar para sincronizar los relojes de dos máquinas.
Petición de dirección de máscara y respuesta
Para obtener esta máscara, la computadora envía un mensaje de petición de dirección de máscara a un enrutador de la LAN.
El enrutador que recibe el mensaje de petición de dirección de máscara responde con un mensaje de respuesta de dirección de
máscara, proporcionando la máscara necesaria a la computadora.
Petición de enrutador y anuncio
una computadora que quiere enviar datos a una computadora en otras redes necesita conocer la dirección de los enrutadores
conectados a su propia red. Igualmente, debe conocer si los enrutadores están vivos y en funcionamiento. Los mensajes de petición
de enrutador y anuncio de enrutador pueden ayudar en esta situación.
Suma de comprobación
En el Capítulo 10 se mostró el concepto y la idea de la suma de comprobación (checksum). En ICMP, la suma
de comprobación se calcula sobre el mensaje completo (cabecera y datos).
Herramientas de depuración
Ping
Se puede usar el programa ping para ver si una computadora está viva y responde. Presentamos ping aquí para
ver cómo usa los paquetes ICMP.
Traceroute
El programa traceroute en UNIX o tracert en Windows se puede usar para seguir la ruta de un paquete desde
el origen al destino.
El programa traceroute usa los mensajes ICMP y el campo TTL del paquete
IP para hallar la ruta.
1. El programa traceroute usa los pasos siguientes para hallar la dirección del enrutador Rl y el tiempo de ida y vuelta entre la
computadora A y el enrutador Rl.
a. La aplicación traceroute en la computadora A envía un paquete al destino B usando UDP; este mensaje es encapsulado en un
paquete 1P con valor de TTL 1. El programa anota el tiempo de envío del paquete.
b. El enrutador Rl recibe el paquete y pone el valor de TTL a 0. Entonces descarta el paquete (porque TTL es 0). Sin embargo, el
enrutador envía un mensaje ICMP de tiempo excedido (tipo 11 y código 0) para mostrar que el valor de TTL es 0 y el paquete se
ha descartado.
c. El programa traceroute recibe los mensajes ICMP y usa la dirección de destino del paquete IP que encapsula el ICMP para
hallar la dirección 1P del enrutador Rl. El programa también anota el tiempo de llegada del paquete. La diferencia entre este tiempo
y el tiempo de envío es el tiempo de ida y vuelta. El programa traceroute repite estos pasos tres veces para obtener un tiempo
medio de ida y vuelta más exacto. El primer tiempo puede ser mucho mayor que el segundo o el tercero debido al tiempo que le
cuesta al programa ARP encontrar la dirección fisica del enrutador RJ. Para las vueltas segunda y tercera, ARP tiene la dirección
en su caché.
2. El programa traceroute repite los pasos previos para hallar la dirección del enrutador R2 y el tiempo de vida y vuelta entre la
computadora A y el enrutador R2. Sin embargo, en este paso, el valor de TTL se pone a 2. En esta forma, el enrutador Rl reenvía el
mensaje, mientras el enrutador R2 lo descarta y envía un mensaje lCMP de tiempo excedido.
3. El programa traceroute repite el paso 2 para hallar la dirección de la computadora B y el tiempo de vida y vuelta entre la
computadora A y la computadora B. Cuando la computadora B recibe el mensaje, reduce el valor de TTL, pero no descarta el
mensaje puesto que ha llegado a su destino final. ¿Cómo se puede enviar un mensaje ICMP a la computadora A? En este caso, el
programa usa una estrategia diferente. El puerto de destino del paquete UDP se pone con un valor no soportado por el protocolo
UDP. Cuando la computadora B recibe el paquete, no puede encontrar una aplicación que acepte la entrega. Descarta el paquete y
envía un mensaje ICMP de destino inalcanzable (tipo 3, código 3) a la computadora A. Observe que esta situación no se produce
en los enrutadores Rl y R2 porque los enrutadores no comprueban la cabecera UDP. El programa traceroute graba la dirección del
destino del datagrama que ha llegado y toma nota del tiempo de ida y vuelta. La recepción de un mensaje de destino inalcanzable
con un valor de código 3 es una indicación de que se ha encontrado la ruta y de que no se necesitan más paquetes.
21.3 IGMP
Sin embargo, algunos procesos necesitan a veces enviar el mismo mensaje a un gran número de receptores simultáneamente. A
esto se le denomina multicast (o multienvío), que es una comunicación uno a muchos.
El protocolo de gestión de grupos en Internet (lntemet Group Management Protocol, IGMP) es uno de
los protocolos necesarios, pero no suficiente (como veremos), que está involucrado en el multienvío. IGMP es
un complemento al protocolo IP.
Gestión de grupos
IGMP no es un protocolo de enrutamiento para multienvío; es un protocolo que gestiona la pertenencia a grupos.

Mensajes IGMP
IGMP tiene dos versiones. Aquí se trata la versión lGMPv2, la versión actual.

Formato de mensaje
La Figura 21.15 muestra el formato de un mensaje IGMP versión 2.
Funcionamiento de IGMP
IGMP funciona a nivel local.
Para cada grupo hay una ruta que tiene la obligación de distribuir los paquetes multienvío destinados para
ese grupo. Esto significa que si existen tres enrutadores multienvío conectados a la red, sus listas de groupids
(identificadores de grupo) son mutuamente excluyentes.

Unión a un grupo
Una computadora o un enrutador se puede unir a un grupo.

Abandonar un grupo
Cuando una computadora observa que ningún proceso está interesado en un grupo específico, envía un informe de abandono.
Para asegurarse, el enrutador envía un mensaje de consulta especial que incluye el groupid, o dirección multicast, relacionado con
el grupo.
Monitorización de pertenencia
Una computadora o enrutador se puede unir a un grupo enviando un mensaje de informe de pertenencia.

Enrutador de consulta
Los mensajes de consulta pueden crear muchas respuestas. Para prevenir el tráfico innecesario, IGMP designa
un enrutador como el enrutador de consulta para cada red. Sólo este enrutador envía los mensajes de
consulta, siendo los otros enrutadores pasivos (reciben respuestas y actualizan sus listas).
Utilidad Netstat
La utilidad netstat se puede usar para buscar las direcciones multicast soportadas por la interfaz.
21.4 ICMPv6
La nueva versión sigue la misma estrategia y objetivos de la versión 4, que ha sido modificada para hacerla más adecuada a IPv6.
Además, algunos protocolos que eran independientes en la versión 4 son parte ahora del protocolo de control de mensajes entre
redes (ICMPv6).

Informe de errores
La Tabla 21.1 compara los mensajes de informe de error de ICMPv4 con los de ICMPv6.
Consulta

21.7 RESUMEN
□ La entrega de un paquete a una computadora o enrutador necesita dos niveles de direcciones: lógica y
física. Una dirección física identifica a una computadora o enrutador en el nivel físico.
□ La asociación de una dirección lógica con una dirección física puede ser estática o dinámica.
□ La asociación estática involucra a una lista de correspondencias de direcciones lógicas y físicas; el
mantenimiento de esta lista requiere una alta sobrecarga.
□ El protocolo de resolución de dirección (ARP) es un método de asociación dinámica que encuentra una
dirección física a partir de una dirección lógica.
□ El protocolo de resolución de dirección inversa (RARP) es una forma de asociación dinámica en la
cual una dirección física determinada se asocia con una dirección lógica.
□ ICMP envía cuatro paredes de mensajes de consulta: petición de eco y respuesta de eco, petición de
marca de tiempo y respuesta, petición de dirección de máscara y respuesta y petición de enrutador y
anuncio.
□ Packet Internet Groper (ping) es una aplicación que usa los servicios de ICMP para comprobar si una
computadora se puede alcanzar.
□ El multienvío consiste en enviar el mismo mensaje a más de un receptor simultáneamente.
□ El protocolo de gestión del grupos en Internet (IGMP) ayuda a los enrutadores multienvío a crear y
mantener una lista de miembros legales relacionados con una interfaz del enrutador.
□ Los tres tipos de mensajes IGMP son el mensaje de consulta, el informe de pertenencia a grupo y el
informe de abandono.
□ Una estrategia de respuesta diferida evita el tráfico innecesario en una LAN.
□ BOOTP y DHCP son aplicaciones cliente/servidor que entregan información vital de la redes a computadoras
sin disco o computadoras que arrancan por primera vez.
□ Una petición BOOTP es encapsulada en un datagrama de usuario UDP.
□ BOOTP, un protocolo de configuración estática, usa una tabla que asocia direcciones IP a direcciones
fisicas.
□ Un agente de reenvío es un enrutador que ayuda a enviar peticiones locales BOOTP a servidores remotos.
□ DHCP es un protocolo de configuración dinámica con dos bases de datos: una es similar a BOOTP, la
otra es un conjunto de direcciones IP disponibles para asignación temporal.
□ El servidor DHCP emite un alquiler a un cliente de una dirección IP por un tiempo específico.
□ ICMPv6, como la versión 4, informa de errores, gestiona pertenencia a grupos, actualiza las tablas
específicas de un enrutador o una computadora y comprueba la viabilidad de una computadora.
Comunicación proceso a proceso: UDP, TCP y SCTP
Este capítulo comienza justificando la existencia del nivel de transporte: la necesidad de comunicación de
proceso a proceso.
23.1 COMUNICACIÓN PROCESO A PROCESO
El nivel de enlace es responsable de la entrega de tramas entre dos nodos vecinos en un enlace. A esto se le
llama comunicación nodo a nodo. El nivel de red es responsable de la entrega de datagramas entre dos computadoras. A esto se le
llama comunicación computadora a computadora.
La comunicación real tiene lugar entre dos procesos (programas de aplicación). Por tanto se necesita comunicación proceso a
proceso.

Paradigma cliente/servidor
Aunque hay varias formas de conseguir la comunicación entre procesos, la más frecuente es usar el paradigma cliente/servidor.
Un proceso de la computadora local, denominado un cliente, necesita servicio desde un proceso que habitualmente está situado en
un proceso remoto, denominado un servidor.
Para la comunicación, es necesario definir lo siguiente:
1. Computadora local.
2. Proceso local.
3. Computadora remota.
4. Proceso remoto.
Direccionamiento
En el modelo de Internet, los números de puerto son enteros de 16 bits entre 0 y 65.535. El programa
cliente define su propio puerto, elegido aleatoriamente por el software de nivel de transporte que se ejecuta
en el cliente. Este es el número de puerto efimero.
En Internet se ha decidido utiliz.ar números de puerto universales para algunos servidores; son
los denominados números de puerto bien conocidos.
Rangos IANA
La IANA (Internet Assigned Number Authority) ha dividido los números de puerto en tres rangos: bien conocidos,
registrados y dinámicos (o privados), como se muestra en la Figura 23.4.
□ Puertos bien conocidos. Los puertos entre 0 y 1023 son asignados y controlados por IANA. Son los
puertos bien conocidos.
□ Puertos registrados. Los puertos entre 1024 y 49 .151 no son asignados o controlados por IANA. Sólo
pueden ser registrados en IANA para evitar la duplicación.
□ Puertos dinámicos. Los puertos entre 49.152 y 65.535 no son controlados ni registrados. Pueden ser
usados por cualquier proceso. Son puertos efimeros.

Direcciones de sockets
La comunicación proceso a proceso necesita dos identificadores, dirección 1P y número de puerto, en cada
extremo para poder crear una conexión. La combinación de una dirección 1P y un número de puerto se denomina
dirección de socket.

Multiplexación y demultiplexación
El mecanismo de direccionamiento permite multiplexar y demultiplexar las direcciones en el nivel de transporte,
como se muestra en la Figura 23.6.
Multiplexación
En el lado del emisor, puede haber varios procesos que necesitan enviar paquetes. Sin embargo, hay un único
nivel de transporte. Existe una relación muchos a uno y necesita multiplexación. El protocolo acepta mensajes
de distintos procesos diferenciados por los números de puerto que tienen asignados. Después de añadir la
cabecera, el nivel de transporte pasa los paquetes al nivel de red.
Demultiplexación
En el lado del receptor, la relación es uno a muchos y necesita demultiplexación. El nivel de transporte recibe
datagramas del nivel de red. Después de comprobar si hay errores y quitar la cabecera, el nivel de transporte
entrega cada mensaje al proceso apropiado basándose en el número de puertos.
Servicio sin conexión frente a servicio orientado a conexión
Servicio sin conexión
En un servicio sin conexión, los paquetes son enviados de una parte a la otra sin necesidad de establecer o
liberar una conexión. Los paquetes no están numerados; pueden retrasarse, perderse o llegar fuera de orden. No hay ningún tipo de
confirmación.
Servicio orientado a conexión
En un servicio orientado a conexión, se establece primero una conexión entre emisor y receptor. Los datos
se transfieren. Al final, se libera la conexión.
Fiable frente a no fiable
El servicio del nivel de transporte puede ser fiable o no fiable.
Si el programa de nivel de aplicación necesita fiabilidad, se usa un protocolo fiable de nivel de transporte implementando control
de error y de flujo a nivel de transporte. Esto significa servicio más lento y más complejo. Por otro lado, si el programa de
aplicación no necesita fiabilidad porque usa sus propios mecanismos de control de flujo o error o necesita servicio rápido o la
naturaleza del servicio no demanda control de flujo y errores (aplicaciones de tiempo real), entonces se puede usar un protocolo no
fiable.
Tres protocolos
El conjunto de protocolos TCP/IP original especifica dos protocolos para el nivel de transporte: UDP y TCP.
23.2 PROTOCOLO DE DATAGRAMA DE USUARIO (UDP)
El protocolo de datagrama de usuario (User Datagram Protocol, UDP) es un protocolo sin conexión y no
fiable. No añade nada a los servicios de 1P excepto proporcionar comunicación proceso a proceso en lugar de
comunicaciones computadora a computadora. También lleva a cabo comprobación de error muy limitada.
Puertos bien conocidos en UDP
La Tabla 23.1 muestra algunos puertos bien conocidos para UDP. Algunos números de puertos se pueden usar
tanto en UDP como en TCP.

Datagramas de usuario
Los paquetes UDP, denominados datagrama de usuario, tienen una cabecera de tamaño fijo de ocho bytes.

A continuación, se describen los campos:


□ Número de puerto origen. Este es el número de puerto usado por el proceso que ejecuta en la computadora
origen. Tiene 16 bits de longitud, lo que significa que el número de puertos puede variar entre 0 y 65.535 puerto si la computadora
origen es el cliente (un cliente que hace una petición), el número de puerto en la mayoría de los casos es un número de puerto
efimero pedido por el proceso y elegido por el software UDP que se ejecuta en la computadora origen. Si el conmutador origen es
el servidor (un servidor envía una respuesta), el número de puerto es en la mayoría de los casos un número de puerto bien
conocido.
□ Número de puerto destino. Este es el número de puerto usado por el proceso que se ejecuta en la computadora destino. Su
longitud es también de 16 bits. Si la computadora destino es el servidor (un cliente enviando una respuesta), el número de puerto es
en la mayoría de los casos un puerto bien conocido. Si la computadora destino es el cliente (un servidor envía una respuesta), el
número de puerto es en la mayoría de los casos un puerto efimero. En este caso, el servidor copia el número de puerto efimero que
ha recibido en el paquete de respuesta.
□ Longitud. Campo de 16 bits que define la longitud total del datagrama de usuario, cabecera y datos. Los 16 bits pueden definir
una longitud total de 0 a 65.535 bytes. Sin embargo, la longitud total debe ser mucho menor porque un datagrama UDP se
almacena en un datagrama 1P con una longitud total de 65.535 bytes. El campo de longitud de un datagrama UDP no es realmente
necesario. Un datagrama de usuario es encapsulado en un datagrama IP. Hay un campo de longitud total en el datagrama IP. Hay
otro campo en el datagrama IP que define la longitud de la cabecera. Por tanto, si restamos el valor del segundo campo del primero,
se puede deducir la longitud del datagrama UDP que está encapsulado en un datagrama IP.

□ Suma de comprobación. Este campo se usa para detectar los errores en el datagrama de usuario (cabecera
y datos).
Funcionamiento de UDP
Servicios sin conexión
Como ya hemos dicho, UDP proporciona un servicio sin conexión. Esto significa que cada datagrama
de usuario enviado por UDP es un datagrama independiente.
Los datagramas de usuario no están numerados. Igualmente, no hay establecimiento de conexión ni terminación de conexión, como
ocurre en TCP.
Control de flujo y error
UDP es un protocolo de transporte muy sencillo y poco fiable. No hay control de flujo y no hay mecanismo
de ventana. El receptor puede desbordarse con los mensajes que llegan.
La falta de control de flujo y control de error significa que el proceso que use UDP debería proporcionar
estos mecanismos.
Encapsulamiento y desencapsulamiento
Para enviar un mensaje de un proceso a otro, el protocolo UDP encapsula y desencapsula los mensajes en un
datagrama IP.
Encolamiento
Ya hemos hablado sobre los puertos sin tratar su implementación real. En UDP, existen colas asociadas con
puertos (véase la Figura 23.10).
Observe que, incluso si un proceso quiere comunicarse con muchos procesos, obtiene sólo un número de
puerto y eventualmente una cola de entrada y una cola de salida.
Si no existe dicha cola, UDP descarta el datagrama y le pide al protocolo ICMP que envíe un mensaje de puerto no alcanzable al
servidor.

Uso de UDP
A continuación se enumeran algunos usos del protocolo UDP:
□ UDP es adecuado para un proceso que necesita comunicación petición-respuesta sencilla y al cual le
preocupa·poco el control de flujo y error. Habitualmente no se usa para un proceso como FTP que
necesita usar datos masivos (véase el Capítulo 25).
□ UDP es adecuado para procesos con mecanismos internos de control de flujo y error. Por ejemplo, el
Trivial File Transfer Protocol (TFTP) incluye control de flujo y error. Puede usar fácilmente UDP.
□ UDP es un protocolo de transporte adecuado para multienvío. La capacidad de multienvío está empotrada
en el software UDP, pero no en el TCP.
□ UDP se usa para procesos de gestión como SNMP (véase el Capítulo 25).
□ UDP se usa para algunos protocolos de actualización de ruta, como el Routing Information Protocol
(RIP) (véase el Capítulo 22).
23.3 PROTOCOLO DE CONTROL DE TRANSMISIÓN (TCP)
El segundo protocolo de nivel de transporte que veremos en este capítulo se denomina protocolo de control
de transmisión (Transmission Control Protocol, TCP). TCP, a diferencia de UDP, es un protocolo proceso
a proceso (programa a programa). Por tanto, TCP, como UDP, usa números de puertos. A diferencia de
UDP, TCP es un protocolo orientado conexión; crea una conexión virtual entre dos ÍCP para enviar datos.
Además, TCP usa mecanismos de control de flujo y error a nivel de transporte.
Resumiendo, se dice que TCP es un protocolo de transporte orientado a conexión y fiable. Añade a 1P las
características de orientación a conexión y fiabilidad.
Servicios TCP
Antes de tratar TCP en detalle, vamos a explicar los servicios ofrecidos por TCP a los procesos en el nivel de
aplicación.
Comunicación proceso a proceso

Servicio de transmisión de flujos


TCP, a diferencia de UDP, es un protocolo orientado a flujo.
TCP, por otro lado, permite al proceso emisor enviar datos como un flujo de bytes y permite al proceso
receptor obtener los datos como un flujo de bytes. TCP crea un entorno en el cual ambos procesos parecen
estar conectados por un "tubo" imaginario que transporta sus datos a través de Internet.

Envío y recepción de buffers Debido a que los procesos emisor y receptor pueden no escribir o leer datos
a la misma velocidad, TCP necesita buffers para almacenamiento.
Segmentos Aunque el uso de almacenes gestionada disparidades entre la velocidad del proceso productor
y consumidor, es necesario un paso más antes de poder enviar los datos.
En el nivel de transporte, TCP agrupa un número de bytes en un paquete denominado segmento.

Comunicación full dúplex


TCP ofrece servicio full duplex, con el cual los datos pueden viajar en ambas direcciones al mismo tiempo.
Cada TCP tiene entonces una almacén de recepción y emisión y los segmentos se mueven en ambas
direcciones.
Servicio orientado a conexión
Cuando un proceso A quiere enviar y recibir datos de otro proceso en el sitio B, ocurre lo siguiente:
1. Ambos TCP establecen una conexión entre ellos.
2. Se intercambian datos en ambas direcciones.
3. Se cierra la conexión.
Servicio fiable
TCP es un protocolo de transporte fiable. Usa un mecanismo de confirmación para comprobar que los datos
han llegado completamente y seguros.
Características de TCP
Sistema de numeración
Aunque puede que TCP siga la pista de los segmentos que están siendo transmitidos o recibidos, no hay un
campo para el número de segmento en la cabecera de segmento. El lugar de esto, hay dos campos denominados
número de secuencia y número de confrrmación. Estos dos campos se refieren al número de byte y no
al número de segmento.
Número de byte TCP numera todos los bytes de datos que se transmiten en una conexión.

Número de secuencia Después de numerar los bytes, TCP asigna un número de secuencia a cada segmento
que envía.
Número de confirmación Como hemos visto antes, la comunicación en TCP es full duplex; cuando se establece
una conexión, ambas partes pueden enviar y recibir datos al mismo tiempo.

Control de flujo
TCP, a diferencia de UDP, proporciona control de flujo. El receptor de los datos controla la cantidad de datos
que deben ser enviados por el emisor. Esto se hace para evitar que el receptor sea desbordado con datos. El
sistema de numeración permite a TCP usar un control de flujo orientado a byte.
Control de error
Para proporcionar un servicio fiable, TCP implementa mecanismos de control de error. Aunque el control de
error considera el segmento como la unidad de datos para la detección de error (segmentos perdidos o corruptos},
el control error es orientado a byte, como veremos más tarde.
Control de congestión
TCP, a diferencia de UDP, tiene en cuenta la congestión en la red. La cantidad de datos enviados por el emisor
no sólo es controlado por el receptor (control de flujo), sino que también se determina por el nivel de
congestión de la red.
Segmento
Antes tratar TCP con mayor detalle, vamos a ver los paquetes TCP en sí mismos. Un paquete en TCP se
denomina un segmento.
Formato
El formato de un segmento se muestra en la Figura 23.14.

□ Dirección puerto origen. Es un campo de 16 bits que define el número de puerto del programa de
aplicación en la computadora que está enviando el segmento. Tiene el mismo propósito que la dirección
puerto origen en la cabecera UDP.
□ Dirección puerto destino. Es un campo de 16 bits que define el número de puerto del programa de
aplicación en la computadora que va a recibir el segmento. Tiene el mismo objetivo que la dirección
de puerto destino en la cabecera UDP.
□ Número de secuencia. Este campo de 32 bits define el número asignado al primer byte datos que
contiene el segmento. Como dijimos antes, TCP es un protocolo de transporte de flujos. Para asegurar
la conectividad, cada byte a transmitir se numera. El número de secuencia le dice al destino qué byte
en esta secuencia lleva el primer byte del segmento. Durante el establecimiento de conexión cada
parte usa un generador de número aleatorio para crear un número de secuencia inicial (Initial Sequence Number, ISN), que
habitualmente es distinto en cada dirección.
□ Número de confirmación. Este campo de 32 bits define el número de byte que el receptor del segmento
espera recibir de la otra parte. Si el receptor del segmento ha recibido correctamente el byte número x,
define x + 1 como número de confirmación. La confirmación y los datos se pueden enviar juntos.
□ Longitud de cabecera. Este campo de cuatro bits indica el número de palabras de cuatro bytes en la
cabecera TCP. La longitud de la cabecera puede variar entre 20 y 60 bytes. Por tanto, el valor de este
campo puede estar entre 5 (5 x 4 = 20) y 15 (15 x 4 = 60).
□ Reservado. Este es un campo de seis bits reservado para uso futuro.
□ Control Este campo define 6 bits o flags de control distintos que se muestran en la Figura 23.15. Uno
o más de estos bits pueden activarse al mismo tiempo.
□ Tamaño de ventana. Este campo define el tamaño de la ventana en bytes que la otra parte debe mantener.
Observe que la longitud de este campo es de 16 bits, lo que significa que el tamaño máximo de
la ventana es 65.535 bytes. Este valor se define normalmente como ventana de recepción (rwnd) y es
determinado por el receptor. El emisor debe obedecer la recomendación del receptor en este caso.
□ Suma de comprobación. Este campo de 16.000 contiene la suma de comprobación. Se calcula teniendo
en cuenta todos los elementos de la cabecera. Sin embargo, mientras la inclusión de la suma de
comprobación en la cabecera UDP es opcional, es obligatoria en TCP. En TCP se añade la misma
pseudocabecera y sirve para los mismos objetivos: Para la pseudocabecera TCP, el valor del campo de
protocolo es 6.
□ Puntero urgente. Este campo de 16 bits, que sólo es válido cuando el campo urgente está activo, se
usa cuando segmento contiene datos urgentes. Puerto define el número que se debe añadir al número
de secuencia para obtener el número del último byte urgente en la sección de datos del segmento. Lo
veremos posteriormente en este capítulo.
□ Opciones. Puede haber hasta 40 bytes de información opcional en la cabecera TCP. No vamos a ver
estas opciones; por favor consulte la lista de referencias para tener más información.

Una conexión TCP


TCP es orientado a conexión. Un protocolo de transporte orientado a conexión establece un camino virtual
entre el origen y el destino.
La cuestión es que la conexión de TCP es virtual, no fisica. TCP opera a alto nivel.
Establecimiento de conexión
TCP transmite los datos en modo full duplex. Cuando dos o más máquinas con TCP se conectan son capaces
de enviarse segmentos entre sí simultáneamente.
Negociación en tres pasos El establecimiento de una conexión en TCP se denomina negociación en tres
pasos (three-way handshaking).
El proceso comienza en el servidor. El programa servidor le dice a su TCP que está listo para aceptar una
conexión. A esto se llama una apertura pasiva.
El programa cliente emite una petición para una apertura activa.
Sin embargo, mostramos solamente los pocos campos necesarios para comprender cada fase: número de secuencia, número de
confirmación, campos de control (sólo aquellos que están activos) y el tamaño de ventana, si no está vacía. Los tres pasos en esta
fase son los siguientes:
1. El cliente envía el primer segmento, con segmento SYN, en el cual sólo el campo SYN está activo.
Este segmento es para sincronizar los números de secuencia. Consume un número de secuencia. Cuando
comienza la transferencia de datos, el número de secuencia se incrementa en uno. Se puede decir
que el segmento SYN no lleva datos reales, pero se puede pensar que lleva 1 byte imaginario.

2. El servidor envía un segundo segmento, un segmento SYN + ACK, con 2 bits de flags activos: SYN
y ACK. Este segmento tiene un doble objetivo. Es un segmento SYN para comunicación en la dirección
contraria y sirve para confirmar el segmento SYN anterior. Consume el número de secuencia.

3. El cliente envía el tercer segmento. Es sólo un segmento ACK. Confirma la recepción del segundo
segmento con el flag ACK y el campo del número de confirmación. Observe que el número de secuencia
de este segmento es el mismo que el del segmento SYN; el segmento ACK no consume ningún
número de secuencia.

Apertura simultánea Puede ocurrir una situación rara, denominada apertura simultánea, cuando ambos
procesos emiten una apertura activa. En este caso, ambos TCP se envían un segmento SYN+ACK entre sí y
se establece una única conexión entre ellos.
Ataque por SYN masivo (SYN flooging attack) El procedimiento de establecimiento de conexión en TCP
es susceptible de sufrir un ataque de seguridad peligroso denominado ataque por SYN masivo.
Este ataque por SYN masivo pertenece a un tipo de ataque de seguridad denominado ataque por denegación de servicio, en el
cual un atacante monopoliza un sistema con tantas peticiones de servicio que el sistema se colapsa y niega servicio a cualquier
petición.
Transferencia de datos
Después del establecimiento de la conexión, se puede efectuar transmisión de datos bidireccional. Tanto el
cliente como el servidor pueden enviar datos y confirmaciones.

Entrega inmediata de datos (pushin~) Y a hemos visto que el TCP emisor usa un almacéd para guardar el
flujo de datos que vienen desde el programa de aplicación emisor. El TCP receptor también almacena los datos cuando llegan y se
los entrega al programa de la aplicación cuando el programa de aplicación está listo o cuando es conveniente para el TCP receptor.
Datos urgentes TCP es un protocolo orientado a flujo. Esto significa que los datos del programa de aplicación
son presentados a TCP como flujo de caracteres. Cada byte de datos tiene una posición en el flujo. Sin
embargo, en algunas ocasiones, un programa de aplicación necesita enviar bytes de datos urgentes. Esto
significa que el programa de aplicación emisor quiere que una pieza de datos se lea fuera de orden por el
programa de aplicación receptor.
Fin de la conexión
Cualquiera de las dos partes involucradas en un intercambio de datos (cliente o servidor) puede cerrar la conexión,
aunque normalmente suele ser el cliente.
Negociación en tres pasos La mayoría de las implementaciones actuales permiten la negociación en tres
pasos para cerrar una conexión, como se muestra la Figura 23.18.

1. En una situación normal, el TCP cliente después de recibir un comando de cierre desde el proceso
cliente, envía el primer segmento, un segmento FIN con el flag FIN activo. Observe que un segmento
FIN puede incluir la última porción de datos enviados por el cliente o puede ser únicamente 1lil segmento
de control, como se muestra la Figura 23.18. Si sólo es un segmento de control, consume sólo
un número de secuencia.

2. El servidor TCP, después de recibir el segmento FIN, informa a su proceso de la situación y envía el
segundo segmento, un segmento FIN + ACK, para confirmar la recepción del segmento FIN desde el
cliente y al mismo tiempo para anunciar el cierre de la conexión en la dirección contraria. Este segmento
también puede contener la última porción de datos del servidor. Si no lleva datos, consume sólo
un número de secuencia.

3. El cliente TCP envía el último segmento, un segmento ACK, para confirmar la recepción del segmento
FIN desde el servidor TCP. Este segmento contiene el número de confirmación, que es uno más el
número de secuencia recibido en el segmento FIN desde el servidor. Este segmento no puede llevar
datos y no consume número de secuencia.
Semicierre En TCP, un extremo puede dejar de enviar datos mientras sigue recibiendo. A esto se le denomina
un semicierre. Aunque cualquier extremo puede enviar un semicierre, normalmente lo inicia el cliente.
Control de flujo
TCP acusa una ventana deslizante para gestionar el control de flujo, como la que vimos en el Capítulo 11. Sin
embargo, el protocolo de ventana deslizante usado por TCP está entre la ventana deslizante compuesta atrás
N y la ventana deslizante con repetición selectiva. El protocolo de ventana deslizante de TCP se parece al
protocolo de compuesta atrás N porque no usa NAK; se parece al protocolo con repetición selectiva porque
el receptor mantiene los segmentos fuera de orden hasta que llegan los que se han perdido.

La ventana puede estar abierta, cerrada o reducida. Estas tres actividades, como veremos, están bajo el
control del receptor (y dependen de la congestión de la red), no del emisor.

El tamaño de la ventana en un lado es determinado por el menor de estos dos valores: ventana de recepción
(rwnd) o ventana de congestión (cwnd).

Control de error
TCP es un protocolo de transporte fiable. Esto significa que un programa de aplicación que envíe un flujo de
datos a TCP confia en que TCP entregará todo el flujo al programa de aplicación en el otro extremo en orden,
sin error y sin ninguna pérdida o duplicación de una parte.

Sumas de comprobación
Cada segmento incluye un campo de suma de comprobación que sirve para comprobar si el segmento está
corrupto. TCP usa un campo de comprobación de 16 bits que es obligatorio en todos los segmentos.
Confirmación
TCP usa confirmaciones para indicar la recepción de segmentos de datos. Los segmentos de control que no
llevan datos pero consumen un número de secuencia también se confirman. Los segmentos ACK nunca se
confirman.

Retransmisión
El corazón del mecanismo de control de error es la retransmisión de segmentos. Cuando un segmento está
corrompido, se pierde o se retrasa, se retransmite.

Retransmisión después de un plazo de retransmisión (RTO) Una implementación reciente de TCP mantiene
un temporizador de plazo de retransmisión (RTO, retransmision time out) para todos los segmentos pendientes (enviados pero no
confirmados).
El valor de RTO es dinámico en TCP y se actualiza en base al tiempo de idea vuelta (RTT, round-trip time) de los segmentos.
Retransmisión después de tres segmentos de ACK duplicados La regla anterior sobre la retransmisión
de un segmento es suficiente si el valor de RTO no es demasiado grande.
Para hacer frente a esta situación, la mayoría de las implementaciones actuales usa la regla
de los tres ACK duplicados y retransmite el segmento perdido inmediatamente. Esta característica se
denomina retransmisión rápida y se examina en breve en un ejemplo.
Segmentos fuera de orden
Cuando un segmento se retrasa, se pierde o es descartado, los segmentos que siguen a éste llegan fuera de orden
Originalmente, UDP se diseñó para descartar todos los segmentos fuera de orden, lo que daba como resultado
la retransmisión de los segmentos perdidos y de los segmentos siguientes.

Algunos escenarios
En estos escenarios, el segmento se muestra como un rectángulo. Si el segmento lleva datos, se muestra
el rango de los números de bytes y el valor del campo de confirmación. Si sólo lleva una confirmación, se
muestra sólo el número de confirmación en una caja más pequeña.
Funcionamiento normal El primer escenario muestra una transferencia de datos bidireccional entre dos
sistemas, como se muestra en la Figura 23.22.
Segmento perdido En este escenario se muestra lo que ocurre cuando el segmento se pierde o se corrompe.
Un segmento perdido o corrompido se trata de la misma forma por el receptor.

Retransmisión rápida Con este escenario se quiere mostrar la idea de retransmisión rápida. El escenario es
igual que el segundo, excepto que RTO tiene un valor más alto (véase la Figura 23.24).
Control de congestión
El control de congestión de TCP se trata en el Capítulo 24.
23.4 PROTOCOLO DE CONTROL DE TRANSMISIÓN DE FLUJO (SCTP)
□ UDP es un protocolo orientado a mensaje. Un proceso entrega un mensaje a UDP, que es encapsulado
en un datagrama de usuario y enviado por la red. UDP conserva las fronteras del mensaje; cada
mensaje es independiente de otros mensajes. Sin embargo, UDP no es fiable; el emisor no puede saber el destino de los mensajes
enviados. Un mensaje puede perderse, duplicarse o ser recibido fuera de orden. UDP también carece de algunas otras
características, como el control de congestión y el control de flujo, necesarias en un protocolo de nivel de transporte amigable.
□ TCP es un protocolo orientado a byte. Recibe un mensaje o mensajes de un proceso, lo almacena como
flujo de bytes y lo envía en segmentos. No se conservan las fronteras del mensaje. Sin embargo, TCP
es un protocolo fiable. Los segmentos duplicados que detectan los segmentos perdidos se reenvían y
los bytes se entregan al proceso destino en orden. TCP tiene también un control de congestión y mecanismos
de control de flujo.
O STCP combina las mejores características de UDP y TCP. STCP es un protocolo fiable orientado a
mensaje. Conserva las fronteras del mensaje y al mismo tiempo detecta los datos perdidos, datos duplicados
y datos fuera de orden. También incorpora control de congestión y mecanismos de control de
flujo. Posteriormente veremos que STCP tiene otras características innovadoras no disponibles en UDP
o TCP.

Servicios SCTP
Antes de tratar el funcionamiento de SCTP, explicaremos los servicios ofrecidos por SCTP a los procesos de
nivel de aplicación.
Comunicación proceso a proceso
SCTP usa todos los puertos bien conocidos del espacio de TCP. La Tabla 23.3 muestra algunos números de
puerto extra usados por SCTP.

Múltiples flujos
Hemos visto en presentaciones anteriores que TCP es un protocolo orientado flujo. Cada conexión entre un
cliente TCP y un servidor TCP involucra a un único flujo.
SCTP permite que haya servicio multiflujo en cada conexión, lo que se denomina una asociación en terminología SCTP.

Múltiples direcciones IP (muldhoming)


Por el contrario, una asociación SCTP proporciona servicio multihoming. La computadora emisora
y la receptora pueden definir múltiples direcciones 1P en cada extremo de una asociación. Con esta aproximación
tolerante a fallos cuando una ruta falla, otro interfaz se puede utilizar para trasmitir los datos sin interrupción.

Comunicación full duplex


Al igual que TCP, SCTP ofrece servicio full duplex con transmisión de datos en ambas direcciones simultáneamente. Cada SCTP
tiene una base de emisión y de recepción y los paquetes se envían en ambas direcciones.
Servicio orientado a conexión
Al igual que TCP, SCTP es un protocolo orientado a conexión. Sin embargo, en SCTP una conexión se denomina una asociación.
Cuando un proceso en el sitio A quiere enviar y recibir datos de otro proceso en el
sitio B, ocurre lo siguiente:
1. Los dos SCTP establecen una asociación entre sí.
2. Los datos se intercambian en ambas direcciones.
3. La asociación termina.
Servicio fiable
SCTP, como TCP, es protocolo de transporte fiable. Usa mecanismos de confirmación para comprobar la
llegada correcta de los datos. Esta característica se estudiará más tarde en la sección de control de error.
Características de SCTP
A continuación vamos a mostrar algunas características generales de SCTP y a compararlas con las de TCP.
Número de secuencia de transmisión La unidad de datos en TCP es un byte. La transferencia de datos en
TCP es controlada numerando los bytes con un número de secuencia. Por el contrario, la unidad de datos en
SCTP es un subpaquete de datos, que puede tener o no una relación con el mensaje que llega del proceso
debido a la fragmentación ( que veremos más tarde). La transferencia de datos en SCTP se controla numerando los paquetes de
datos con un número de secuencia de transmisión (TSN). Los TSN son de 32 bits de longitud y se inicializan entre 0 y 232- 1.
Cada porción debe llevar el correspondiente TSN en su cabecera.
Número de secuencia de flujo En TCP sólo hay un flujo por conexión. En SCTP puede haber varios
flujos por asociación. Cada flujo de SCTP se identifica mediante un identificador de flujo (stream identifier,SI). El SI es un
número de 16 bits que comienza en 0.
Paquetes En TCP, un segmento lleva información de datos y de control. El diseño de SCTP es
totalmente distinto: los datos se transportan como subpaquetes de datos y la información de control en subpaquetes de control.
Varios subpaquetes de datos y de control se pueden agrupar juntos en un paquete.
La cabecera general del paquete define los extremos de cada a~ociación a la cual pertenece el paquete,
garantiza que el paquete pertenece a una asociación en particular y mantiene la integridad de los contenidos
del paquete incluyendo la cabecera. Con respecto a TCP aparece un campo nuevo, denominado etiqueta de verificación, que es el
número que asocia un paquete con su asociación.
Los datos y la información de control se agrupan en subpaquetes. La descripción detallada de su formato
está fuera del ámbito de este libro. Mire [For06] para obtener más información.

Número de confirmación Los números de confirmación de TCP son orientados a byte y se refieren a los
números de secuencia. Los números de confirmaciones de SCTP son orientados a subpaquetes y se refieren
al TSN. En SCTP, la información de control es transportada por subpaquetes de control, que no necesitan un TSN.
Control de flujo Al igual que TCP, SCTP implementa control de flujo para evitar el desbordamiento del
receptor. Lo veremos más adelante.
Control de error Al igual que TCP, SCTP proporciona control de error para proporcionar fiabilidad. Se
usan los números TSN y las confirmaciones para control de error. Lo veremos más adelante.
Control de congestión Al igual que TCP, SCTP proporciona control de congestión para determinar cuántos
subpaquetes de datos se pueden inyectar en la red.
Una asociación SCTP
Al igual que TCP, SCTP es un protocolo orientado a conexión. Sin embargo, una conexión de SCTP se denomina
una asociación para enfatizar el multihoming.
Una asociación SCTP pasa por tres fases: establecimiento, transferencia de datos y terminación. A continuación
se escriben estas fases más en detalle.
Establecimiento de asociación
El establecimiento de una asociación en SCTP requiere una negociación en cuatro pasos.
Los pasos, en una situación normal, son los siguientes:
1. El cliente envía el primer paquete, que contiene un subpaquete INIT.
2. El servidor envía el segundo paquete, que contiene un subpaquete INIT ACK.
3. El cliente envía el tercer paquete, que incluye un subpaquete COOKIE ECHO. Este es un subpaquete
muy sencillo que hace eco, sin cambio de la cookie enviada por el servidor. SCTP permite la inclusión
de subpaquetes de datos en este paquete.
4. El servidor envía el cuarto paquete, que incluye un subpaquete COOKIE ACK, que confirma la del
subpaquete COOKIE ECHO. SCTP permite la inclusión de subpaquetes de datos en este paquete.

Cookie En la sección anterior vimos un ataque masivo por SYN. Con TCP, un atacante malicioso puede
inundar un servidor TCP con un gran número de segmentos SYN falsos usando distintas direcciones IP suplantadas.
Los diseñadores de SCTP tienen una estrategia para prevenir este tipo de ataque: posponer la asignación
de recursos hasta la recepción del tercer paquete, cuando se verifica la dirección IP de emisor.
Hay dos situaciones potenciales:
1. Si el emisor del primer paquete es un atacante, el servidor nunca recibe el tercer paquete; la cookie se
pierde y no se asignan recursos. El único esfuerzo es el de crear la cookie.
2. Si el emisor del primer paquete es un cliente honesto que quiere hacer una conexión, recibe el segundo
paquete con la cookie y envía un paquete (el tercero) con la cookie sin cambios. El servidor recibe el
tercer paquete, ve la cookie y asigna recursos.
Transferencia de datos
El objetivo de una asociación es transferir datos entre dos extremos. Después de que se ha establecido la
asociación, se puede realizar transmisión bidireccional de datos entre el cliente y el servidor. Como TCP,
SCTP soporta piggybacking.
TCP recibe mensajes de un proceso como un flujo de bytes sin que reconozca fronteras entre ellos.
Por el contrario, SCTP reconoce y mantiene fronteras.
Transferencia de datos multihoming El multihoming permite a los extremos de una conexión definir más
de una dirección 1P para cada extremo. Sin embargo, sólo una de estas direcciones se puede definir como
dirección primaria; el resto son direcciones alternativas.
Entrega multiflujo Una característica interesante de SCTP es la distinción entre transferencia de datos y la
entrega de datos. SCTP usa números TSN para gestionar la transferencia de datos, moviendo subpaquetes de datos entre origen y
destino.
Fragmentación Otro aspecto en la transferencia de datos es la fragmentación. Aunque SCTP comparte este
término con IP, la fragmentación en 1P y en SCTP pertenece a niveles distintos: el primero al nivel de red, el
último al nivel de transporte.
SCTP mantiene las fronteras del mensaje de proceso a proceso cuando crea un subpaquete DATA con
un mensaje si el tamaño del mensaje (cuando se encapsula en un datagrama IP) no excede el tamaño de la
MTU de la ruta.
Terminación de asociación
En SCTP, como en TCP, cualquiera de las dos partes involucradas en un intercambio de datos (cliente o
servidor) puede cerrar la conexión. Sin embargo, a diferencia de TCP, SCTP no permite una situación de
semicierre.

Control de flujo
El control de flujo en SCTP es similar al de TCP. En TCP, es necesario tener en cuenta una sola unidad de
datos, el byte. En SCTP, es necesario gestionar dos unidades de datos, el byte y el subpaquete. Los valores de rwnd y de cwnd se
expresan en bytes; los valores de TSN y las confirmaciones se expresan en subpaquetes.
Receptor
El receptor tiene un almacén (cola) y tres variables. La primera variable mantiene el último TSN recibido, cumTSN. La segunda
variable mantiene el tamaño de almacén disponible, winsize. La tercera variable guarda la última confirmación acumulada,
lastACK.

1. Cuando el receptor recibe un subpaquete de datos, lo almacena al final del almacén (cola) y resta el
tamaño del subpaquete de winsize. El número TSN del subpaquete se almacena en la variable
cumTSN.
2. Cuando el proceso lee un subpaquete, lo quita de la cola y añade el tamaño del subpaquete eliminado
de winSize (reciclado).
3. Cuando el receptor decide enviar un SACK, comprueba el valor de lastACK; si es menos que cumTSN,
envía un SACK con un número acumulado de TSN igual a cumTSN. También incluye el valor de
winSize como tamaño de la ventana que anuncia.
Emisor
El emisor tiene un almacén (cola) y tres variables: urTSN, rwnd e inTransit, como se muestra en la Figura 23.32. Se asume que
cada subpaquete tiene 100 bytes de largo.
La primera variable, curTSN, indica el siguiente subpaquete a enviar. La segunda variable, rwnd, almacena el último valor
publicado por el receptor (en bytes). La tercera variable, inTransit, almacena el número de bytes en tránsito, bytes enviados pero no
confirmados.

1. Un subpaquete apuntado por curTSN puede ser enviado si el tamaño de los datos es menor o igual que
rwnd - inTransit. Después de enviar el subpaquete, el valor de curTSN se incrementa en 1 y apunta al
siguiente subpaquete a enviar. El valor de inTransit se incrementa con el tamaño de los datos del
subpaquete transmitido.
2. Cuando se recibe un SACK, los subpaquetes con TSN menor o igual al TSN acumulado en el SACK
son eliminados de la cola y descartados. El emisor no se preocupa de ellos más. El valor de inTransit
se reduce con el tamaño total de los subpaquetes descartados. El valor de rwnd se actualiza con el
valor de la ventana publicado en el SACK.
Control de error
Al igual que TCP, SCTP es un protocolo de transporte fiable. Usa los SACK para informar del estado de lo
recibido al emisor.
Receptor
En nuestro diseño, el receptor almacena todos los subpaquetes que han llegado en su cola, incluyendo aquéllos
fuera de orden. Sin embargo, deja espacios para los subpaquetes perdidos. Descarta los mensajes duplicados, pero le sigue la pista
para informar al emisor.
Emisor
En el lado del emisor, nuestro diseño necesita dos almacenes (colas): una cola de emisión y una de retransmisión.
También se usan tres variables: rwnd, inTransit y curTSN como se ha descrito en la sección anterior.

Generación de subpaquetes SACK


Otro aspecto del control de error es la generación de subpaquetes SACK. Las reglas para generar subpaquetes
SACK en SCTP son similares a las reglas usadas para confirmar con el flag ACK de TCP.
23.7 RESUMEN
□ En el paradigma cliente/servidor, un programa de aplicación en la computadora local, denominado
cliente, necesita servicios de otro programa de aplicación en una computadora remota, denominado
servidor.
□ Cada programa de aplicación tiene un número de puerto que le distingue de otros programas que se
ejecutan al mismo tiempo en la misma máquina.
□ El programa cliente recibe un número de puerto aleatorio, denominado número de puerto efimero; el
programa servidor recibe un número de puerto universal denominado número de puerto bien conocido.
□ El ICANN ha especificado los rangos para los distintos tipos de números de puerto.
□ La combinación de la dirección IP y el número de puerto, denominada dirección de socket, define un
proceso y una computadora.
□ UDP es un protocolo de transporte no orientado a conexión y no fiable sin mecanismos de control de
flujo o error excepto la suma de comprobación para la detección de error.
□ El paquete UDP se denomina datagrama de usuario. Un datagrama de usuario se encapsula en el campo
de datos de un datagrama IP.
□ El protocolo de control de transmisión (TCP) es uno de los protocolos de transporte en la suite TCP/IP.
□ TCP proporciona servicio proceso a proceso, full duplex y orientado a conexión.
□ La unidad de transferencia de datos entre dos dispositivos usando TCP se denomina un segmento;
tiene entre 20 y 60 bytes de cabecera, seguidos por los datos de los programas de aplicación.
□ Una conexión TCP tiene normalmente tres fases: establecimiento de la conexión, transferencia de
datos y cierre de la conexión.
□ El establecimiento de la conexión necesita una negociación en tres pasos; el cierre requiere una negociación
en tres o cuatro pasos.
□ TCP usa control de flujo, implementado mediante un mecanismo de ventana deslizante, para evitar
desbordar a un servidor con datos.
□ El tamaño de ventana de TCP quedó determinado por el tamaño de ventana publicado por el receptor
(rwnd) o el tamaño de ventana de congestión (cwnd), lo que sea más pequeño. La ventana puede ser
abierta o cerrada por el receptor, pero no reducida.
□ Los bytes de datos que se transfieren cada conexión son numerados por TCP. La numeración empieza
con un número generado aleatoriamente.
□ TCP usa control de error para proporcionar un servicio fiable. El control de error es gestionado mediante
la suma de comprobación, la confirmación y los temporizadores. Los segmentos corrompidos o
perdidos se retransmiten y los segmentos duplicados se descartan. Los datos pueden llegar fuera de
orden y se almacenan temporalmente en el TCP receptor, pero TCP garantiza que ningún segmento
fuera de orden se entrega proceso.
□ En las implementaciones modernas, se produce una retransmisión cuando el temporizador de retransmisión
expira o cuando llegan tres segmentos ACK duplicados.
□ SCTP es un protocolo fiable orientado a mensaje que combina las mejores características de UDP y
TCP.
□ SCTP proporciona servicios adicionales que no existen en TCP o UDP, como servicios multiflujo y
multihoming.
□ SCTP es un protocolo orientado a conexión. Una conexión SCTP se denomina una asociación.
□ SCTP usa el término paquete para definir una unidad de transporte.
□ En SCTP, la información de control y los datos se transportan en subpaquetes separados.
□ Un paquete SCTP puede contener subpaquetes de control y de datos, con los subpaquetes de control
siempre antes de los datos.
□ En SCTP, cada subpaquete de datos se numera usando un número de secuencia de transmisión
(TSN).
□ Para distinguir entre flujos distintos, SCTP usa un identificador de secuencia (SI).
□ Para distinguir entre distintos subpaquetes que pertenecen al mismo flujo, SCTP usa un numero de secuencia de flujo (SSN).
□ Los subpaquetes de datos se identifican mediante tres identificadores: TSN, SI y SSN. TSN es un
número acumulativo reconocido por toda la asociación. SSN empieza en cero para cada flujo.
□ Los números de confirmación de SCTP se usan solos para confirmar subpaquetes de datos; los subpaquetes de control se
confirman, si es necesario, con otro subpaquete de control.
□ Una asociación SCTP se establece normalmente usando cuatro paquetes (negociación en cuatro pasos).
Una asociación se termina normalmente usando tres paquetes (negociación en tres pasos).
□ Una asociación SCTP usa una cookie para evitar ataques masivos por desbordamiento y una etiqueta
de verificación para evitar ataques por inserción.
□ SCTP proporciona control de flujo, control de error y control de congestión.
□ La confirmación SACK de SCTP incluye el TSN acumulado, el TSN del último subpaquete de datos
recibido en orden y de los TSNs selectivos que han sido recibidos.

También podría gustarte