Artículos de Linux [17]: Protocolo de capa IP de red

Tabla de contenido

Introducción a la capa de red

1. Formato de encabezado de protocolo

1. Introducción de atributos

2. Introducción de bandera de 16 bits, bandera de 3 bits y desplazamiento de chip de 13 bits en la segunda línea

 (1) Fragmentación de la capa de red

① ¡La fragmentación en la capa de red no es la corriente principal!

② ¿Cómo reducir la fragmentación? ? ¿La capa de red determina si la capa de red está fragmentada o no? ?

(2) Asamblea de fragmentación

(3) ¿Afecta la fragmentación a UDP y TCP?

2. División de segmento de red (importante)

1. Composición de la dirección IP

2. División de segmento de red

(1. Introducción

(2) ¿Por qué se divide el segmento de red?

3. Dirección IP privada y dirección IP pública

(1. Introducción

(2) Tecnología NAT: un trabajo pionero que alivia en gran medida la falta de IP

4. Enrutamiento


Introducción a la capa de red

Capa de aplicación: lea el mensaje completo, la serialización y los problemas de procesamiento del protocolo. (extracción de datos - procesamiento de datos)

Capa de transporte (tcp/udp): resuelve la confiabilidad. Proporcione control de flujo, retransmisión de tiempo de espera y otras estrategias.

Lo que proporciona la capa de Internet (IP) es: la capacidad de enviar datos desde el host A al host B a través de la red. Capa de transporte (TCP): garantiza la fiabilidad.
TCP/IP --> Envíe datos de manera confiable desde el host A al host B a través de la red

Capa de red
Determine una ruta adecuada en un entorno de red complejo .

protocolo IP
concepto basico
Host : un dispositivo con una dirección IP que se puede enrutar y controlar ;
Enrutador : equipado con una dirección IP y capaz de controlar el enrutamiento ;
Nodo : un término general para hosts y enrutadores;

1. Formato de encabezado de protocolo

1. Introducción de atributos

Número de versión de 4 dígitos ( versión): especifica la versión del protocolo IP , para IPv4 , es 4.
Longitud del encabezado de 4 bits (longitud del encabezado): cuántos 32 bits es la longitud del encabezado IP , es decir, la cantidad de bytes de longitud * 4. 4 bits significa que el número máximo es 15, por lo que la longitud máxima del encabezado IP es de 60 bytes .
Tipo de servicio de 8 bits (Tipo de servicio): campo de prioridad de 3 bits ( obsoleto ), campo TOS de 4 bits y campo reservado de 1 bit ( debe establecerse en 0). Los TOS de 4 bits representan respectivamente : retraso mínimo , rendimiento máximo Cantidad , mayor confiabilidad y costo mínimo Estos cuatro entran en conflicto entre sí y solo se puede seleccionar uno .
Para aplicaciones como ssh/telnet , el retraso mínimo es más importante , para programas como ftp , el rendimiento máximo es más importante .
Longitud total de 16 bits (longitud total): cuántos bytes ocupa el datagrama IP en su conjunto .
Identificador de 16 bits (id): identifica de forma única el paquete enviado por el host Si el paquete IP está fragmentado en la capa de enlace de datos , la identificación en cada fragmento es la misma .
Campo de bandera de 3 bits : el primer bit está reservado ( reservado significa que no se usa ahora , pero puede usarse en el futuro si no se ha pensado ). El segundo bit es 1, lo que significa que la fragmentación está prohibida. En este momento, si la longitud del paquete supera la MTU, el módulo IP El mensaje se descartará . El tercer bit significa " más fragmentos ". Si está fragmentado , el último fragmento se establece en 0 y los demás en 1. Es similar a una marca final .
Desplazamiento de fragmento de 13 bits (desplazamiento de marco de juego): es el desplazamiento del fragmento en relación con el comienzo del mensaje IP original . De hecho, indica dónde se encuentra el fragmento actual en el mensaje original. El número real de desplazamiento de bytes es Este Se obtiene el valor * 8. Por lo tanto , a excepción del último mensaje , la longitud de otros mensajes debe ser un número entero múltiplo de 8 ( de lo contrario, los mensajes no son continuos ).
Tiempo de vida de 8 bits (Time To Live, TTL): debido a la existencia de factores incontrolables, como errores de red o hosts pares inalcanzables, los paquetes IP vagarán en la red durante mucho tiempo sin desaparecer, lo que ocupará recursos. Luego configure el tiempo de supervivencia de 8 bits de un mensaje IP : el número máximo de saltos de mensaje (contador) para que el datagrama llegue al destino. Generalmente, es 64. Cada vez que se pasa una ruta , TTL -= 1, tiene se ha reducido a 0 y aún no ha llegado . Luego deséchelo . Este campo se utiliza principalmente para evitar bucles de enrutamiento
Protocolo de 8 bits : Indica el tipo de protocolo de la capa superior
Suma de verificación de encabezado de 16 bits : use CRC para verificar si el encabezado está dañado .
Dirección de origen de 32 bits y dirección de destino de 32 bits : indica el remitente y el receptor .
Campo de opción ( longitud variable , hasta 40 bytes ): ligeramente
División de segmento de red ( importante )

2. Introducción de bandera de 16 bits, bandera de 3 bits y desplazamiento de chip de 13 bits en la segunda línea

 (1) Fragmentación de la capa de red

El enlace tiene un límite máximo para enviar una sola trama de datos, por lo tanto, no podemos enviar paquetes IP demasiado grandes, si los paquetes IP a enviar son grandes, la capa de red necesita fragmentarlos y entregarlos a la capa de enlace de datos.

Fragmentación de IP, ¿quién lo hará? —— La capa de red del remitente realizará la fragmentación (por ejemplo, si desea que SF Express le envíe una computadora de 10 kg, es imposible que SF Express desmonte el paquete por usted, y luego montarlo Si no te levantas, tienes que asumir la responsabilidad. Debes desmontar la computadora tú mismo y luego dividirla en 5 paquetes para que SF Express los envíe) Después de recibirlos todos, ¿quién los ensamblará
? ——La capa de red de la otra parte se ensambla
, ya sea para el remitente o el receptor, el comportamiento de fragmentación y ensamblaje, la capa de transporte en ambos lados, ¿lo sabe? ——No es necesario saberlo y no me importa. ¡Las funciones de la capa de red y la capa de transporte están desacopladas!

① ¡La fragmentación en la capa de red no es la corriente principal!

Explicación: la fragmentación en la capa de red no conduce a una transmisión de red confiable. La fragmentación se realiza en la capa de red. Suponga que una porción de datos de 3000 bytes se divide en 3 partes. Al entregar a la capa de transporte, siempre que una parte se pierde, se pierde todo el paquete de datos . Es decir, pérdida de 1 paquete y pérdida de 3 paquetes, la probabilidad de que esto último sea mayor. Mientras la capa de red esté fragmentada, la tasa de pérdida de paquetes aumentará. (¡¡No se recomienda fragmentar!!)

② ¿Cómo reducir la fragmentación? ? ¿La capa de red determina si la capa de red está fragmentada o no? ?

Si la capa de red está fragmentada no está determinada por la capa de red, sino por la capa de transporte . Reducir la fragmentación: la capa de transporte debe considerar no transmitir paquetes demasiado grandes. Después de fragmentar. Cada fragmento es también un paquete IP independiente y también tiene un encabezado. En general, durante el protocolo de enlace de tres vías, se negociará el tamaño del paquete de una sola transmisión de datos .

(2) Asamblea de fragmentación

Identificador de 16 bits (id): identifica de forma única el paquete enviado por el host Si el paquete IP está fragmentado en la capa de enlace de datos , la identificación en cada fragmento es la misma .

Campo de bandera de 3 bits : el primer bit está reservado ( reservado significa que no se usa ahora , pero puede usarse en el futuro si no se ha pensado ). El segundo bit es 1, lo que significa que la fragmentación está prohibida. (Desactive la función de fragmentación) . En este momento, si el mensaje Si la longitud supera la MTU, el módulo IP descartará el paquete . El tercer bit significa " más fragmentos " . Si hay fragmentos , el último fragmento se establece en 0, y los otros son 1. Similar a la etiqueta final "la cadena termina con \0". ( Aunque el último fragmento más es 0, si está fragmentado, ¡el desplazamiento del segmento de 13 bits no debe ser 0! )

Desplazamiento de trama de 13 bits (desplazamiento de marco de juego): es el desplazamiento del fragmento en relación con el comienzo del mensaje IP original . De hecho, indica dónde se encuentra el fragmento actual en el mensaje original. El número real de desplazamiento de bytes es este Valor * 8. Por lo tanto , a excepción del último mensaje , la longitud de otros mensajes debe ser un número entero múltiplo de 8 ( de lo contrario, los mensajes no son continuos ).


Asamblea:
1. Primero identifique que el mensaje está fragmentado! - Campo de bandera de 3 bits + desplazamiento de segmento de 13 bits . El atributo más importante es "más fragmentos", para identificar si el mensaje está fragmentado, ver si "más fragmentos" es 1, está fragmentado; si "más fragmentos" es 0, entonces vea "fragmentos de 13 bits" Offset", si el "desplazamiento de segmento de 13 bits" no es 0, es un fragmento, si es 0, no es un fragmento. Es decir: (más fragmentos==1)||(más fragmentos==0&& desplazamiento!=0)
2. Recopile primero los paquetes con el mismo número de serie. —— Se recogerá la identificación (id) de 16 bits si son iguales 3. Cómo ensamblar correctamente. ——De acuerdo con  el desplazamiento de segmento de 13 bits, clasifique y ensamble de pequeño a grande.

¿Cómo te aseguras de haber recolectado el último? —— "Más fragmentos" son 1 y ensamblados uno por uno, hasta que "más fragmentos" es 0, significa que la colección está completa.
Si el paquete se pierde, ¿cómo se asegura de haberlo recibido todo? —— Los desplazamientos de fragmentos de 13 bits se clasifican de pequeño a grande y se ensamblan. Cuando un paquete se pierde en el medio: el desplazamiento de cada paquete + su longitud propia = el siguiente paquete compensado Migración, si no está esperando, significa que hay menos pérdida de paquetes. Cuando el paquete se pierde al principio: el desplazamiento del primer paquete no es 0, lo que significa que se pierde el principio. Cuando la pérdida de paquetes al final: . Si el "más fragmento" del último mensaje no es 0, significa que el final está perdido.

(3) ¿Afecta la fragmentación a UDP y TCP?

Por supuesto que tiene un impacto, aumentando la probabilidad de pérdida de paquetes, pero la confiabilidad de tcp tiene poco impacto y udp tiene un gran impacto.La fragmentación de IP afectará directamente a UDP

2. División de segmento de red ( importante )

1. Composición de la dirección IP

La dirección IP se divide en dos partes , el número de red y el número de host ( la composición de IP es ip=red de destino+host de destino )
        Número de red: asegúrese de que los dos segmentos de red conectados entre sí tengan identificadores diferentes ;
        Número de host: en el mismo segmento de red , los hosts tienen el mismo número de red , pero deben tener números de host diferentes ;
ejemplo:

FF:FF:FF : FF        es similar al número de estudiante:  2020190401 08
red de destino  destino host                        departamento clase estudiante número de serie

Cuando IP está enrutando, cuando está en la carretera, primero realiza el enrutamiento de acuerdo con la red de destino, después de encontrar la red de destino, y luego de acuerdo con el número de host del host de destino, ¡se realiza el reenvío de datos!

         Las diferentes subredes son en realidad hosts con el mismo número de red juntos.
         Si se agrega un nuevo host en la subred, el número de red de este host es el mismo que el de la subred, pero el número de host no debe ser el mismo que el de otros hosts en la subred.
Al configurar razonablemente el número de host y el número de red, se puede garantizar que en la red interconectada , la dirección IP de cada host sea diferente .
Luego viene el problema , manejar manualmente la IP en la subred es algo muy engorroso .
         Existe una tecnología llamada DHCP, que puede asignar automáticamente direcciones IP a nuevos nodos de host en la subred , evitando las molestias de la administración manual de IP .
         Los enrutadores generales tienen función DHCP , por lo tanto, el enrutador también se puede considerar como un servidor DHCP .

2. División de segmento de red

(1. Introducción

Debe haber habido un papel que ha dividido nuestras direcciones IP globales

Producto histórico: en el pasado, se propuso un esquema para dividir los números de red y los números de host, y todas las direcciones IP se dividieron en cinco categorías , como se muestra en la siguiente figura (esta figura es de [TCPIP]) .

         Clase A 0.0.0.0 a 127.255.255.255
         Clase B 128.0.0.0 a 191.255.255.255
         Clase C 192.0.0.0 a 223.255.255.255
         Clase D 224.0.0.0 a 239.255.255.255
         Clase E 240.0.0.0 a 247.255.255.255
Con el rápido desarrollo de Internet , las limitaciones de este esquema de división surgieron rápidamente y la mayoría de las organizaciones solicitaron direcciones de red de Clase B , lo que resultó en la rápida pérdida de direcciones de Clase B.
La asignación ha terminado , pero la Clase A desperdicia muchas direcciones ;
         Por ejemplo, si solicita una dirección de clase B , en teoría, se pueden permitir más de 65 000 hosts (2^16) en una subred . La cantidad de hosts en una subred de dirección de clase A es mayor .
         Sin embargo, en la construcción de la red real, no habrá tantos casos en una subred , por lo tanto, se desperdicia una gran cantidad de direcciones IP .
Esquema moderno: Se propone un nuevo esquema de división para esta situación , denominado CIDR (Classless Interdomain Routing):
         Introducir una máscara de subred adicional (máscara de subred) para distinguir el número de red y el número de host ;
         La máscara de subred también es un número entero positivo de 32 bits , por lo general termina con una cadena de "0" ;
         ● Realice la operación " Y bit a bit " en la dirección IP y la máscara de subred , y el resultado es el número de red ( por ejemplo, el 1 delante de 1111100 obtiene el número de red, y el siguiente 0 borra el número de host ) ;
         La división del número de red y el número de host no tiene nada que ver con si la dirección IP es de clase A , clase B o clase C.

ejemplo: 

Se puede ver que el número de red se puede obtener haciendo AND con la dirección IP y la máscara de subred , y el número de host de 0 a 1 es el rango de direcciones de la subred ;
También hay una forma más concisa de expresar direcciones IP y máscaras de subred , como 140.252.20.68/24, lo que significa que la dirección IP es 140.252.20.68 y los 24 bits superiores de la máscara de subred son 1, que es 255.255. 255.0

(2) ¿Por qué se divide el segmento de red?

Tomando la escuela como ejemplo, es muy sencillo encontrar una persona en la Escuela de Economía y Administración a través del número de estudiante. Puede mirar directamente los primeros cuatro dígitos del número de estudiante para encontrar la carrera de economía y administración correspondiente, que es decir, excluir otras carreras y luego mirar los últimos cuatro dígitos para encontrar la clase y el número de serie personal.

La esencia de enviar datos: primero encuentre la máquina de destino (red de destino + host de destino)
--> ¡la esencia de encontrar es el proceso de exclusión! !
——>División de subredes, excluir una gran cantidad de subredes a la vez—
> ¿Por qué necesitamos dividir el segmento de red? Fácil de encontrar: ¡se mejora la eficiencia de encontrar el host de destino!

dirección IP especial
Establezca todas las direcciones de host en la dirección IP en 0, que se convierte en el número de red , que representa esta LAN ;
Establezca todas las direcciones de host en la dirección IP en 1, que se convierte en la dirección de transmisión , que se utiliza para enviar paquetes de datos a todos los hosts conectados entre sí en el mismo enlace;
La dirección IP de 127.* se usa para la prueba de bucle invertido local (bucle invertido) , generalmente 127.0.0.1

Limitación en el número de direcciones IP
Sabemos que una dirección IP (IPv4) es un número entero positivo de 4 bytes y 32 bits Entonces solo hay 2 elevado a la 32 potencia de las direcciones IP , que es aproximadamente 4300 millones Y TCP/IP
El protocolo estipula que cada host debe tener una dirección IP .
¿Significa esto que solo 4.300 millones de hosts pueden acceder a la red ?
De hecho , debido a la existencia de algunas direcciones IP especiales , el número es muy inferior a 4.300 millones ; además , las direcciones IP no se configuran de acuerdo con la cantidad de hosts , sino de cada tarjeta de red.
Todos necesitan configurar una o más direcciones IP .
CIDR ha aliviado el problema de direcciones IP insuficientes hasta cierto punto ( utilización mejorada y desperdicio reducido , pero el límite superior absoluto de direcciones IP no ha aumentado ), todavía
No es suficiente Hay tres formas de resolverlo en este momento :
Asignación dinámica de direcciones IP : solo asigne direcciones IP a los dispositivos conectados a la red , por lo tanto , los dispositivos con la misma dirección MAC no necesariamente obtendrán la misma dirección IP cada vez que se conecten a Internet ;
tecnología NAT ( se presentará más adelante );
IPv6: IPv6 no es una simple versión mejorada de IPv4 . Estos son dos protocolos irrelevantes y no son compatibles entre sí . IPv6 usa 16 bytes y 128 bits para representar una dirección IP . Pero IPv6 aún no es popular ;

3. Dirección IP privada y dirección IP pública

(1. Introducción

Si se establece una red de área local dentro de una organización, la dirección IP solo se usa para la comunicación dentro de la red de área local y no se conecta directamente a Internet En teoría, se puede usar cualquier dirección IP , pero RFC 1918 estipula la IP privada dirección utilizada para establecer una red de área local
10.*, los primeros 8 dígitos son el número de red , un total de 16.777.216 direcciones
172.16. a 172.31. , los primeros 12 dígitos son el número de red , un total de 1.048.576 direcciones
192.168.*, los primeros 16 dígitos son el número de red , un total de 65.536 direcciones
Incluidas en este rango, todas se convierten en IP privadas (las IP privadas no pueden aparecer en la red pública, y solo pueden formar una LAN en la red privada), y el resto se denominan IP globales (o IP de red pública) ;
Enrutador doméstico: ¡Además de reenviar paquetes IP, cree una subred!
Si su host quiere conectarse, después de conectarse al enrutador, no se comunica directamente con la red pública (WAN), sino que envía el mensaje al operador. El operador que debe la factura del teléfono móvil no permite el acceso a Internet, pero todavía puedo pasar por 10086. Porque cuando estás en mora, el operador descarta el paquete de datos que enviaste, pero aún puedes enviar mensajes al operador .

(2) Tecnología NAT: un trabajo pionero que alivia en gran medida la falta de IP

Los datos en la red de área local se envían a la red pública, que debe completarse reemplazando constantemente la IP de origen:
Proceso de ejemplo: el operador crea una red privada LAN. Si desea ver videos, el 192.168.1.201 del host y la IP del puerto LAN 192.168.1.1 del enrutador doméstico están en la misma LAN, entonces puede enviar la solicitud al enrutador doméstico Después de enviar, el enrutador doméstico enviará Reemplace la IP de origen src "201" de su host con la IP del puerto WAN "10.1.1.2", y luego el enrutador doméstico envía esta solicitud al enrutador del operador, y el El enrutador del operador reemplaza la IP de origen src "10.1.1.2" del enrutador doméstico con la IP del puerto WAN "122.77.241.4", y finalmente la envía a un determinado servidor de audio para permitir que procese su solicitud. Esta es la traducción NAT constante

Un enrutador se puede configurar con dos direcciones IP, una es la IP del puerto WAN y la otra es la IP del puerto LAN (IP de subred).
Los hosts conectados al puerto LAN del enrutador están todos subordinados a la subred del enrutador actual.
Diferentes enrutadores tienen la misma IP de subred (generalmente 192.168.1.1). Las direcciones IP del host en la subred no se pueden repetir. Pero las direcciones IP entre subredes se pueden repetir .
Cada enrutador doméstico es en realidad un nodo en la subred del enrutador del operador.Dichos enrutadores del operador pueden tener muchos niveles, y el enrutador del operador más externo, la IP del puerto WAN, es una IP de red pública.
Cuando el host en la subred necesita comunicarse con la red externa, el enrutador reemplaza la dirección IP en el encabezado IP (con la IP del puerto WAN) y la reemplaza paso a paso, y finalmente la dirección IP en el paquete de datos se convierte en un red pública IP Esta tecnología se llama NAT (traducción de direcciones de red, traducción de direcciones de red).        
Si queremos que nuestro propio programa de servidor sea accesible en la red pública, debemos implementar el programa en un servidor con una IP externa. Dicho servidor se puede comprar en Alibaba Cloud/Tencent Cloud.

4. Enrutamiento

En la compleja estructura de la red , encuentre una ruta hacia el destino ;
El proceso de enrutamiento es el proceso de " pedir direcciones " salto por salto (Hop by Hop) . Los enrutadores adyacentes de cada salto deben estar en la misma red de área local y solo pueden comunicarse dentro de la misma red de área local.
El llamado " un salto " es un intervalo en la capa de enlace de datos . Específicamente, en Ethernet, se refiere al intervalo de transmisión de la trama desde la dirección MAC de origen hasta la dirección MAC de destino .
El proceso de transmisión de paquetes IP también es el mismo que pedir direcciones .
         ● Cuando el paquete IP llega al enrutador , el enrutador verificará primero la IP de destino;
         El enrutador decide si el paquete de datos puede enviarse directamente al host de destino o debe enviarse al siguiente enrutador ;
         Repita en secuencia hasta llegar a la dirección IP de destino ;
Entonces, ¿cómo determinar a dónde debe enviarse el paquete de datos actual ? Esto depende de mantener una tabla de enrutamiento dentro de cada nodo ;
[ Tang Monk Preguntando el Camino Ejemplo 2 ]
         La tabla de enrutamiento se puede ver con el comando de ruta
         Si la dirección IP de destino llega a la tabla de enrutamiento , simplemente reenvíela directamente ;
         La última línea en la tabla de enrutamiento se compone principalmente de la dirección del siguiente salto y la interfaz de envío . Cuando la dirección de destino no coincide con otras líneas en la tabla de enrutamiento, se enviará a la dirección del siguiente salto de acuerdo con la interfaz especificada en el entrada de enrutamiento predeterminada.
Suponga que la configuración de la interfaz de red y la tabla de enrutamiento en un host son las siguientes :

Destino: el número de red de la subred, la dirección IP de la red conectada directamente (172.28.64.0). Puerta de enlace: puerta de enlace: el enrutador predeterminado predeterminado. 

Genmask: máscara de subred Indicadores: la entrada U- es válida, G- es el enrutador. Iface: interfaz de red. (recibir y enviar datos)

         Este host tiene dos interfaces de red, una interfaz de red está conectada a la red 192.168.10.0/24 y la otra interfaz de red está conectada a
red 192.168.56.0/24 ;
         Destino en la tabla de enrutamiento es la dirección de red de destino , Genmask es la máscara de subred , Gateway es la dirección del siguiente salto , Iface es la interfaz de envío, el inicio de sesión U en Flags indica que esta entrada es válida ( algunas entradas se pueden deshabilitar ), y el signo G indica esto. La dirección del siguiente salto de la entrada es la dirección de un determinado enrutador, y la entrada sin el indicador G indica que la dirección de la red de destino es una red conectada directamente a la interfaz local , y no necesita ser reenviado por el enrutador ;
Ejemplo de proceso de reenvío 1: Si la dirección de destino del paquete de datos a enviar es 192.168.56.3
         Realice la operación AND con la máscara de subred en la primera línea para obtener 192.168.56.0, que no coincide con la dirección de la red de destino en la primera línea.
         Realice la operación AND con la máscara de subred en la segunda línea para obtener 192.168.56.0, que es la dirección de red de destino en la segunda línea , para que se envíe desde la interfaz eth1 ;
         Debido a que 192.168.56.0/24 es la red conectada directamente a la interfaz eth1 , se puede enviar directamente al host de destino sin pasar por un enrutador.
pelo _
Ejemplo de proceso de reenvío 2: Si la dirección de destino del paquete de datos a enviar es 202.10.1.2
         Compare con los primeros elementos de la tabla de enrutamiento y descubra que no coinciden ;
         Según la entrada de enrutamiento predeterminada, se envía desde la interfaz eth0 al enrutador 192.168.10.1 ;
         ● El enrutador 192.168.10.1 determina la dirección del próximo salto según su tabla de enrutamiento ;
Algoritmo de generación de tablas de enrutamiento ( opcional )
La tabla de enrutamiento puede ser mantenida manualmente por el administrador de la red ( enrutamiento estático ), o puede ser generada automáticamente por algún algoritmo ( enrutamiento dinámico ).
Se invita a los estudiantes a investigar algunos algoritmos de generación relacionados después de la clase , como el algoritmo de vector de distancia , el algoritmo LS , el algoritmo de Dijkstra , etc.

Supongo que te gusta

Origin blog.csdn.net/zhang_si_hang/article/details/129363566
Recomendado
Clasificación