¿Cómo distinguen los cables de Internet entre no enviar datos y enviar 0 bits?

Ha descubierto el antiguo problema que los ingenieros de telecomunicaciones llaman recuperación o sincronización del reloj.

En Ye Olde Days, el reloj se envió junto con la señal, y la señal se muestreó en tempo con el reloj (comunicación serial sincrónica), sin embargo, esto requirió un cable adicional para transportar una señal de reloj separada.

Hay muchas formas de intentar recuperar el reloj de una señal. Una de las más simples es la comunicación serie asíncrona, donde un bit de inicio activa un bucle de fase bloqueada y muestrea los siguientes 7 u 8 bits a niveles de MARCA o ESPACIO en función de la velocidad nominal configurada del enlace.

En las redes de telecomunicaciones, los datos pueden enviarse con codificación bipolar, donde los ceros están representados por ningún cambio y los marcados por pulsos de voltaje positivo y negativo alternativos. Si obtiene demasiados ceros seguidos, puede perder la cuenta de los ceros. Una solución es forzar periódicamente una “transición” en un proceso llamado “bitstuffing”. Esto reduce el ancho de banda efectivo. En cambio, un código de línea como B8ZS obliga a un pulso no alternado a marcar una larga cadena de ceros.

Hay muchos códigos de línea para permitir una recuperación y detección de reloj confiables, incluso cuando hay una larga cadena de ceros. Los procesos varían ampliamente con diferentes pros y contras.

Entonces, ¿cómo saber si un enlace está “inactivo” o “enviando ceros”? Y el enlace “inactivo” puede ser “inactivo” (sin señal) o tener un flujo constante de tramas “vacías” para mantener el hardware de reloj en el otro extremo en sincronía. Los sistemas que tienen un flujo constante utilizan algún tipo de patrón “bien conocido” para realizar una sincronización inicial, y luego se basan en la codificación de línea para mantener la sincronización. Los sistemas que comienzan desde un estado inactivo tendrán algún tipo de señal de “activación”, como el “bit de inicio” RS-232 o el “preámbulo” de Ethernet antes de que lleguen los datos.

Por cierto, la idea de que una señal de fibra óptica está “encendida” o “apagada” es una noción muy desactualizada. Existen algunos esquemas de modulación multinivel y multinivel muy sofisticados con codificación de línea sofisticada auxiliar que puede usar fase y nivel, e incluso modulación enrejada.

Todo es matemática, y es bastante dulce.

Hay demasiados tipos de modulaciones digitales, no es posible cubrirlas todas en una respuesta breve.

Por lo general, los datos se envían mediante paquetes síncronos (con tiempos más o menos exactos). El protocolo puede decir que todos los ceros (generalmente si la diferencia de voltaje entre dos líneas está por debajo de un umbral) están expresando un estado inactivo del carril de transmisión, por lo que su paquete de datos aún no se ha iniciado. Para garantizar que haya un marcador para el comienzo de un paquete , generalmente se pone un bit de inicio o incluso más bits (principalmente una secuencia de bits más o menos única, por lo que es fácil reconocer su firma / estructura en un bit- corriente). Este (s) bit (s) de inicio va seguido de un encabezado (descripción de un paquete, es decir, cuántos bytes, el tipo de paquete, una dirección IP de destino …), luego los datos mismos y, a veces, una suma de verificación (esto también puede estar en el encabezado, pero requiere que se procese todo el paquete antes de enviarlo).

Por lo general, ya sea:

  • el maestro (generalmente la fuente de datos) proporciona un reloj independiente junto con la (s) línea (s) de datos, por lo que uno puede reconocer en qué momento exacto la línea de datos debe ser más confiable, o
  • la fuente de datos (remitente) “codifica” el reloj dentro del flujo de datos (se utilizan varias técnicas, especialmente en interfaces codificadas de múltiples niveles y múltiples carriles), o
  • el emisor y el receptor dependen de alguna referencia común (por ejemplo, una referencia de reloj de cristal o incluso el reloj digital de alta frecuencia sin procesar que generalmente se basa en una referencia de cuarzo nuevamente).

En el primer y segundo caso, el reloj está presente y usted recibe ceros, pero no hay inicio del paquete. En el tercer caso (usado en UART, USB, varios OFDM …), la referencia de reloj local se usa en ambos lados (emisor y receptor), pero uno puede sintonizar aún más las diferencias menores entre las referencias de reloj (generalmente conocidas como recuperación de reloj, no es necesario ser usado siempre). Sin embargo, a veces es difícil captar con precisión el momento exacto en que se inicia un paquete; es importante ya que afecta seriamente el muestreo de datos confiable del resto del paquete.

Tenga en cuenta que en el caso de protocolos de alta velocidad como USB, las referencias de reloj locales deben estar sintonizadas, es decir, sincronizadas de vez en cuando (el mecanismo de recuperación de reloj, generalmente la referencia en el receptor ajusta ligeramente su configuración). Si hay demasiados 0s o 1s secuenciales, el retardo / retraso / jitter de reloj real no puede extraerse del flujo de datos, y en lugar de recibir el enésimo bit, el receptor puede recibir (n + 1 ) enésimo bit. Para evitar esto, si unos 5 bits secuenciales son iguales, entonces se envía un bit “ficticio” invertido solo para ayudar al receptor a resincronizar su referencia de reloj.

Sin embargo, tenga en cuenta que, excepto en los protocolos más simples, lo que envía a través de una línea (datos sin procesar) se codifica y modula aún más), por lo general, una secuencia de bits en el paquete se extiende / mezcla con bits redundantes adicionales (por ejemplo, vea ECC), por lo que uno puede reconocer un paquete incorrecto y eventualmente corregirlo. Esto normalmente genera una secuencia de 0s y 1s “aleatorios” a partir de sus datos 0 sin procesar.

Sin embargo, incluso si un paquete defectuoso es “recibido” en el receptor, puede ser rechazado por demasiados bits defectuosos irrecuperables (capturados por el decodificador ECC en el receptor) o por no tener una suma de verificación adecuada (generalmente se utilizan varios esquemas CRC) . Dependiendo de cuán confiable debe ser su aplicación, uno puede extender este protocolo a un nivel superior introduciendo codificaciones CRC o ECC adicionales. O el protocolo puede solicitar que se reenvíe el mismo paquete después de un período de tiempo sin un reconocimiento, etc.

Recuerde: siempre hay una pequeña posibilidad (aceptable) de que se extraiga un paquete de datos del ruido de fondo, luego de que el paquete recibido tenga una codificación ECC adecuada y un CRC adecuado. Normalmente, cuanto mayor es la longitud del paquete, menor es la probabilidad de que ocurra algo así. Incluso en algunos protocolos muy simples, uno tiene que garantizar que la ausencia de una señal (típicamente 0s) no se reconozca como un paquete válido o su inicio.

Esta es una muy buena pregunta, y he estado preguntando eso cuando comencé con las redes.

Para la transmisión basada en ondas, esto es fácil de resolver. Siempre hay una señal eléctrica, tanto para transportar 1s como 0s. Entonces, el receptor puede identificar el cero porque si tiene una señal eléctrica específica para representarlo. Hacemos eso con modulación, puede leer más sobre eso aquí: señales, ondas y tipos de transmisión.

Para la fibra óptica, las cosas son diferentes. Aquí no usamos ondas, por lo que debemos usar un enfoque diferente. Podemos superar esto enviando un preámbulo, una serie de bits para “despertar” al oyente. Luego, el oyente comienza a muestrear el tiempo y leer la señal cada X milisegundos. Si, cuando lee, no capta nada, simplemente asume que era un cero. Y la transmisión no termina simplemente, al menos en la mayoría de los casos. O el receptor sabe cuántos bits esperar, u otra secuencia especial informa al receptor del final de la transmisión. Lea sobre esto aquí: medios de fibra óptica, datos como pulsos de luz.

Si bien los datos que se transmiten pueden comenzar y finalizar como información binaria (dos estados), el canal que los transmite no está necesariamente limitado por tales limitaciones. La luz en un cable óptico no necesariamente está completamente “encendida” o “apagada”, y no hay necesariamente una asignación directa de estados de datos a estados en el canal de comunicaciones. Un dígito binario a menudo se representa en un canal de comunicaciones como un cambio de estado, en lugar de una condición estática. Esto permite que un sistema de comunicaciones identifique la ausencia de cambios de estado como ‘sin datos’, a diferencia de ‘0’.

Algunos sistemas de comunicaciones básicos ni siquiera usan cero como representación de un dígito binario. RS-232 utiliza nominalmente +/- 12V como los valores que representan 0 y 1 respectivamente. Hacer esto potencialmente permite que el canal de comunicaciones distinga 0V como ‘sin señal’ (aunque en RS-232, esto rara vez se explota).

En comunicaciones síncronas, sin señal de sincronización separada, si ese “sin datos” está en el nivel de 0, 8 (o 10 o tantos como desee) se envían 9 bits. Si “sin datos” es el nivel de 1, se envían muchos 1 bits.

Si tiene una señal de sincronización, no se envían datos ni se envían bits, es lo mismo. Los bits representan datos. Excepto que, dependiendo del nivel de “sin datos” (1 o 0), puede representar 1s o 0s siendo enviados.

Si hay una línea de sincronización separada, pero no hay señal, no se envían datos. (Eso significa que no se envían bits, o un número 0 de bits).

Con datos asincrónicos, en un cable, si no se envía un pulso de inicio, no hay datos, si hay un bit de inicio, y la línea permanece en el nivel 1 (o el nivel 0), todos los siguientes tiempos de bit son 1s (o 0s )

(No hay tal cosa como un bit de inicio o una señal de sincronización, y no se envían datos. La línea de datos está en la marca o en el espacio (1 o 0), por lo que si se envía una señal y la línea de datos no cambiar, se están enviando todos los 1 (o todos los 0).)

En 1 sistema síncrono en el pasado (AX25), se enviaron 10 1 bits seguidos, marcando el comienzo de los datos. Como no puede tener 10 1 bits en comunicaciones de 8 bits (tiene 0 bits entre bytes), eso es fácil de detectar por el hardware. Sin “palabra de encuadre” (10 1 bits), sin datos. 10 1s, luego 8 0s, y tienes 8 0s enviados.

Hay múltiples aspectos en juego aquí. Tener 1v como 1 y 0v como 0 se invoca desactivando la codificación. Tecla de encendido-apagado – Wikipedia y codificación unipolar – Wikipedia La forma en que dirías un cero es tener una velocidad de datos establecida. Entonces lees el valor cada x segundos. Esto puede ser un problema, ya que necesita otro cable para proporcionar una señal de reloj o tener alguna otra forma de explicar el hecho de que el tiempo en el receptor será ligeramente diferente al del emisor. Sin la sincronización del reloj, el tiempo eventualmente se perderá tanto tiempo que los datos serán ilegibles. También hay otros problemas con la activación y desactivación de la clave, como el desequilibrio de la alimentación, por lo que el receptor tiene que desconectar la alimentación de alguna manera. Una forma de evitar los problemas de la codificación On Off es cambiar la forma en que interpreta un código 1 y 0. Manchester: Wikipedia es una forma de hacerlo. Un 1 se indica por la señal que va de mayor a menor y un 0 de menor a mayor. Esta codificación también incluye una señal de reloj, por lo que no necesita un cable adicional ni preocuparse por la deriva del reloj. Tampoco tiene compensación DC. Como comentario sobre el envío de una cadena larga de todo 0 o todo 1, se comprime mucho tráfico antes de enviarlo, por lo que se puede suponer que la aparición de cada símbolo es casi igual.

Porque el tráfico de red no consiste en ceros cuando no se transmite nada. Todos los datos se envían en paquetes y estos paquetes son todos del mismo tamaño. Cuando un transmisor se prepara para transmitir un paquete, escucha para ver si se están produciendo otras transmisiones, si no envía el paquete, se repite. Entre estos paquetes no hay nada. Supongo que la forma en que se envían es importante. No “envían” un uno o un cero, envían un pico de voltaje, este voltaje es igual a un cero y este voltaje es igual a uno, creo que usan -voltaje para cero en realidad. Cuando no se transmite nada, no hay voltaje en la línea.

Los cables no hacen nada, excepto la luz de transferencia (a través de cables de fibra óptica) o la electricidad (a través de cables de metal).

Los datos enviados no son “desnudos”. Contiene información de inicio y parada y, en un nivel superior, información sobre qué dispositivo envió los datos y qué dispositivo debe recibir los datos, etc. Los dispositivos al final de los cables luego enrutan los datos más cerca de los destinos, posiblemente en varios pasos.

Incluso si un byte enviado contiene solo ceros, debido a los bits adicionales, la verificación de errores y el contexto, no puede confundirse con ningún dato.

Esto es extremadamente simplificado. Es un poco más complicado.

Los cables de internet no existen. Internet se define mediante el protocolo de Internet IP, que se ejecuta sobre otros protocolos de nivel inferior. La forma en que se interpretan las señales físicas y cómo distinguir 0 de ningún dato se maneja de manera diferente por estos protocolos de nivel inferior.

Respuesta de tecnología antigua (¡NO aplicable a las comunicaciones modernas de fibra óptica en cualquier escenario habitual!):

El estado ‘sin datos’ es enviar ‘1’, también conocido como ‘marca’.

Una señal comienza con un bit ‘0’, también conocido como ‘inicio’.

Siguen los bits de señal, con un número conocido de bits.

Luego hay un bit ‘0’ ‘Stop’.

Siguen al menos 1 ‘1’ bits de marca, señalando ‘sin datos, listos para la próxima señal’.

Para tecnología aún más antigua, vea ‘Código Morse’ (¡aunque Morse no inventó el código!)

Una forma de hacerlo es observar el nivel de voltaje. Si tiene tres estados y una lógica de cinco voltios, entonces:

Inactivo = 2.5V, 0 = 0V, 1 = 5V

Sin embargo, ahora se enfrenta al problema de que dos ceros o incluso dos podrían enviarse sucesivamente: 11001100 es el ejemplo obvio.

La codificación Manchester se puede utilizar en sistemas 10BASE T. Básicamente el reloj sube y baja en un período determinado. Dentro de este período hay una transición en el voltaje de los datos. Según el estándar 802.3, el cero se envía por una transición de baja a alta y el 1 por un de mayor a menor. Donde no hay transición baja o alta, la línea no está comunicando datos. Las transiciones al comienzo de un período son generales y las del punto medio son las que significan datos.

Luego está 8b / 10b que asigna palabras de 8 bits a símbolos de 10 bits. Es un monstruo. Muy pocas personas entienden esto completamente y no soy uno de ellos. Solo para confundir el problema, hay varias formas de hacerlo. Si lo desea, búsquelo, pero prepárese para una montaña rusa de “lo que barcazan los cuatro canales …”

En técnica, rara vez nos preocupamos por esto, ya que cuando instalamos cosas que ya están preocupadas y todo lo que tenemos que hacer es hacer clic juntas. Si hago cosas, hay muchos fragmentos de código para comunicaciones de datos que puedo adaptar para hacer lo que quiero. Pero es importante para aprobar los exámenes, por lo que si eso es lo que está haciendo, le recomiendo que obtenga un libro que esté en su lista de lectura y que lo golpee con fuerza. Buena suerte.

Las codificaciones de bits comunes a menudo usan transiciones en lugar de 0s y 1s básicos para evitar este problema, así como para mantener el voltaje promedio alrededor de 0V.

Por ejemplo, la codificación Manchester comúnmente utilizada para Ethernet de 10Mb / s divide el período de tiempo para un bit en dos: bajo a alto (-0.85V a + 0.85V) es 0, y alto a bajo es 1. Esto tiene el beneficio adicional de tener un punto de 0V en el medio de cada bit para ayudar a cronometrarlo.

La codificación 4B / 5B se usa en Ethernet más rápido y asigna cada conjunto de 4 bits a un valor 5b, por ejemplo, 0000 -> 11110. Cada 1 en la salida representa una transición en un ciclo entre muchos valores de voltaje. En el nivel más básico, MLT-3 (3 niveles), es -0.85V -> 0V -> + 0.85V -> 0V -> -0.85V, etc., y los niveles más altos de MLT usan más pasos. Entonces 0000 -> 11110 -> (-0.85V antes), 0V, + 0.85V, 0V,, -0.85V, permanezca en -0.85V, (siguiente bit).

La codificación de 4b a 5b usa una tabla de búsqueda, y todos los valores de salida tienen al menos dos transiciones (1s) para mantener los voltajes cambiantes, lo que garantiza que el promedio permanezca alrededor de 0V y también significa que incluso si envía constantemente el mismo conjunto de valores la señal seguirá cambiando.

Esta respuesta es más general, ya que no conozco específicamente la conexión a Internet, pero normalmente las conexiones de datos tienen algún tipo de reloj. Cuando el reloj pulsa, los datos se leen durante 1 bit, luego el reloj pulsa y se lee el siguiente bit. Si hay una serie de bits bajos, solo debe pulsar el reloj una vez para cada uno.