Principios de red (TCP/UDP)

Tabla de contenido

1. Fundación de la red

1. dirección IP

 2. Número de puerto

3. Acuerdo

4. Modelo OSI de siete capas

2. Protocolo UDP

2.1 Formato final del protocolo UDP:

2.2 Características de UDP

3. Protocolo TCP

 3.1 Formato de segmento de protocolo TCP

 3.2 Principio de TCP

(1) Mecanismo de respuesta de confirmación

(2) Mecanismo de retransmisión de tiempo de espera

(3) Tres apretones de manos, cuatro ondas

(4) ventana corredera 

(5) control de flujo

(6) Control de congestión

(7) Respuesta retrasada

 4. Comparación TCP/UDP


1. Fundación de la red

1. dirección IP

Creo que todo el mundo está familiarizado con la dirección IP, pero para aquellos que son nuevos en Internet, todavía es un concepto muy ignorante.Entendamos juntos algunos principios básicos de la red;

concepto:

Las direcciones IP se utilizan principalmente para identificar las direcciones de red de los hosts de red y otros dispositivos de red (como los enrutadores). En pocas palabras, la dirección IP se usa para ubicar la dirección de red del host;

Por ejemplo: la dirección IP es equivalente a la dirección de entrega de la entrega urgente, aunque el host está ubicado, todavía hay un problema con la dirección IP, es decir, a qué proceso queremos transferir los datos para recibir, lo que requiere la número de puerto;

 2. Número de puerto

Concepto: en la comunicación de red, la dirección IP se utiliza para identificar la dirección de red del host y el número de puerto puede identificar el proceso de envío y recepción de datos en el host. En pocas palabras: el número de puerto se utiliza para ubicar el proceso en el host.

Por ejemplo: se menciona anteriormente que la dirección IP es la dirección de entrega de la entrega urgente, luego el número de puerto es el destinatario designado para garantizar que los datos transmitidos puedan llegar al punto designado con precisión;

Nota sobre los números de puerto:

Un proceso puede vincularse a múltiples números de puerto, pero múltiples procesos no pueden vincularse al mismo número de puerto; después de que se inicia un proceso, el sistema asignará aleatoriamente un puerto;

3. Acuerdo

Concepto: protocolo, la abreviatura de protocolo de red, protocolo de red es un conjunto de convenciones y reglas que deben seguir todos los dispositivos de red que se comunican en red (es decir, la transmisión de datos de red). Por ejemplo, cómo establecer una conexión, cómo identificarse entre sí, etc. Solo siguiendo esta convención pueden las computadoras comunicarse entre sí.

¿Por qué necesita un acuerdo?

En pocas palabras, es un conjunto de estándares. Debido a que las computadoras tienen diferentes sistemas operativos y versiones, y el hardware producido por muchos fabricantes es diferente, para permitir que estos dispositivos mantengan una comunicación normal, se acuerda un estándar. , este conjunto de normas se denomina protocolo;

Números de puerto predeterminados comunes:

  • Puerto 22: reservado para que el servidor SSH enlace el protocolo SSH
  • Puerto 21: Reservado para que el servidor FTP enlace el protocolo FTP
  • Puerto 23: reservado para el protocolo Telnet de enlace del servidor Telnet
  • Puerto 80: reservado para que el servidor HTTP enlace el protocolo HTTP
  • Puerto 443: reservado para que el servidor HTTPS enlace el protocolo HTTPS

4. Modelo OSI de siete capas

OSI es la abreviatura de Open System Interconnection, traducido como "Open System Interconnection"; el modelo OSI divide el trabajo de comunicación de red en 7 capas, de abajo hacia arriba son capa física, capa de enlace de datos, capa de red, capa de transporte, capa de sesión , capa de presentación y capa de aplicación;

OSI es solo un modelo conceptual y teórico, su desventaja es que hay demasiadas capas, lo que aumenta la complejidad del trabajo en red, por lo que no tiene una aplicación a gran escala. Más tarde, la gente simplificó el OSI y fusionó algunas capas. Al final, solo se conservaron 4 capas. De abajo hacia arriba, son la capa de interfaz, la capa de red, la capa de transporte y la capa de aplicación. Este es el famoso modelo TCP/IP;

Tome el modelo TCP/IP como ejemplo:

  • Capa de aplicación: responsable de la comunicación entre aplicaciones, como la transferencia simple de correo electrónico (SMTP), el protocolo de transferencia de archivos (FTP), el protocolo de acceso remoto a la red (Telnet), etc. Nuestra programación de red está dirigida principalmente a la capa de aplicación.
  • Capa de transporte: Responsable de la transmisión de datos entre dos hosts. Como el Protocolo de control de transmisión (TCP), que puede garantizar que los datos se envíen de manera confiable desde el host de origen al host de destino.
  • Por ejemplo: la capa de transporte solo se preocupa por la dirección de comunicación entre dos hosts, por ejemplo, cuando compramos en línea, de Beijing a Shanghái, no me importa cómo se realiza el transporte en el medio, solo me importa el inicio punto y el punto final;
  • Capa de red: Responsable de la gestión de direcciones y enrutamiento. Por ejemplo, en el protocolo IP, un host se identifica mediante una dirección IP y se planifica una línea de transmisión de datos (ruta) entre dos hosts a través de una tabla de enrutamiento. Los enrutadores funcionan en la capa de red.
  • Por ejemplo: todavía tome las compras como ejemplo, la capa de red se preocupa por cómo tomar la ruta, por ejemplo, hay muchas rutas de Beijing a Shanghái;
  • Capa de enlace de datos: Responsable de la transmisión e identificación de tramas de datos entre dispositivos. Por ejemplo, el controlador del dispositivo de tarjeta de red, sincronización de cuadros (es decir, la señal que se detecta desde la línea de red se cuenta como el comienzo de un nuevo cuadro), detección de conflictos (retransmisión automática si se detecta un conflicto), error de datos comprobando, etc Existen estándares como Ethernet, Token Ring y LAN inalámbrica. Un interruptor (Switch) funciona en la capa de enlace de datos.
  • Por ejemplo: la capa de enlace de datos se ocupa de cómo deben ir los nodos adyacentes entre las rutas. Por ejemplo, Beijing a Shanghái necesita pasar por varias ciudades, y las rutas entre estas ciudades son asunto de la capa de enlace de datos. de;
  • Capa física: responsable de la transmisión de señales ópticas/eléctricas. Por ejemplo, el cable de red (par trenzado) comúnmente utilizado en Ethernet, el cable coaxial utilizado en los primeros Ethernet (ahora utilizado principalmente en la televisión por cable), la fibra óptica y la red inalámbrica wifi actual que utiliza ondas electromagnéticas pertenecen al concepto de la capa fisica. La capacidad de la capa física determina la tasa de transmisión máxima, la distancia de transmisión, la antiinterferencia, etc. Hub (Hub) trabaja en la capa física

Aviso:

  • La comunicación debe estar al mismo nivel. Por ejemplo, la capa de aplicación de la computadora A y la capa de transporte de la computadora B no pueden comunicarse porque no están al mismo nivel, y el desempaquetado de datos encontrará problemas.
  • Cada capa debe funcionar igual, es decir, tener exactamente el mismo modelo de red. Si los modelos de red son todos diferentes, habrá caos y nadie conocerá a nadie.
  • Los datos solo se pueden transmitir capa por capa y no pueden saltar capas.
  • Cada capa puede utilizar los servicios proporcionados por la capa inferior y proporcionar servicios a la capa superior.

2. Protocolo UDP

UDP (Protocolo de datagramas de usuario) es un protocolo simple de capa de transporte orientado a mensajes;

2.1 Formato final del protocolo UDP:

Puerto de origen: los datos se envían desde aquí;

Puerto de destino: hacia donde van los datos;

Longitud: identifica la longitud del encabezado UDP, incluida la longitud del encabezado y la longitud de los datos; la longitud máxima de un mensaje UDP es de 64 KB;

Checksum: El significado de su existencia es juzgar, si el checksum es incorrecto, se descartará directamente;


2.2 Características de UDP

(1) Sin conexión

El proceso de transmisión UDP es similar al envío de una carta, se puede transmitir después de conocer el número de puerto y la dirección IP de la otra parte, y no es necesario establecer una conexión.

(2) Poco confiable

Sin ningún mecanismo de seguridad, después de que el remitente envía el datagrama, si el segmento no se puede enviar a la otra parte debido a una falla en la red, la capa de protocolo UDP no devolverá ningún mensaje de error a la capa de aplicación;

(3) orientado a datagramas

La capa de aplicación envía el UDP la longitud del mensaje, y el UDP lo envía tal cual, sin dividir ni fusionar;


3. Protocolo TCP

TCP (Protocolo de control de transmisión) es un protocolo de capa de transporte basado en flujo de bytes, confiable y orientado a la conexión.

 3.1 Formato de segmento de protocolo TCP


 3.2 Principio de TCP

(1) Mecanismo de respuesta de confirmación

    Cuando el remitente envía datos, como se muestra en la figura anterior, al enviar datos por primera vez, los datos incluyen un encabezado y una carga útil. El encabezado es un número de serie y la carga útil contiene los datos que se enviarán. Al enviar por la primera vez, el receptor aceptará la respuesta y enviará Devolver el número de serie de confirmación al remitente para solicitar los siguientes datos, y decirle al remitente qué datos he recibido a través del número de serie de confirmación de ack;

    A la hora de confirmar la respuesta, suele ir acompañada de la situación de que los datos enviados primero llegan primero y los datos enviados después llegan primero. No te preocupes por esta situación. Para TCP, nos ayudará. Todo el equipo, hay una área de búfer de recepción dentro de TCP, que es un espacio de memoria en el kernel.Cuando hay un desorden, TCP nos ayudará a organizar los mensajes recibidos en esta área de búfer de acuerdo con el número de serie;

(2) Mecanismo de retransmisión de tiempo de espera

En el proceso de transmisión de la red, es inevitable que ocurra una "pérdida de paquetes", luego TCP adoptará un mecanismo de retransmisión para que los paquetes de datos enviados puedan llegar al destino con precisión. En la pérdida de paquetes, generalmente hay dos tipos: Condición:

1. Por primera vez, los datos del remitente se pierden directamente y el receptor no llega, por lo que no se enviará un acuse de recibo;

 

2. El receptor ha recibido los datos, pero se pierde el acuse de recibo devuelto;

En este caso, hay un problema. Cuando se pierde el ACK devuelto por el receptor, el remitente continuará enviando, por lo que el receptor siempre recibirá datos duplicados. Esto no es un problema menor. Tomemos como ejemplo el pago móvil. originalmente tenía que pagar 1 yuan, pero debido a que el destinatario de la pérdida del paquete no respondió, ¡el pago se deducirá todo el tiempo! ! !

Por supuesto, la función de TCP es muy poderosa, y TCP tomará las medidas correspondientes para ayudarnos a resolver este problema. TCP nos ayudará a deduplicar de acuerdo con el número de serie de los datos recibidos en el búfer de recepción, para garantizar que la lectura ¡Los datos no se duplicarán! ! !

En el proceso de retransmisión, también puede ocurrir la pérdida de paquetes, y el paquete perdido continúa siendo retransmitido, pero cada vez que se pierde un paquete, el tiempo de espera de tiempo de espera será más largo, TCP pensará que la retransmisión es inútil, por lo que simplemente se da por vencido. (Este es un problema de red grave. Si no se obtiene el acuse de recibo después de varias retransmisiones consecutivas, TCP intentará restablecer la conexión. Si la conexión falla, TCP cerrará la conexión y abandonará la comunicación de red;

Pregunta de la entrevista: ¿Cómo logra TCP la confiabilidad?

Respuesta: respuesta de confirmación + retransmisión de tiempo de espera

El apretón de manos de tres vías y el apretón de manos de cuatro vías no se pueden responder aquí. Esto está relacionado con la conexión, no con la confiabilidad;

(3) Tres apretones de manos, cuatro ondas

TCP establece una conexión: protocolo de enlace de tres vías

El llamado apretón de manos significa que las partes de la comunicación realizan una interacción de red, lo que equivale a establecer una relación entre el cliente y el servidor a través de tres interacciones;

proceso:  

1. El primer apretón de manos: el cliente envía un mensaje SYN (segmento de sincronización) al servidor.

  2. El segundo apretón de manos: después de recibir el mensaje SYN, el servidor responderá con un mensaje SYN+ACK.

  3. El tercer apretón de manos: después de recibir el mensaje SYN+ACK, el cliente responderá con un mensaje ACK.

  4. Después de que el servidor recibe el mensaje ACK, se establece el protocolo de enlace de tres vías.


El papel del apretón de manos de tres vías:

En pocas palabras, es verificar si las respectivas capacidades de envío y recepción del cliente y el servidor son normales;


Nota: el kernel completa automáticamente el protocolo de enlace de tres vías y la aplicación no puede intervenir;

Desconexión TCP: cuatro ondas

proceso:

1. La primera ola: el cliente envía un mensaje FIN y se especifica un número de secuencia en el mensaje. En este punto, el cliente se encuentra en el estado FIN_WAIT1.

2. El segundo protocolo de enlace: después de recibir el FIN, el servidor enviará un mensaje ACK y tomará el valor del número de serie del cliente + 1 como el valor del número de serie del mensaje ACK, lo que indica que se ha recibido el mensaje del cliente. El servidor está en el estado CLOSE_WAIT.

3. La tercera ola: si el servidor también quiere desconectarse, enviará un mensaje FIN y especificará un número de serie, al igual que la primera ola del cliente. En este momento, el servidor se encuentra en el estado LAST_ACK.

4. Wave por cuarta vez: después de que el cliente recibe el FIN, también envía un mensaje ACK como respuesta y usa el valor del número de serie del servidor + 1 como el valor del número de serie de su propio mensaje ACK. , el cliente está en el estado TIME_WAIT. Toma un tiempo asegurarse de que el servidor ingrese al estado CERRADO después de recibir su propio mensaje ACK

5. Después de que el servidor recibe el mensaje ACK, está en la conexión cerrada y está en el estado CERRADO.


En el protocolo de enlace de tres vías, el ACK y el SYN devueltos se combinan y se envían al cliente, mientras que el FIN y el ACK en el protocolo de enlace de cuatro vías no se pueden combinar ni enviar. Esto se debe a que el ACK y el SYN en el protocolo de enlace de tres vías se activan al mismo tiempo. Lo completa el kernel, y el ACK y FIN en las cuatro manos agitadas se activan en diferentes momentos. El ACK se completa en el kernel, y el FIN está controlado por el código de la aplicación. El FIN solo se activa cuando se llama al método de cierre del socket. ;

(4) ventana corredera 

Como se mencionó anteriormente, cuando el remitente envía un segmento de datos, debe dar un ACK para confirmar la respuesta, y el siguiente segmento de datos se enviará después de recibir el ACK. Si queremos enviar una gran cantidad de segmentos de datos, entonces el remitente necesita uno por uno Esperando ACK, que desperdicia mucho tiempo, por lo que para acortar el tiempo de espera, es necesario enviar por lotes para mejorar la eficiencia del envío;

 Después de la transferencia masiva:

El proceso de transferencia de datos en lotes anterior se denomina ventana deslizante. El envío por lotes no es una tontería, pero esperar un ACK después de enviar hasta cierto punto. Llamamos a los datos en espera para el envío por lotes el "tamaño de ventana";

(5) control de flujo

La ventana deslizante mencionada anteriormente es para hacer que la transmisión sea más eficiente. Cuanto más grande sea la ventana, más datos se enviarán en lotes y la eficiencia general mejorará. Sin embargo, cuanto más rápido mejor, si la transmisión es demasiado rápida, será muy lento Es fácil llenar el búfer de recepción En este momento, si envía datos nuevamente, es fácil perder paquetes TCP también tiene un mecanismo para limitar la velocidad del remitente a través del control de flujo;


Entonces, ¿cómo se controla? ? ?

Dejamos que el mensaje ACK lleve un campo de "tamaño de ventana". Cuando el ACK es 1, es un mensaje ACK en este momento, y el campo de tamaño de ventana tendrá efecto en este momento. Aquí, el espacio restante del búfer de recepción es utilizado como el tamaño de la ventana;

 Cuando el remitente descubre que la otra parte está llena, suspenderá el envío, pero no se detendrá todo el tiempo. Activará un mensaje de detección de ventana de vez en cuando. Si encuentra que el búfer tiene capacidad, continuará para enviar en lotes;

(6) Control de congestión

Todos sabemos que a menudo hay muchos conmutadores y enrutadores entre el cliente y el servidor. Obviamente, en la ruta de transmisión, si algún dispositivo en el medio tiene un problema, la velocidad de transmisión se verá afectada en cierta medida; el papel de la congestión control Es para medir la capacidad de transmisión de los nodos intermedios;

El control de congestión es encontrar una tasa de envío adecuada a través de experimentos; al principio, envíe a una tasa pequeña, si no hay pérdida de paquetes, puede aumentar la tasa adecuadamente, si el paquete se pierde, reduzca la tasa; finalmente Obtenga una tasa adecuada tasa de envío, que en realidad es un proceso de equilibrio dinámico;

 

(7) Respuesta retrasada

Se mencionó anteriormente que el receptor necesita devolver ACK al remitente. La respuesta retrasada aquí no es enviar el ACK inmediatamente, sino esperar un tiempo antes de enviarlo. La ventaja de esto es que el tamaño de la ventana se puede aumentar, Debido a que la respuesta demorada, la aplicación consume un lote de datos del búfer de recepción y, al mismo tiempo, también puede aumentar la tasa de envío del remitente;

Dos formas de retrasar la respuesta en TCP:

  • Límite de cantidad: responde cada N paquetes;
  • Límite de tiempo: Responda una vez cuando se exceda el tiempo máximo de demora;

 4. Comparación TCP/UDP

El mismo punto: tanto TCP como UDP están por encima de la capa de red, y el protocolo de la capa de transporte puede proteger la transmisión de la capa de red. Ambas partes necesitan abrir puertos para la comunicación, y existen tecnologías de multiplexación y demultiplexación tanto en TCP como en UDP. ;

La diferencia: TCP es una transmisión confiable, UDP es una transmisión no confiable;

Escenas a utilizar:

En la mayoría de los escenarios, se puede usar TCP. Para escenarios con requisitos de alta eficiencia pero bajos requisitos de confiabilidad, se puede usar UDP. Sin embargo, en el análisis final, aún es necesario elegir según las necesidades específicas;

Supongo que te gusta

Origin blog.csdn.net/m0_63635730/article/details/130219103
Recomendado
Clasificación