¿Cuál es la necesidad de control de errores en la capa de enlace de datos cuando la capa de transporte proporciona control de errores? ¿Cuál es la diferencia entre los dos controles de error?

¡Felicitaciones, has detectado un defecto arquitectónico! Tiene toda la razón, la detección y corrección de errores se realiza de forma redundante.

Esto se debe a que la creación de redes es un acuerdo entre las partes, que en diferentes niveles, tenemos diferentes comités de estándares, y porque hay políticas y rivalidades entre esos comités que impiden resultados lógicos y beneficiosos.

El control de error a nivel de enlace se realiza paquete por paquete en cada enlace. Para Ethernet, este es un CRC-32 en toda la trama. Esto se implementa en hardware y es básicamente un costo hundido trivial.

La suma de control de transporte está dentro de TCP y opcionalmente UDP, y cubre el pseudo-encabezado TCP, más el segmento de datos adjunto. Es una suma de control mucho más débil, pero es crucialmente una suma de control de extremo a extremo.

La propiedad de extremo a extremo es vital porque hay muchas funciones que tocan el paquete entre el origen y el destino, y solo algunas de ellas están cubiertas por la suma de comprobación de nivel de enlace. Todos los enrutadores toman el paquete, realizan modificaciones y luego lo transmiten nuevamente. Si bien los buenos enrutadores implementan la detección y corrección de errores internamente, esas implementaciones podrían fácilmente fallar y podrían introducir trivialmente la corrupción de paquetes. La suma de comprobación de extremo a extremo es una protección contra esto.

En un mundo ideal, si tuviéramos la posibilidad de reiniciar Internet, tendríamos una suma de comprobación de la capa de transporte mucho más fuerte, como un CRC-32, y no tendríamos que pagar el impuesto de suma de comprobación de nivel de enlace en todas partes.

El control de errores en la capa de enlace de datos funciona a nivel de paquete o de flujo, mientras que el control de errores en la capa de transporte funciona a nivel de mensaje . La capa de enlace de datos no tiene que ver con el orden de los paquetes, mientras que la capa de transporte sí.

La motivación para esto es que se pueden diseñar diferentes redes para trabajar con diferentes longitudes de paquetes. Entonces, cuando un paquete va de una red a otra, puede ser fragmentado por el enrutador de la puerta de enlace. Estos paquetes fragmentados deben volver a ensamblarse en la máquina host.

Ahora es posible hacer este reensamblaje en la capa de red, pero esto causa muchos problemas , como el almacenamiento en búfer, por ejemplo. A continuación, esto requeriría que todos los fragmentos de un paquete pasen por la misma puerta de enlace, algo que comprometería la naturaleza de conmutación de paquetes de la red. Por último, la fragmentación de paquetes puede ocurrir incluso en la última puerta de enlace. Esto obliga nuevamente a la máquina host a realizar el reensamblaje. Por lo tanto, en una red de conmutación de paquetes, la máquina host inevitablemente enfrentaría la tarea de corrección de errores, razón por la cual la capa de transporte la maneja.

Proporcionar control de errores en la capa de enlace es una optimización, nunca un requisito.

La capa de transporte siempre puede enviar un mensaje y esperar a que su homólogo lo reconozca en la máquina remota. Si el reconocimiento no se recibe antes de que expire el temporizador, el remitente puede enviar el mensaje nuevamente.

El problema con esta estrategia es que puede ser ineficiente como se describe a continuación:

La capa de red tiene una restricción en la cantidad de tamaño de paquete. Por lo tanto, si el mensaje tiene un tamaño mayor que el tamaño restringido, debe dividirse en varios paquetes. Pero incluso esto no es un problema importante ya que el tamaño del mensaje es a menudo menor que el tamaño restringido.

El verdadero problema existe en la capa de enlace de datos.

Los paquetes tienen un tamaño máximo de 65535 bytes. Mientras que el tamaño máximo de cuadros (tome el ejemplo de ethernet) es de 1500 bytes. La capa de red no conoce estos parámetros. Podría enviar un paquete grande que se divide en, por ejemplo, 10 cuadros, de los cuales 2 se pierden en promedio. El paquete tardaría mucho tiempo en pasar. En cambio, si las tramas individuales son reconocidas y retransmitidas, entonces los errores pueden corregirse más directamente y más rápidamente. En canales confiables, como la fibra, la sobrecarga de un protocolo de enlace de datos pesado puede ser innecesaria, pero en canales inalámbricos (inherentemente poco confiables) vale la pena el costo.

Un ejemplo lo dejaría muy claro:

Deje que el tamaño del paquete sea 14600 bytes.

La capa de enlace de datos dividiría el paquete en 14600/1500 = 10 cuadros.

Supongamos que el tiempo necesario para llegar desde A (fuente) a B (destino) es de 1 segundo. Utilizaremos un protocolo simple de parada y espera. El temporizador de retransmisión se establece en 3 segundos para la capa de enlace.

Tiempo total necesario para los 10 cuadros y reconocimiento = (1 + 1) * 10 = 20 segundos

Ahora supongamos que se pierde el primer cuadro enviado. Si el manejo de errores no se realiza en la capa de enlace, entonces el error se puede encontrar solo después de que la capa de transporte de la máquina receptora verifique el mensaje. El mensaje completo debe enviarse nuevamente.

Cosas que perdemos con esta estrategia:

1) Pérdida de tiempo: los 20 segundos utilizados para el mensaje se perdieron ya que el mensaje debe enviarse nuevamente

2) Pérdida de ancho de banda: todos los datos deben enviarse nuevamente.

Ahora supongamos que el manejo de errores se realiza en la capa de enlace de datos. Luego, tan pronto como se pierde el primer cuadro, la fuente lo retransmite.

Por lo tanto, el tiempo utilizado después del cual la fuente detecta el error = tiempo de retransmisión = 3 segundos.

Y pérdida de ancho de banda = tamaño de un cuadro.

Por lo tanto, podemos ver que la segunda estrategia es mucho mejor tanto en términos de tiempo como de utilización de ancho de banda.

Tony Li ya ha escrito la respuesta correcta. El hecho de que haya dos mecanismos diferentes de detección / corrección de errores se debe a que operan en diferentes niveles del modelo, por lo que cada grupo a cargo implementa sus propias técnicas para ayudarse a sí mismos y a las capas de adjetivos para entregar los datos correctamente.

El control de errores en la capa de enlace de datos busca errores en cada salto en la ruta desde el origen hasta el destino. Es necesario hacerlo para descartar cualquier paquete dañado de forma anticipada, evitando la necesidad de enrutar un paquete dañado hasta el destino.

El control de errores en la capa de transporte solo ocurre en el host final.