[Linux] Protocolo de capa de red: IP

Debemos aceptar las críticas, porque pueden ayudarnos a salir de la ilusión del narcisismo, para que no nos intoxicemos moral e intelectualmente durante mucho tiempo y no vayamos a la destrucción en el narcisismo. De hecho, somos mucho más hipócritas y oscuros. de lo que imaginamos.

inserte la descripción de la imagen aquí


1. La relación entre IP y TCP (proporcionando políticas y proporcionando capacidades)

1.
Hemos aprendido TCP antes. En ese momento, cuando estábamos explicando, dijimos directamente que el host A envió segmentos de datos al host B desde la perspectiva de Dios, pero ¿el host A realmente envió segmentos de datos directamente a la otra parte? De hecho, no lo es. Los segmentos de datos de la capa de transporte se entregan a la capa de red. Entonces, ¿qué papel juega TCP en el proceso de transmisión de datos de la red? ¿Cuál es el trabajo central de la capa de red? ¿Cómo debo entender estas dos capas de pila de protocolos?

2.
La capa de red puede brindar la capacidad de enviar un paquete de datos desde el host A al host B a través de la red, pero ¿es posible hacerlo? En el mundo en el que vivimos, no es 100% probable que suceda nada, porque todo es probable. Por ejemplo, Zhang San, el matón de matemáticas de su clase, tiene la capacidad de obtener una puntuación de 150 en todos los exámenes de matemáticas, pero esto ¿significa que ¿Debe poder pasar 150 en cada prueba? ¡Este no es necesariamente el caso! Solo podemos decir que tiene una probabilidad muy alta de poder lograr 150 en el examen de matemáticas, pero si el padre de Zhang San es el director de la escuela, su padre exige que Zhang San obtenga 150 en cada examen, si este examen Si Si no llega a 150, su padre cancelará la prueba hasta que Zhang San alcance 150. Esta es la estrategia que su padre le proporcionó a Zhang San.
De la misma manera, decimos que la capa de red puede brindar la capacidad de enviar un paquete de datos desde el host A al host B a través de la red, ¡pero esto no significa que la capa de red deba poder hacerlo! ¿Es posible que la red esté congestionada y se pierdan paquetes de datos en un área grande? ¿O la capacidad de recepción de la otra parte es demasiado pequeña y la velocidad de envío de paquetes de datos en la capa de red es demasiado rápida, por lo que la otra parte no tiene tiempo para recibir y descarta muchos paquetes? O la otra parte no ha devuelto el mensaje durante mucho tiempo, ¿qué debe hacer el remitente? Entonces, la capa de red no solo se enfrenta al requisito de enviar únicamente paquetes de datos a través de la red, sino también a otros problemas que pueden surgir durante la transmisión de la red, ¿y quién resolverá estos problemas? De hecho, es el protocolo de control de transmisión TCP el que resuelve

3.
Entonces decimos que TCP proporciona estrategias para enviar paquetes de datos a través de la red, como retransmisión de tiempo de espera, respuesta de confirmación, control de flujo, control de congestión, ventana deslizante, respuesta a cuestas, respuesta retrasada, etc. Estos son paquetes de datos enviados en la red. Si hay un problema no confiable, ¿cómo se debe procesar el paquete de datos? Todos estos están controlados por TCP.
La capa IP proporciona la capacidad de enviar paquetes de datos a través de la red. Por ejemplo, la capa IP verificará la tabla de enrutamiento a través de la IP de destino en el encabezado para determinar la ubicación del siguiente salto del paquete de datos. La capa IP solo es responsable de entregar el paquete de datos al siguiente salto. En cuanto a cualquier problema en el proceso de transmisión, esta es una estrategia proporcionada por la capa TCP para resolverlo, y a la capa IP no le importa y no hará nada.
Por lo tanto, decimos que TCP proporciona una estrategia para la transmisión de datos a través de redes, mientras que IP proporciona la capacidad de transmitir datos a través de redes. La combinación de los dos garantizará que los paquetes de datos se envíen de manera confiable desde el host A al host B a través de la red, lo que Es por eso que mucha gente lo llama protocolo TCP/IP porque estos dos protocolos pueden garantizar de manera confiable que los paquetes de datos se envíen al host de destino a través de la red, y esta es la esencia de la comunicación de red.

4.
Entonces, ¿cómo envía la capa IP paquetes de datos a través de la red? (Una comprensión simple)
En la selección de la ruta, la IP de destino es muy importante. La IP de destino puede determinar qué ruta se enrutará el paquete de datos. El host o enrutador en la siguiente figura se llama nodo. Cada nodo determinará la La posición del siguiente salto del paquete de datos a través de la IP de destino (en realidad, se determina verificando la tabla de enrutamiento) e IP = red de destino + host de destino. La primera mitad de la IP de destino de 32 bits indica el número de red de destino. la segunda mitad representa el número de host de destino en la red de destino, porque hay varios hosts en una LAN, por lo que después de encontrar el segmento de red de destino, debe encontrar el host de destino en el segmento de red.

inserte la descripción de la imagen aquí

5.
La siguiente imagen es una foto de mi enrutador y puede ver la dirección IP y la dirección MAC del enrutador. Al enrutar paquetes de datos, no solo los enrutadores tienen la capacidad de enrutar, sino que el propio host también tiene la capacidad de enrutar paquetes de datos y también puede seleccionar rutas para los paquetes de datos.

inserte la descripción de la imagen aquí

En segundo lugar, comprender el encabezado IP (nuevamente comprender la orientación a datagramas)

Los tres campos de encabezado en la parte verde se encuentran al final del artículo.

inserte la descripción de la imagen aquí

1.
Al aprender el protocolo, las dos preguntas más inseparables son ¿cómo separar el encabezado de la carga útil? ¿Cómo se entregará la carga útil hacia arriba?
La longitud del encabezado de 4 bits es la misma que la de TCP, que representa la longitud del encabezado. La unidad es de 4 bytes y el máximo de 4 bits es 15. Por lo tanto, el tamaño del encabezado IP es de 20 a 60 bytes. .IP al igual que TCP tiene su propia cabecera Opciones externas, al encapsular el mensaje se puede incluir o no la opción, dependiendo de los requerimientos específicos. Al mismo tiempo, IP también tiene un campo de longitud total de 16 bits, por lo que solo necesita leer el valor de la longitud del encabezado de 4 bits × 4 bytes para obtener el encabezado IP y luego usar la longitud total de 16 bits: la Longitud del encabezado IP para obtener la carga útil. A través de estos dos valores de campo, el encabezado y la carga útil se pueden separar.
El protocolo de 8 bits indica el tipo de protocolo de la capa superior de la capa de red: el protocolo ICMP es 0000 0001, TCP es 0000 0110 y UDP es 0001 0001. A través del protocolo de 8 bits, la carga útil se puede distribuir hacia arriba y entregado al protocolo de capa superior.

2.
¿Por qué UDP es lo mismo que IP, con una longitud total de 16 bits en el campo de encabezado? Al mismo tiempo, también se puede determinar la longitud del encabezado de UDP e IP: UDP tiene una longitud fija y IP tiene una longitud de encabezado de 4 dígitos.
De hecho, la razón es muy simple, porque UDP está orientado a datagramas, y IP también debe ser un mensaje, y IP no está orientado a flujos de bytes, por lo que incluso si es TCP sobre IP, no importa cuánto gaste en TCP. , No importa cuánto estés orientado a los flujos de bytes, ¡debes ser un mensaje cuando llegues a la capa IP! Después de enviar la IP, cuando el par la recibe, es necesario determinar la carga útil del mensaje IP. Una vez determinado, la carga útil se puede entregar a la capa TCP, y en la capa TCP, a él no le importará la carga útil en este momento, porque TCP está orientado a flujos de bytes, cómo interpretar la carga útil y derecho a hablar. Está en la capa de aplicación.
Por lo tanto, la distinción entre UDP para datagramas y TCP para flujos de bytes se puede entender desde dos aspectos: si el campo del encabezado del protocolo puede obtener el tamaño de la carga útil y la interfaz del socket de comunicación .
(1) Si está orientado a datagramas, después de separar la carga útil del encabezado, la carga útil se puede entregar con precisión al protocolo de la capa superior, ¡porque usted es un mensaje! Es necesario entregar con precisión la carga útil de un mensaje completo a la capa superior. Los paquetes entre dos partes son uno a uno.
Si está orientado a bytes, después de separar el encabezado y la carga útil, no es necesario entregar la carga útil a la capa superior con precisión, solo necesita colocar la carga útil en el búfer de recepción primero, en cuanto a cuánta carga útil se acumula. en el buffer de recepción, por lo que como resultado, es imposible distinguir qué carga pertenece a qué mensaje. A TCP no le importa esto. Este no es un asunto que TCP deba resolver. El derecho a hablar sobre cómo interpretar estas cargas reside en en la capa de aplicación.
(2) recv/send y recvfrom/sendto no solo pueden ver que TCP está orientado a la conexión y UDP no está conectado, sino también que uno está orientado a datagramas y el otro está orientado al flujo de bytes. Cada vez que recvfrom y sendto envían y reciben paquetes de datos, deben indicar la dirección del socket de origen y la dirección del socket de destino del paquete de datos respectivamente. Esto se debe a que los paquetes que envían están orientados a datagramas. Después de que cada paquete llega al extremo opuesto Ambos deben permitir que la capa de aplicación de la otra parte obtenga con precisión la carga útil de un mensaje completo de la capa de transporte, al igual que IP entrega con precisión la carga útil de un mensaje a su capa superior, esto se debe a que están orientados a Datagramas. ¡Un mensaje completo, no un flujo de bytes!
Cuando se reciben y envían datos, se comunican bajo la condición de una conexión TCP, por lo que enviar solo necesita rellenar continuamente los datos en el búfer de recepción del extremo del par en forma de flujo de bytes, sin preocuparse por la capa superior. la carga útil de un mensaje completo, debido a que estoy orientado a flujos de bytes, ¿puede su capa superior obtener la carga útil de un mensaje completo, qué me importa? ¡Solo soy responsable de la loca transmisión de datos en forma de flujos de bytes a mi nivel! ¡No me importa el problema de los paquetes fijos TCP! ¡No es mi problema de TCP, es trabajo de su capa de aplicación resolverlo!

3.
El remitente completa la suma de verificación del encabezado de 16 bits. Después de recibir el mensaje IP, el receptor realiza un algoritmo de verificación CRC en el encabezado IP (nota: solo se verifica el encabezado). Si se encuentra que el encabezado IP está dañado Durante la transmisión, el paquete IP se descarta directamente.
Cuando la capa TCP en el extremo emisor no recibe un mensaje de respuesta durante un tiempo prolongado, activará automáticamente el mecanismo de retransmisión de tiempo de espera para reenviar uno o más segmentos de datos dentro de la ventana deslizante. Por lo tanto, el protocolo IP no garantiza confiabilidad. En cuanto a problemas poco confiables en el proceso de transmisión de datos a través de la red (como pérdida de paquetes, segmentos de datos desordenados, inversión de bits y transmisión repetida de segmentos de datos), el protocolo IP No le importa Estas son las necesidades de TCP para resolver cosas, como proporcionar clasificación de segmentos de datos + deduplicación, retransmisión de tiempo de espera ... etc., mientras que el protocolo IP solo es responsable de enviar datos a través de la red.

4.
El TTL (tiempo de vida) de 8 bits se refiere a la cantidad de saltos del enrutador que el datagrama puede pasar antes de llegar al host de destino.
En una topología de red compleja, nadie puede garantizar que el datagrama llegue al host de destino de forma segura y sin errores. El datagrama puede reenviarse continuamente en un anillo (bucle de enrutamiento) durante el proceso de enrutamiento. De hecho, dicho mensaje es No tiene sentido, porque nunca podrá llegar al host de destino y puede haber problemas en la selección de la ruta. Por ejemplo, el datagrama puede elegir una ruta óptima para llegar al host de destino, pero puede deberse a algún entorno de red. Se necesita un largo camino para llegar al host de destino y lleva mucho tiempo, por lo que dicho mensaje en realidad no tiene sentido porque desperdicia demasiado tiempo, lo que reduce en gran medida la eficiencia de la transmisión de datos de la red. La mejor manera de hacerlo es correcta. reenviar el datagrama cuando el entorno de red sea bueno y dejar que la capa IP elija una ruta óptima para reenrutar el datagrama.
Por lo tanto, en vista de los posibles problemas anteriores, el enrutador debe tener la capacidad de descartar paquetes directamente, y esta capacidad en realidad se refleja en el tiempo de supervivencia de 8 bits. Una vez que el paquete IP está en el proceso de enrutamiento y reenvío, el número de saltos del enrutador por los que pasa excede la vida útil de 8 bits, entonces el enrutador puede abandonar directamente el enrutamiento continuo del mensaje y descartarlo directamente.
El remitente generalmente establece el valor TTL en 64. Durante el proceso de reenvío del paquete IP, cada vez que pasa a través de un enrutador, el valor se reducirá en 1. Cuando llegue a 0, el enrutador descartará automáticamente el paquete IP. . En el entorno de red actual, un mensaje pasa a través de 8-9 enrutadores como máximo durante el proceso de reenvío. Es sorprendente pasar a través de más de 10 enrutadores. Una vez que pasa a través de 64 enrutadores, debe ser un mensaje IP. Hubo un problema en el proceso de reenvío! Por lo tanto, TTL puede prevenir eficazmente los bucles de enrutamiento y la acumulación de una gran cantidad de paquetes no válidos en la red.

inserte la descripción de la imagen aquí

5.
Cuando escribimos el código de comunicación del socket TCP antes, el número de puerto de enlace en el código del servidor en realidad se entregó a la capa de transporte del host del servidor, que fue utilizado por el servidor para distribuir los mensajes enviados hacia arriba a un proceso específico. . La dirección IP de destino especificada por el cliente en realidad se entrega a la capa de red del host del cliente, que es utilizada por el host del cliente para enrutar y reenviar el mensaje IP y enviarlo a través de la red al host de destino.

6.
La versión de 4 dígitos generalmente se completa con 0100, que representa el protocolo ipv4. Dado que los protocolos ipv6 e ipv4 no son compatibles, no hay forma de reemplazarlos directamente, por lo que la versión de 4 dígitos se completa con 4, que es básicamente inútil y es un uso fijo.
El tipo de servicio de 8 bits TOS (Type Of Service) se refiere a los diferentes tipos de servicio que la capa IP puede proporcionar según las diferentes necesidades de la capa de aplicación, incluido un campo de prioridad de 3 bits, que ahora se ha ignorado, y un El campo TOS de 4 bits y el campo reservado de 1 bit (debe establecerse en 0), el campo TOS de 4 bits, como máximo uno de los cuales se puede configurar en 1, indican respectivamente el retraso mínimo, el rendimiento máximo y el más alto. confiabilidad y tarifas mínimas, la aplicación puede configurar el campo TOS de acuerdo con las necesidades reales.
Por ejemplo, los programas de inicio de sesión como ssh y telnet necesitan el servicio con un retraso mínimo, mientras que el programa de transferencia de archivos ftp necesita el servicio con el máximo rendimiento.

3. División del segmento de red

1. ¿Por qué es necesario dividir el segmento de red? (Es conveniente localizar el host de destino para que Internet divida y conquiste al host)

1.
Para dar un ejemplo, la escuela está dividida en muchas universidades y cada universidad se subdivide en muchas especialidades. Cada especialidad tiene estudiantes de diferentes grados y cada estudiante tiene su propio número de estudiante. La escuela administra todo La premisa de un estudiante es poder encontrar o localizar a cualquier estudiante primero. Para comodidad de la administración, la escuela agregará muchos puestos, como monitor de clase, presidente del sindicato de estudiantes, etc.
Por ejemplo, Zhang San de la Facultad de Ciencias encontró una tarjeta de estudiante. Sabía que la tarjeta de estudiante no pertenecía a su Facultad de Ciencias, porque sabemos que el número de serie de la tarjeta de estudiante está diseñado. El número de dígitos en la El final representa el número principal del estudiante, y el número de dígitos al final representa el número del estudiante en la especialidad, el año de inscripción y otra información, por lo que Zhang San supo de un vistazo que la tarjeta de estudiante no era de su universidad, por lo que Zhang San entregó la tarjeta de estudiante al presidente del sindicato de estudiantes de su escuela, habrá un grupo entre los presidentes del sindicato de estudiantes de cada escuela, por lo que esta tarjeta de estudiante fue vista por el presidente del sindicato de estudiantes de ingeniería de información electrónica. y dijo que esta no es la tarjeta de estudiante de nuestra escuela? Llevó la tarjeta de estudiante a su universidad y luego preguntó a los presidentes de cada especialidad a qué especialidad pertenece esta tarjeta. Después de que el presidente de la especialidad la reclamó, gritó en el grupo de su especialidad, ¿quién perdió su tarjeta de estudiante? Date prisa y reclámalo, y finalmente Li Si obtuvo su tarjeta de estudiante.

inserte la descripción de la imagen aquí

2.
En la historia anterior hay un detalle muy importante, que es la exclusión del estudiante cuando pertenece la tarjeta de estudiante, cuando se entrega la tarjeta de estudiante al presidente del sindicato de estudiantes de la Facultad de Ciencias, podemos excluir inmediatamente la información electrónica Para todas las demás universidades excepto ingeniería, al mismo tiempo, cuando la tarjeta de estudiante se entrega al grupo de cada presidente profesional de ingeniería de información electrónica, otras especialidades distintas a la de Li Si pueden excluirse inmediatamente y, finalmente, En el grupo de especialización de Li Si, a través de Después de recibir la confirmación de un estudiante, Li Si finalmente obtuvo su tarjeta de estudiante.
De hecho, una gran cantidad de otros elementos no objetivo se pueden eliminar a la vez, principalmente debido a la idea de dividir y conquistar, que ha generado muchas divisiones a nivel macro: Internet ha dividido segmentos de red y el país tiene dividió muchas provincias. Hay muchas divisiones de ciudades en China. Varios distritos o condados se dividen en ciudades, y cada distrito o distrito se dividirá en calles. ¿Por qué está dividido? De hecho, es para facilitar que el país localice rápidamente a una persona, a fin de gestionar a la gente del país.
Lo mismo ocurre con Internet: ¿por qué necesitamos dividir el segmento de red? De hecho, es conveniente para Internet localizar rápidamente un host, porque cada vez que se confirma un host, la eficiencia de resolución de problemas es alta y se pueden excluir varias subredes a la vez, razón por la cual la IP se divide en la red de destino. y el anfitrión objetivo.

2. ¿Cómo dividir la subred?

2.1 Método de clasificación (los enrutadores construyen LAN)

1.
La dirección IP se divide en dos partes, el número de red y el número de host. Un enrutador es un dispositivo importante para construir una LAN. Un enrutador debe conectar al menos dos subredes, por lo que el enrutador estará tanto en el segmento de red 1 como en el segmento 1. segmento de red 2. Los números de red del segmento de red 1 y del segmento de red 2 no deben ser los mismos; de lo contrario, se producirán problemas cuando el enrutador reciba paquetes que deben reenviarse al segmento de red que administra. Por lo tanto, cada segmento de red puenteado por un enrutador debe identificarse mediante un número de red diferente. Generalmente, la IP del enrutador es el número de red .1, pero no todas las IP del enrutador en el segmento de red están configuradas de esta manera, según la configuración del administrador de la red y la topología de red específica. Pero la mayoría de los enrutadores domésticos están configurados así.

inserte la descripción de la imagen aquí
La siguiente es la dirección IP cuando mi computadora portátil se conecta al punto de acceso móvil. Puede ver que la dirección de puerta de enlace predeterminada es 192.168.20.219, que no es el llamado número de red. 1. Puede deberse a que la estación base es diferente de enrutador. Después de todo, la estación base es muy grande. El método para asignar direcciones IP de administración es definitivamente diferente al de los enrutadores, y la dirección de la puerta de enlace natural no es la misma.
inserte la descripción de la imagen aquí

2.
Los llamados segmentos de red diferentes en realidad están juntando hosts con el mismo número de red, y debe haber un enrutador de salida en este grupo de hosts, formando así un segmento de red. Si desea agregar un nuevo host en el segmento de red, el host recién agregado debe tener el mismo número de red que otros hosts, pero el número de host debe ser único. Al configurar el número de host y el número de red de manera razonable, puede asegurarse de que en En la red interconectada, la dirección IP de cada host es diferente, aunque sean iguales, no importa, porque también pueden tener números de red diferentes.
Pero administrar manualmente la IP en la subred es algo problemático, y existe una tecnología llamada DHCP (protocolo de configuración dinámica de host) que puede asignar dinámicamente la dirección IP del host. En una subred, el dispositivo que administra la dirección IP de la subred es Por lo general, es un enrutador y todos los enrutadores convencionales actuales tienen su propia función DHCP.

3.
El método de clasificación y división ya es un esquema de división antiguo. Este tipo de esquema de división de segmentos de red todavía existe, pero no nos centramos en él. Principalmente aprendemos un nuevo esquema de división de segmentos de red, utilizando el método de máscara de subred para ser flexible. dividir segmentos de red.
La granularidad del siguiente esquema de clasificación y división es muy aproximada: por ejemplo, las direcciones de clase A rara vez tienen 167 77216 hosts almacenados en una LAN, lo que representa más de 100 w hosts, por lo que el segmento de red que solicita direcciones de clase A rara vez, como Las direcciones se desperdician mucho. Usted dijo que hay alrededor de 4.300 millones de direcciones IPv4 y que no hay suficientes personas en el mundo. Aún así las desperdicia. ¿Este esquema de división de subred puede ser bueno? De hecho, las direcciones con más reclamos son direcciones de Clase B. Los segmentos de red que divide pueden almacenar 65,536 hosts en cada segmento de red, por lo que causará una gran cantidad de direcciones de Clase B insuficientes y un desperdicio de direcciones de Clase A. Por lo tanto, esto Este esquema de división de segmentos de red no es lo suficientemente flexible y es fácil provocar el desperdicio de direcciones IPv4.
Por lo tanto, alguien propuso un nuevo esquema de división de segmentos de red, CIDR.

inserte la descripción de la imagen aquí

2.2 CIDR (Introducción de máscara de subred)

1.
CIDR (enrutamiento entre dominios sin clases) El enrutamiento entre dominios sin clases significa que las direcciones de los segmentos de red no están clasificadas. A diferencia del método de clasificación tradicional, CIDR ajusta el prefijo de la red a una longitud dinámica, expresada específicamente como 192.168.101.26/24, el frente de / es la dirección IP y la parte posterior de / es el número de bits de la máscara de subred con 1, lo que significa que los primeros 24 bits de la dirección IP son el número de red. Por ejemplo, si 24 se convierte en una máscara de subred, entonces Es 255.255.255.0, el frente de / es el número de red 192.168.101.0.
De hecho, la forma correcta de obtener el número de red es realizar una operación AND bit a bit con la dirección IP y la máscara de subred, y el resultado del AND bit a bit. es el número de red, subred La regla de la máscara es que los bits de izquierda a derecha cambiarán gradualmente de 1 a 0. Al ajustar el número de bits de izquierda a derecha que son 1, el número de bits del número de red puede se puede ajustar dinámicamente y el número de bits del número de host natural también se puede cambiar, por lo que ajustar el número de 1 bits de izquierda a derecha en la máscara de red no solo puede ajustar el número de red, sino también ajustar el número de hosts en el número de red, lo que mejora en gran medida el uso de la dirección ipv4, trate de no desperdiciar direcciones ipv4.

2.
A continuación, dividamos las direcciones IP de las dos subredes específicamente para ver los números de red de las dos subredes y la cantidad de hosts que pueden acomodar.
En el ejemplo 1, después del AND bit a bit de la dirección IP y la máscara de subred, el resultado es 140.252.20.0, que es el número de red, y los últimos 8 bits de la máscara de subred son 0, lo que significa que el número de host es el últimos 8 bits, por lo que el rango de direcciones de la subred es 140.252.20.0 ~ 140.252.20.255, y hay 2^8 números de host diferentes, es decir, 256 tipos.
Ejemplo 2, la máscara de subred se escribe en forma binaria como 11111111.11111111.11111111.11110000, por lo que el número de red son los primeros 28 bits, el número de host son los últimos 4 bits, y después de que la dirección IP y la máscara de subred se aplican mediante AND bit a bit, obtenemos El resultado del número de red es 140.252.20.64 y el número de host tiene solo 4 bits para identificar, por lo que hay 16 tipos de números de host en total y el rango de direcciones de la subred es de solo 16 direcciones ipv4.

inserte la descripción de la imagen aquí

3.
Después del AND bit a bit de la dirección IP y la máscara de subred, el número de host varía de 0 a 1, que es el número de direcciones IPv4 de hosts que se pueden acomodar dentro de esta subred. El número de host es ambos 0 y todos 1. Para propósitos especiales, todos los 0 están reservados y no asignados como la dirección IP del host, sino solo como el número de red en sí, y todos los 1 también están reservados y no asignados como la dirección IP del host, como una dirección de transmisión, para la red representada por el número de red. Todos los hosts en el segmento transmiten mensajes y todos los hosts los recibirán.
La dirección de loopback local como 127.0.0.1 no se puede utilizar en la red pública y esta dirección solo se utiliza como host. Por lo tanto, no todas las direcciones 2^32 se utilizarán en la red pública y algunas IP se utilizarán para fines especiales.

4.
La siguiente es la dirección IPv4 y la máscara de subred de mi host bajo la tecnología de LAN inalámbrica vista por mi host de Windows. A través de la máscara de subred, puede ver que el número de host es de 8 bits y el número de red es de 24 bits. , el número máximo de hosts que se pueden admitir teóricamente en este segmento de red es 256, que también es el número admitido por la mayoría de las LAN inalámbricas domésticas. Sin embargo, los hosts en este segmento de red no utilizarán todas las 256 direcciones ipv4. Algunas direcciones son para fines especiales! Por ejemplo, el número de red y la dirección de transmisión se reservarán y no se asignarán a los hosts de la LAN.
Lógicamente mi computadora no debería tener una ip de red pública, ¿cómo puedo encontrar la ip de red pública? Mi computadora está en la red de área local de mi casa. Entenderé la IP privada y la IP de la red pública a continuación. De hecho, la IP de la red pública vista por el host LAN es la WAN del enrutador conectado a la red pública cuando el local La red de área se comunica con la red pública.Puerto IP.

inserte la descripción de la imagen aquí

4. IP privada e IP pública

1. Limitación del número de direcciones IP y división de direcciones IP privadas

1.
Sabemos que una dirección ipv4 es un entero de 4 bytes y 32 bits, es decir, el límite superior absoluto de una dirección ipv4 es 4,29 mil millones, ¡no es suficiente! Además, la dirección IP no se divide según el host de la red, sino según la tarjeta de red en el host de conexión de red. Cada tarjeta de red debe tener al menos una dirección IP. Generalmente, una tarjeta de red solo está equipada con una dirección IP. Pero también es posible si desea configurar múltiples direcciones IP para la tarjeta de red, por ejemplo, desea que esta tarjeta de red se comunique con múltiples subredes (segmentos de red). Las computadoras portátiles actuales en el mercado estarán equipadas con dos tarjetas de red integradas en la placa base, una es una tarjeta de red cableada y la otra es una tarjeta de red inalámbrica, por lo que si es cierto que a cada dispositivo conectado a la red se le asigna una asignación global dirección IP única, entonces ¡absolutamente no es suficiente!

2.
Algunas personas pueden decir: ¿no tenemos tecnología CIDR? La tecnología CIDR resuelve el problema de la división del segmento de red: solo puede aumentar la tasa de utilización de las direcciones IP para no desperdiciar algunas direcciones IP, pero no puede aumentar el límite superior absoluto del número de direcciones IP, por lo que aún no puede resolverlo. El problema de las direcciones IP insuficientes. El problema.

3.
Hay alrededor de tres formas comunes de resolver y aliviar la falta de direcciones IP
(1) DHCP, que asigna direcciones IP dinámicamente y solo asigna direcciones IP a dispositivos conectados a la red. Cuando la computadora no está conectada a la red, No debe tener dirección IP. Hasta cierto punto, también puede aliviar el problema de direcciones IP insuficientes, pero el efecto es mejor que nada (2)
En el entorno actual de Internet, la forma principal de resolver realmente el problema de IP insuficiente Las direcciones se realizan a través de la tecnología NAT y la división de IP privada. La tecnología NAT puede transferir IP privada. Convierta la dirección en una dirección IP de red pública y luego acceda a los servicios en la red pública. Las direcciones IP privadas se pueden repetir en grandes cantidades. Después de la conversión Definitivamente sucederá que varios hosts LAN comparten una IP de red pública para acceder a servicios en la red pública. La tecnología NAT es muy importante, hablaremos de ella en detalle más adelante, aquí hay una breve descripción general.
(3) El método más directo es utilizar el protocolo ipv6 para aumentar el límite superior absoluto del número de direcciones IP. Sin embargo, por diversas razones, la tecnología ipv6 de mi país no se ha podido extender al mundo, pero muchos Las empresas nacionales han comenzado a utilizar el protocolo ipv6 internamente. Sí, al acceder a la red pública, convierta la dirección ipv6 en una dirección ipv4. Quizás algún día en el futuro podamos ver la promoción de ipv6 en el mundo, pero ahora deberíamos aprender ipv4. primero.

4.
La dirección IP equivale a un gran pastel: se quita parte de la IP privada, se quita parte de la IP de la red pública y parte de la IP no es utilizada por los usuarios, solo puede ser utilizada por nodos intermedios. de la red, como enrutadores, estaciones base, etc.
La LAN no está conectada directamente a la red pública, por lo que, en teoría, se puede usar cualquier dirección IP para la LAN, pero RFC1918 estipula que solo se pueden usar las direcciones IP al construir una LAN. A estas direcciones IP las llamamos IP privadas. Como se dijo antes, la dirección IP es única, lo que significa que la IP de la red pública es única y la IP de la red interna se puede repetir, lo que puede resolver el problema de direcciones IP insuficientes, porque una gran cantidad de hosts de LAN utilizan direcciones IP de red interna repetidas. .
Las direcciones IP de intranet se pueden dividir en tres categorías:
(1) 10.*, los primeros 8 dígitos se utilizan para números de red fijos, un total de 1677,7216 direcciones y los últimos 24 bits se pueden dividir en direcciones IP específicas por subred. máscara El número de dígitos en el número de red y el número del número de host (este tipo de dirección es más común en la intranet de la empresa) (
2) 172.16. La dirección, los siguientes 16 bits, se pueden usar para dividir la red específica número y número de host a través de la máscara de subred (en la intranet de la empresa y la escuela, este tipo de dirección IP es más común) (3) 192.168.
*, de manera similar, los primeros 16 bits son uso de número de red fijo, un total de 65536 direcciones, y los últimos 16 bits se pueden usar para dividir el número de red específico y el número de host a través de la máscara de subred (la ip en el hogar generalmente, este tipo de dirección es más común) El número
del segundo tipo de dirección de red es 16 veces mayor del tercer tipo, porque el segundo tipo de dirección IP tiene 16 tipos que comienzan con un número de red fijo.
Cuente alrededor de 200 millones de IP privadas y 4,1 mil millones de IP públicas

5.
La siguiente es una captura de pantalla de la IP privada y la IP de la red pública en mi servidor en la nube. Puede ver que mi servidor en la nube tiene su propia IP privada 10.0.8.2 y la red pública ip43.142.224.5, máscara de subred. El código es FF FF 1111 1100 0x00 0x00, los últimos 10 bits son el número de host, lo que indica que la subred puede acomodar hasta 1024 direcciones IP y los primeros 22 bits indican el número de red 10.0.8.0. Mi servidor en la nube está implementado en
este Muchos servicios, como el servicio SSH (número de puerto 22), el servicio FTP (21), el servicio SFTP (22), el servicio TELNET (23), etc., el servicio SFTP generalmente utiliza el puerto predeterminado 22 de SSH para la conexión, en comparación con el servicio tradicional. FTP, SFTP es más seguro.
Los servidores en la nube generalmente están configurados con múltiples tarjetas de red para admitir múltiples direcciones IP, como la IP pública utilizada en la red pública y la IP de intranet utilizada en la intranet de Tencent.

inserte la descripción de la imagen aquí

2. El proceso de envío de paquetes de datos de intranet a la red pública.

2.1 tecnología NAT

1.
El siguiente es el proceso de envío de datagramas desde la intranet al servidor de la red pública, de esta imagen podemos obtener mucha información y aclarar muchos conceptos confusos.
(1) Los números de red de dos segmentos de red conectados no pueden ser los mismos y los números de red de dos segmentos de red desconectados pueden ser los mismos .
Dado que los dos segmentos de red conectados entre sí tendrán un enrutador de dispositivo puente, cuando el enrutador recibe un datagrama del exterior y quiere reenviarlo a uno de los segmentos de red que administra, si los números de red de estos segmentos de red son todos similares , el enrutador no puede enrutar ni reenviar el datagrama, y ​​cuando el enrutador construye una red de área local, nunca se configurará de esta manera.
Si no hay un dispositivo puente entre los dos segmentos de red, los enrutadores que utilizan son diferentes, al igual que los dos segmentos de red a la izquierda a continuación, los números de red de los dos segmentos de red son ambos 192.168.1.0, pero los dos segmentos de red El El segmento no está conectado y no habrá ninguna situación en la que los respectivos enrutadores no sepan a qué segmento de red enviar el datagrama, porque cada uno de los dos enrutadores administra su propia LAN doméstica y no hay intersección entre ellos, por lo que las dos familias Se permite que el número de red de la LAN sea el mismo.
(2) El enrutador doméstico conecta dos subredes, una es la red de área local del hogar y la otra es la red de área local construida con el enrutador del operador y otros enrutadores .
Un dispositivo como un enrutador debe conectar muchas subredes, por lo que el enrutador estará equipado con múltiples tarjetas de red, y cada tarjeta de red corresponde a una interfaz de subred diferente y puede establecer conexiones con diferentes segmentos de red.
El enrutador en la figura une dos segmentos de red, por lo que el enrutador debe tener la dirección IP en el segmento de red en los dos segmentos de red. Por ejemplo, el enrutador a la derecha del segmento de red 1 tiene una intranet en la LAN doméstica. ip192. 168.1.1, y la intranet ip10.1.1.2 de la red de área local formada entre el enrutador y el enrutador, la primera generalmente se denomina ip del puerto Lan, que se refiere a su propia ip en la red de área local administrada internamente por el enrutador Este último Este último generalmente se denomina IP del puerto Wan, que se refiere a la IP del propio enrutador cuando actúa como host en la LAN.
Por ejemplo, el enrutador del operador en el lado derecho del segmento de red 1 también tiene su propia IP de puerto Lan y IP de puerto Wan, y administra otros enrutadores internamente, por lo que la IP del puerto Lan es 10.1.1.1, y externamente como host en la LAN, tiene su propio puerto Wan de red pública externa ip122.77.241.4
(3) Diferentes IP privadas pueden ser iguales .
Si diferentes segmentos de red no están conectados entre sí, es muy normal que aparezca la misma ip privada, siempre y cuando puedan acceder a la red pública, esto definitivamente es posible, porque son segmentos de red que no están conectados entre sí. no se afectarán entre sí.
Si se trata de un segmento de red que está conectado entre sí, los números de red de los dos segmentos de red no se pueden repetir y la misma IP privada no puede aparecer al mismo tiempo. Por ejemplo, el número de red del segmento de red 1 es 192.168. 0.0, y el número de red del segmento de red 2 es 192.168.101.0, si los dos segmentos de red tienen la misma IP privada, provocará que el enrutador puente que conecta los dos segmentos de red tenga el problema de no saber a quién enviar el mensaje. al reenviar el mensaje externo, por ejemplo, en los dos segmentos de red, al mismo tiempo. Si hay una dirección IP de 192.168.101.26, cuando el enrutador determina el segmento de red al que debe ir la dirección IP, tanto el segmento de red 1 como El segmento de red 2 puede ir, porque sus respectivas máscaras de subred son FF FF 00 00 y FF FF FF 00. Una vez que el AND bit a bit, ambos segmentos de red deben ir, ¡esto debe estar mal!
Por lo tanto, en los segmentos de red que se unen entre sí, ¡no puede aparecer la misma IP privada en cada uno! El enrutador puede controlar que esto suceda, porque el enrutador tiene la función de DHCP.
Desde el punto de vista de todas las LAN, independientemente de si están conectadas entre sí o no, podemos utilizar los tres tipos de direcciones IP privadas en un área grande y con alta frecuencia, por lo que esto puede resolver el problema de la falta de información. direcciones ipv4, porque Se puede reutilizar una gran cantidad de direcciones IP privadas en diferentes segmentos de la red, de modo que se pueden guardar muchas direcciones IP públicas para usarlas en el entorno de la red pública y todos los hosts pueden acceder al mismo servidor en la red pública.

inserte la descripción de la imagen aquí
2.
En el proceso de envío de paquetes de datos en la LAN a la red pública, la dirección IP de origen en realidad se reemplaza. La flecha verde en la figura es la dirección del flujo de los paquetes de datos. No hablaré sobre enrutamiento aquí, solo directamente Hablemos del trabajo que se realizará a continuación después de que el datagrama salte al siguiente salto. En cuanto a la selección de ruta, lo hablaré en detalle más adelante. Cuando el datagrama se envía desde el host del cliente, llegará al enrutador de salida de la red de área local donde se encuentra, es decir, el enrutador doméstico en la figura, y luego se enviará el campo IP de origen de la capa IP en el datagrama. ser reemplazado por el enrutador con su propio puerto Wan ip10.1.1.2, cuando el enrutador envía el paquete de datos al enrutador del operador, el enrutador del operador reemplazará el campo IP de origen en el encabezado IP con su propio puerto Wan ip122.77.241. 4, y finalmente el enrutador del operador enviará el mensaje al servidor host 122.77.241.4 en la red pública.
De esta manera, la tecnología de reemplazar constantemente la IP de origen en el datagrama con la IP del puerto WAN del enrutador es en realidad tecnología NAT, y el problema de las direcciones IP insuficientes se puede resolver, principalmente por dos razones: una es que hay una gran cantidad de IP privadas a través de la división LAN Uso repetido, el segundo es que la IP privada puede acceder al servidor en la red pública a través de la tecnología NAT. Si habla de ello en detalle, no es por la tecnología NAT que la IP privada puede acceder servidor en la red pública, pero debido a la IP de destino Con la tabla de enrutamiento de cada nodo en la red, la tecnología NAT también está equipada con tecnología NAPT. Si no hay tecnología NAT, no habrá tecnología NAPT. Por lo tanto, NAT En realidad, resuelve el problema de cómo se devuelve el paquete de datos desde el servidor, no cómo se devuelve el paquete de datos Desde la red interna a la red pública.

inserte la descripción de la imagen aquí

2.2 Surgen dudas

1. ¿Puede un enrutador mantener múltiples IP de puertos Lan o múltiples IP de puertos Wan?

Un enrutador conectará diferentes subredes y el enrutador estará en diferentes segmentos de red al mismo tiempo. En estos segmentos de red, el enrutador debe tener su propia dirección IP y estas direcciones IP no pueden ser las mismas. Administre múltiples segmentos de red y También puede estar en una red de área local formada por múltiples enrutadores al mismo tiempo, por lo que el enrutador puede mantener múltiples IP de puerto Lan o múltiples IP de puerto Wan. Al configurar el enrutador, solo necesita configurar algunas tarjetas de red más para el enrutador. Implementé múltiples direcciones IP para enrutadores.

2. ¿Por qué la tecnología NAT necesita reemplazar continuamente la IP de origen?

Si no se reemplaza la IP de origen, no se puede ver la dirección IP de la red pública del host LAN, aunque el reemplazo de la IP de origen no puede resolver el problema del enrutamiento de datagramas al siguiente salto, porque este problema en realidad es causado por la IP de destino + nodo. tabla de enrutamiento Sin embargo, el valor del reemplazo de la IP de origen no se refleja en el enrutamiento de los paquetes de datos, sino que resuelve el problema de direcciones IPv4 insuficientes y permite que diferentes hosts de LAN compartan una dirección IPv4 de red pública.

Varios hosts LAN comparten una dirección ipv4 de red pública: esta función es el mayor valor de NAT, que puede resolver el problema de direcciones ipv4 insuficientes, porque permite que muchas ip privadas compartan la misma dirección ipv4 de red pública.

Ocultar la topología de la red interna: esta función puede considerarse como un efecto secundario, solo mírela y definitivamente la olvidará después de mucho tiempo, pero la función anterior es el mayor valor de la tecnología NAT, ¡debe recordarla! Cuando el dispositivo interno accede a Internet a través del enrutador NAT, la red externa solo puede ver la dirección IP pública del enrutador NAT, pero no puede obtener directamente la dirección IP real del dispositivo interno, ocultando así la topología de la red interna.

3. ¿Por qué el host de la LAN aún puede encontrar la IP pública?

De hecho, todos los hosts en la red de área local pueden encontrar su propia IP de red pública, al igual que la IP de la red pública de los cuatro hosts cliente a la izquierda en la figura siguiente es el puerto wan ip122.77.241.4/24 del operador. enrutador, porque cuando los paquetes de datos LAN en la red de área local finalmente se reenvían a la red pública, su IP de origen se reemplazará con la IP del puerto wan del enrutador conectado a la red pública, por lo que los hosts en estas LAN compartir la misma ip de red pública. Al mismo tiempo, lo mismo ocurre con los dos hosts cliente de la derecha, también compartirán la misma IP de red pública, que es el puerto Wan ip122.77.241.5/24 del enrutador conectado a la red pública en el bien

inserte la descripción de la imagen aquí

4. ¿Los hosts de la LAN compartirán una IP pública?

¡Es seguro que sucederá! Porque sabemos que el problema de las direcciones IPv4 insuficientes se puede resolver confiando en el hecho de que la dirección IP de la LAN es una dirección IP privada que se puede utilizar en grandes cantidades y con alta frecuencia, entonces los hosts correspondientes a estas IP privadas Las direcciones deben poder acceder a Internet, es decir, estos hosts deben tener una IP de red pública coincidente, y la IP de la red pública es solo de aproximadamente 4,2 mil millones, por lo que muchos hosts en la LAN deben compartir una IP de red pública.
La siguiente es la IP de la red pública que encontré cuando mi dispositivo móvil y mi computadora portátil estaban conectados a la LAN de mi casa. Es el resultado de que mi teléfono móvil usó la misma consulta de la URL de la IP de la red pública. Puede ver que la IP de la red pública La dirección de mi dispositivo móvil es la misma que la de mi computadora portátil. También revisé el teléfono móvil de mi hermana y el teléfono móvil de mi madre. ¡La IP de la red es la misma que la IP de la red pública de mis dos dispositivos!

inserte la descripción de la imagen aquí

5. ¿Pueden los hosts de dos LAN comunicarse directamente?

Los hosts en las dos LAN no pueden comunicarse directamente mediante el envío de datagramas, porque hemos dicho que la IP de destino debe ser una IP de red pública en la mayoría de los casos, y habrá una gran cantidad de IP privadas duplicadas en los hosts de la LAN. el datagrama Si la IP de destino es una IP privada, entonces el datagrama en realidad no sabe a dónde ir, porque puede haber muchas LAN en la red donde la dirección del host es la IP privada de destino del datagrama, por lo que llamamos al siguientes dos LAN. No hay forma de que el host se comunique directamente.
inserte la descripción de la imagen aquí

6. ¿Cuál es la lógica de chatear con mis amigos en QQ? ¡Mis amigos y yo estamos todos en la LAN!

De hecho, antes escribimos un código de comunicación de socket para una versión UDP de la sala de chat, y su lógica es similar a la de QQ.
El cliente y el servidor QQ que utilizamos están escritos por Tencent. Cuando iniciamos sesión en QQ, el proceso del cliente local en realidad establece una conexión TCP con el servidor QQ de Tencent. Si envía un mensaje a su amigo en este momento, de hecho, no está enviando el mensaje directamente a su amigo, el mensaje debe enviarse primero al servidor de Tencent, y luego el servidor de Tencent enviará el mensaje que le envió a su amigo, si su amigo está en línea Estado y también estableció una conexión con el servidor, entonces su amigo recibirá inmediatamente el mensaje reenviado por el servidor, si su amigo no está en línea, el servidor almacenará en caché este lote de mensajes primero y esperará hasta la próxima vez que su amigo se conecte, el servidor El mensaje que envió antes ser enviado a tus amigos que ya están en línea.
El método push también es muy simple: siempre que inicie sesión en QQ, el servidor establecerá una conexión con usted y luego habrá sockfd1 que puede usarse para la comunicación entre ustedes. El servidor solo necesita almacenar temporalmente su mensaje. en un búfer. Cuando también se establezca la conexión entre el amigo y el servicio, el cliente QQ y el servidor de su amigo también utilizarán sockfd2 para la comunicación. El servidor solo necesita llamar a los datos en el búfer llamando a la interfaz de envío y el parámetro sockfd2 para enviar el mensaje a tus amigos allí.

Entonces decimos que los clientes en la red de área local no pueden comunicarse directamente, y el servidor host en la red pública debe realizar indirectamente la comunicación entre ustedes dos. Por ejemplo, los dos hosts en la figura han establecido una conexión TCP con el servidor Para la comunicación entre hosts, el servidor actúa como una estación de transferencia de mensajes y envía el mensaje a sus amigos. Entonces, desde un host de cliente al servidor, y desde el servidor de regreso al host de cliente, esta ruta es única, pero los hosts de clientes no son únicos porque todas sus direcciones IP son IP privadas.
inserte la descripción de la imagen aquí

7.
Resumen:
(1) Los paquetes de datos en la red interna se pueden enviar a la red pública, dependiendo de la IP de destino y la tabla de enrutamiento de cada nodo de la red.
(2) NAT reemplaza la IP de origen para resolver el problema de direcciones IPv4 insuficientes, de modo que los hosts en la LAN puedan compartir una dirección IPv4 (3) Cuando el paquete de datos se
devuelve desde el servidor de la red pública, depende de NAPT , no solo como fuente El reemplazo de ip también reemplazará el puerto, de modo que los paquetes de datos puedan enviarse desde la red interna al servidor en la red pública y también puedan devolverse.

5. Enrutamiento de paquetes IP (IP de destino + tabla de enrutamiento de nodos)

1.
El enrutamiento es el trabajo central más importante de la capa IP. El enrutamiento es en realidad el proceso de pedir direcciones salto a salto. En el proceso de pedir direcciones, el lugar al que vamos es, por supuesto, el más importante y el lugar al que vamos. van es en realidad la IP de destino. En la mayoría de los casos, la IP de destino es una IP de red pública. Si es una IP de red interna, es probable que solo se comunique entre hosts de red interna en un entorno de red interna, como una militar. Red. Para garantizar la seguridad de la red y la información confidencial de la red militar. Por seguridad, la red militar estará aislada de Internet. La comunicación interna de la red militar generalmente utiliza direcciones IP privadas, es decir, la IP de la intranet. Estas Los mensajes sólo se reenviarán dentro de la red militar y no se enrutarán a través de Internet.
Volviendo al tema, cuando se enruta el mensaje, en realidad equivale a preguntarle al nodo, quiero ir al host de destino, ¿qué debo hacer a continuación? Cada nodo en la red tiene su propia capa de red y mantiene una tabla de enrutamiento. Después de que cada nodo consulta la tabla de enrutamiento, el nodo le indicará al paquete de datos cómo ir. Generalmente, hay dos tipos de resultados de consulta para los nodos, uno es para decirle al paquete de datos que puedes ir a ese enrutador A en el siguiente paso. No sé cómo ir más tarde. Puedes preguntarle a A en ese momento. La otra es que no sé cómo debes ir. , pero puedes preguntarle al enrutador B para ver si sabe cómo llegar allí. Estas dos situaciones en realidad corresponden a dos resultados de consulta de la tabla de enrutamiento. Una es que el nodo sí sabe que el siguiente salto del paquete de datos debe ser Bueno, la otra es que aunque el nodo no lo sabe, pero tiene una puerta de enlace predeterminada, el nodo entregará automáticamente el paquete de datos a la ubicación de la puerta de enlace predeterminada.

inserte la descripción de la imagen aquí

2.
De hecho, la capa IP enruta paquetes de datos y las dos partes más importantes son la IP de destino y la tabla de enrutamiento.
Echemos un vistazo a los componentes generales y a cada entrada de la tabla de enrutamiento. Cabe señalar que no solo los enrutadores tienen tablas de enrutamiento, sino que cualquier nodo de la red tiene tablas de enrutamiento, porque los hosts y los enrutadores tienen sus propias capas de red.
En primer lugar, mi propio host de servidor en la nube tiene una tabla de enrutamiento. Esta tabla de enrutamiento es muy simple, con solo tres entradas. La primera entrada es en realidad la puerta de enlace predeterminada que mencionamos anteriormente. ¿A qué host enviar el paquete de datos? Puerta de enlace se refiere a la dirección de la puerta de enlace. Generalmente, la red conectada directamente a la tarjeta de red local no necesita una dirección de puerta de enlace. Puede haber varias tarjetas de red local, por lo que hay muchas redes conectadas directamente que no necesitan una puerta de enlace. Para un campo, los datos El paquete se puede enviar directamente a la red conectada directamente a través de la interfaz correspondiente a la tarjeta de red. La segunda entrada es en realidad el segmento de red donde se encuentra mi servidor en la nube. La interfaz de la tarjeta de red en sí está conectada a este segmento de red. La tercera entrada es la dirección de enlace local, que generalmente se usa en la red de área local. y la dirección de loopback local son diferentes, el loopback local se usa para este host y la dirección de enlace local se puede usar para la comunicación entre varios dispositivos en la red de área local. La dirección de enlace local se genera en función de la dirección MAC de El dispositivo, sin depender de DHCP, generalmente se configura automáticamente.

inserte la descripción de la imagen aquí

Las siguientes dos interfaces de red corresponden a mis tarjetas de red inalámbrica y cableada respectivamente.
inserte la descripción de la imagen aquí

3.
Echemos un vistazo a cómo una tabla de enrutamiento específica reenvía datagramas.
Cuando el enrutador recibe un datagrama para ser reenviado y enrutado, el enrutador atravesará sus propias entradas de enrutamiento, tomará la dirección IP de destino y Genmask en la entrada de enrutamiento para AND bit a bit, comparará el resultado AND bit a bit con el Destino, si son los Lo mismo, inicie La interfaz Iface correspondiente a esta entrada reenvía el datagrama al Destino.
Ejemplo 1: El resultado AND bit a bit del destino ip192.168.56.3 y 255.255.255.0 no coincide con la primera entrada de enrutamiento, luego continúa avanzando hasta la siguiente entrada de enrutamiento y, si se encuentra una coincidencia, el datagrama se envía desde la interfaz eth1 al host de destino 192.158.56.3, debido a que la red de destino 192.168.56.0 está conectada directamente al host actual, por lo que no es necesario reenviarla a través de un enrutador, se puede enviar directamente al host de destino Ejemplo 2
: Se puede decir que el destino ip202.10.1.2 es el mismo que el de las tres primeras rutas. Las entradas no coinciden hasta que se realiza un AND bit a bit en la Genmask de la última entrada de enrutamiento y se encuentra que el resultado del AND bit a bit es 0.0.0.0 En este momento, el datagrama se envía desde la interfaz eth0 de acuerdo con la entrada de enrutamiento predeterminada, y la dirección de destino es 192.168.10.1, esta dirección es el enrutador de salida de la LAN y el siguiente salto lo determinará la salida. enrutador comprobando su propia tabla de enrutamiento.
El número de red de destino del datagrama en realidad cambia constantemente, debido a que la máscara de subred de cada LAN que pasa por el proceso de enrutamiento es diferente, lo que debemos determinar es cuándo nuestra dirección IP y la máscara de subred Después del AND bit a bit, si es el igual que el Destino de la entrada, si es el mismo simplemente envíe el mensaje a la red de destino, por lo tanto, durante la transmisión del datagrama, el número de red de destino seguirá cambiando debido a las diferentes Genmasks de cada LAN. cambiar.

inserte la descripción de la imagen aquí

4.
En esta tabla de enrutamiento, se puede ver que hay tres interfaces Iface, dos interfaces Ethernet y una interfaz de loopback local, por lo que se puede ver que el host o enrutador correspondiente a esta tabla de enrutamiento en realidad está en dos Entre los dos LAN, una es 192.168.10.0 y la otra es 192.168.56.0. En estos dos segmentos de red diferentes, los nodos (como referirse colectivamente a hosts o enrutadores como nodos) tendrán diferentes direcciones IP privadas, por lo que podemos ver que el nodo es Probablemente equipado con dos tarjetas de red, correspondientes a las interfaces eth0 y eth1, conectadas directamente a dos segmentos de red diferentes. Las banderas de la puerta de enlace predeterminada son generalmente UG, U significa que está en uso y G significa la puerta de enlace predeterminada de la puerta de enlace. La característica más típica de la puerta de enlace predeterminada es que Genmask es todo 0

inserte la descripción de la imagen aquí

6. Fragmentación de paquetes IP

1. El impacto de MTU en el protocolo IP

1.
Lo que realmente se transmite entre el enrutador y el enrutador es de hecho un paquete IP, pero dentro de una LAN, lo que realmente se transmite es una trama MAC, lo que significa que lo que realmente se transmite en una LAN es una trama de datos, es decir, Por ejemplo, cada LAN se transmitirá en forma de tramas de datos. Después de alcanzar el siguiente salto en la LAN, la capa de red del siguiente salto determinará dónde debe estar el siguiente. Después de determinarlo, continúe usando los datos en el siguiente Las tramas de segmento de red se utilizan para la transmisión, por lo que lo que realmente se ejecuta en la línea de red son tramas de datos, no paquetes IP.
La capa de enlace de datos tiene un protocolo de trama MAC, y el común es el protocolo Ethernet. Ethernet tiene regulaciones de que la carga útil de una trama MAC no puede exceder los 1500 bytes de la MTU (unidad máxima de transmisión), y el mensaje IP puede determinar el tamaño. del tamaño de los datos transmitidos? No, es TCP el que controla el tamaño de los datos transmitidos. TCP está orientado a flujos de bytes. Puede controlar cuándo enviar datos y cuánto enviar al enviar. Es por eso que hay múltiples segmentos de datos en la ventana deslizante en lugar de un segmento de datos, porque la MTU limitará la carga útil de un solo paquete de datos a no más de 1500 bytes, por lo que cuando TCP envía segmentos de datos a través de la ventana deslizante, envía múltiples segmentos de datos en lugar de combinar múltiples segmentos de datos en uno grande segmento a enviar.
El campo tipo = 2 de la opción de encabezado TCP proporciona un campo para que ambas partes negocien el tamaño de MSS (tamaño máximo de segmento). Este tamaño de MSS es generalmente MTU-40, que es de 1460 bytes, y los 40 restados son en realidad Es el tamaño del encabezado TCP y el encabezado IP.

2.
Pero si TCP no controla el tamaño de un solo segmento de datos y necesita exceder los 1460 bytes, o incluso enviar 3000 bytes de datos, ¿qué debería hacer IP? IP dijo que la trama MAC no me permite pasarle el datagrama con más de 1500 bytes, y su TCP me está dando un segmento de datos tan grande ahora, ¿no me avergüenza esto?
TCP es como el líder de la empresa, IP es el administrador del proyecto y la capa MAC es el programador. El líder de la empresa dijo que ahora vamos a crear un software de chat similar a WeChat y que queremos competir con Tencent por los trabajos. . Continúe y hágalo, gerente de proyecto, el gerente de proyecto le dijo al programador, el líder dijo, le pidió que hiciera WeChat, puede hacerlo rápidamente, el programador dijo, no podemos hacerlo, le sugiero que contrate Otro Gao Ming, el director del proyecto es un felpudo de doble cara, el líder le pidió que hiciera esto. Como resultado, los programadores de nivel inferior dijeron que no podíamos hacerlo, por lo que el director del proyecto tiene que tener el suyo propio. soluciones? Por ejemplo, dígales a los programadores de nivel inferior, sé que nuestro proyecto es muy difícil, les aseguro que dividimos el progreso del proyecto en detalles más finos y cada vez que completen un progreso, informaré a los superiores. e ir a finanzas para recibir el premio Oro, el bono debe ser rico, y cuando el proyecto se implemente con éxito, pagaré a cada uno de los hermanos un sobre rojo por mi cuenta y luego solicitaré al líder de la empresa que le dé el hermanos unas vacaciones gratis de 3 días para relajarse ¿Qué os parece? Cuando el programador escuchó esto, dio dinero y dio información falsa, simplemente tomó el teclado y lo hizo, y mucho menos WeChat, y volvió a crear un navegador para nuestra empresa (es broma), ¡debe trabajar duro para la empresa!

3.
Lo anterior es un ejemplo de la vida, pero ¿cómo lo resuelve la capa IP real? La capa IP fragmentará el segmento de datos que TCP le entregó y, cuando el par lo reciba, volverá a ensamblar los paquetes fragmentados en su propia capa IP.
Por lo tanto, la fragmentación y ensamblaje de IP es el comportamiento de la propia capa IP, que está desacoplada de las capas superior e inferior, a la capa de enlace de datos y a la capa de transporte no les importa en absoluto, este es puramente el comportamiento de IP en sí.

2. ¿Cómo fragmentar y ensamblar?

1.
De hecho, para resolver cómo fragmentar y ensamblar, este problema se puede subdividir en varios problemas pequeños, después de resolver estos pequeños problemas, este gran problema naturalmente se resolverá.
(1) ¿Cómo juzgar que un paquete está fragmentado?
Entre los indicadores de 3 bits, el primer campo está reservado, el segundo bit indica que la fragmentación está prohibida y el tercer bit indica más indicadores de fragmentación. Si el tercer bit se establece en 1, el mensaje se fragmentará y el informe fragmentado En el texto, excepto el último fragmento, todos los demás fragmentos son 1 y solo el tercer bit del último fragmento es 0.
Entonces, cuando se recibe un mensaje, si el bit de bandera de más fragmentos del mensaje es 1, significa que el mensaje es un mensaje de fragmentos, si el bit de bandera de más fragmentos del mensaje es 0, pero al mismo tiempo, es 13- El desplazamiento del fragmento de bit es mayor que 0, lo que significa que este mensaje es el último mensaje fragmentado del fragmento
(2) ¿Cómo se pueden identificar los fragmentos del mismo mensaje?
Identificador de 16 bits, todos los fragmentos del mismo datagrama tendrán el mismo identificador de 16 bits, porque estos fragmentos provienen originalmente de un datagrama, cada datagrama tiene su propio campo de identificador de 16 bits, que naturalmente es un segmento de datos. Después de fragmentarlo, el valor del campo de identificación de cada fragmento es el mismo.
(3) ¿Qué fragmento es el primero y cuál el último? ¿Se ha recogido o se ha perdido?
Desplazamiento de segmento de 13 bits, que indica el desplazamiento de la carga útil del mensaje en el segmento de datos original, para que podamos determinar el orden de los fragmentos y si se reciben todos por el tamaño del desplazamiento y la longitud del mensaje en sí. perdido
(4) ¿Cómo volver a ensamblar el mensaje fragmentado en un mensaje completo?
Los mensajes fragmentados que se recibirán se pueden ordenar en orden ascendente según el tamaño del desplazamiento primero, y el tamaño del desplazamiento del último mensaje debe ser igual a la suma de las longitudes de uno o más mensajes anteriores en el segmento de datos original.
(5) ¿Cómo asegurarme de que el mensaje que ensamblo sea correcto?
Después de combinar los fragmentos recibidos, el encabezado del mensaje combinado tiene una suma de verificación de encabezado IP de 16 bits. Además, el encabezado TCP del segmento TCP después de eliminar el encabezado IP y entregarlo hacia arriba también tendrá su propio 16 bits. Suma de comprobación del encabezado, a través de la cual se puede juzgar si el mensaje ensamblado es correcto.

inserte la descripción de la imagen aquí

3. ¿El impacto de la fragmentación en TCP y UDP? (aumentando la probabilidad general de pérdida de paquetes)

1.
Lo primero que hay que explicar es que la fragmentación no es buena, ¡especialmente cuando se comunica a través de redes! Por eso no está en la corriente principal.
En la mayoría de los casos, el segmento de paquete entregado por la capa de transporte no excederá MTU-40 y los paquetes IP no se fragmentarán ni ensamblarán. Entonces, en la mayoría de los casos, los líderes son buenos líderes y los programadores son buenos programadores.

2.
Un mensaje se divide en varios fragmentos. Si un fragmento se pierde durante la transmisión, el receptor no podrá ensamblar los fragmentos y el receptor descartará directamente todos los fragmentos recopilados. , y la capa TCP del remitente descubre que hay Si no hay un segmento de respuesta de confirmación durante mucho tiempo, se activará el mecanismo de retransmisión de tiempo de espera y se reenviará un segmento completo durante la retransmisión, y el segmento se enviará a la capa de red del receptor. Lleve a cabo la fragmentación y vuelva a realizar la proceso de fragmentación y ensamblaje de la propiedad intelectual.
Entonces, suponiendo que la probabilidad de que un segmento de mensaje llegue a la otra parte es del 99%, si el segmento de mensaje se divide en tres partes, entonces la probabilidad general de pérdida de paquetes es del 99% × 99% × 99%, que es aproximadamente un 97% de probabilidad. Por lo tanto, la fragmentación aumentará la probabilidad de pérdida general de paquetes. Generalmente no se recomienda que la capa de transporte envíe un segmento demasiado grande. El tamaño del campo MSS debe establecerse de manera razonable y el valor de este campo debe negociarse durante el proceso. apretón de manos de tres vías.

3.
A continuación, dividamos un mensaje IP específico. Supongamos que un mensaje IP tiene un tamaño de 3020 bytes y el primer fragmento es 1500. Al mismo tiempo, este fragmento contiene los primeros 20 caracteres del mensaje IP original. Campo de encabezado de sección , la carga útil del segundo fragmento solo puede ser 1480B en la carga útil del mensaje IP original y luego encapsular un nuevo encabezado IP para él, por lo que el mensaje IP original solo puede ser Si quedan los últimos 40B, solo necesita ser fragmentado nuevamente, y también se encapsula un nuevo encabezado IP delante de los últimos 40B.

4. Divide un paquete IP tú mismo

Supongo que te gusta

Origin blog.csdn.net/erridjsis/article/details/132066805
Recomendado
Clasificación