Redes informáticas (TCP/UDP)

UDP

Aprender un protocolo es a menudo el estudio del formato del mensaje.

Formato del lado del protocolo UDP

inserte la descripción de la imagen aquí

Longitud UDP de 16 bits, que indica la longitud máxima de todo el datagrama (encabezado UDP + datos UDP);
si la suma de comprobación es incorrecta, se descartará directamente;
número de puerto de origen: número de puerto del remitente Número de
puerto de destino: número de puerto del receptor
Longitud UDP : La suma de la longitud de todo el encabezado UDP y la longitud de la suma de
verificación de datos: detecta si hay un error en el paquete de datos UDP durante la transmisión y descarta el error.
inserte la descripción de la imagen aquí

¿Puedes cambiar el puerto aquí para UDP a algo así como 4 bytes?

No puedo cambiarlo...
La longitud del mensaje es de 2 bytes, y un UDP es como máximo 65535 => 64k

Características UDP

1.无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接.
2.不可靠:没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息.
3.面向数据报:应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并.
4.缓冲区:UDP只有接收缓冲区,没有发送缓冲区.
5.全双工:UDP的socket既能读,也能写.
6.大小受限:UDP协议首部中有一个16位的最大长度。也就是说一个UDP能传输的数据最大长度是64K(包含UDP首部).

TCP

Formato del lado del protocolo TCP

inserte la descripción de la imagen aquí

Número de puerto de origen: número de puerto del remitente

Número de puerto de destino: número de puerto del receptor

Número de serie: la ubicación de los datos enviados. El tamaño de los bytes de datos se acumula cada vez que se envían datos.

Número de secuencia de confirmación: el número de secuencia de los datos que se deben recibir la próxima vez.

Longitud del encabezado: indica cuántos bits de 32 bits (cuántos 4 bytes hay) en el encabezado TCP, por lo que la longitud máxima del encabezado TCP es 15 * 4 = 60

Reservado: para futuras expansiones, su longitud es de 4 bits, generalmente se establece en 0. Incluso si el paquete recibido no es 0 en este campo, no se descartará

inserte la descripción de la imagen aquí

Estos seis bits de bandera son los campos centrales del mensaje TCP:
URG: cuando es 1, indica los datos en el paquete que deben procesarse con urgencia
Cuando ACK: cuando es 1, el campo de la respuesta de confirmación se vuelve válido
PSH: cuando es 1, debe ser Los datos recibidos se transmiten inmediatamente al protocolo de aplicación de la capa superior. Cuando es 0, no es necesario transmitirlo inmediatamente, pero el
RST se almacena en caché primero: cuando es 1, significa que hay una anomalía en la conexión con el TCP, y la conexión debe desconectarse a la fuerza, y el segmento
SYN se reinicia: cuando es 1, significa que quiere establecer una conexión. llamado segmento de sincronización
FIN: cuando es 1, significa que no habrá más datos para enviar, y se espera que la conexión se desconecte.La bandera FIN es el segmento final

Tamaño de la ventana: notifique el tamaño de los datos (bytes de 8 bits) que se pueden recibir desde la posición a la que apunta el número de reconocimiento en el mismo encabezado TCP.

Suma de verificación: el propósito es detectar cualquier cambio en el encabezado TCP y los datos entre el remitente y el receptor. Si el receptor detecta un error de suma de verificación, el segmento TCP simplemente se descarta.

Puntero de emergencia: válido cuando el bit de control URG es 1 (puede tener o no, puede haber uno o más)

Características de TCP

1.有连接
2.可靠
3.面向字节流
4.缓冲区:TCP有接收缓冲区,有发送缓冲区.
5.全双工
6.大小不受限

reconocer respuesta

El mecanismo central para garantizar una transmisión confiable. Después de que el remitente envía los datos, puede saber si la otra parte los ha recibido.
La clave es que el receptor devuelve un mensaje de reconocimiento (ACK, acuse de recibo) al remitente después de recibir el mensaje, indicando que lo ha recibido.
Por ejemplo:
Un compañero envía un mensaje al compañero B:
inserte la descripción de la imagen aquí

retransmisión de tiempo de espera

Esto es equivalente a complementar la respuesta de reconocimiento. La respuesta de reconocimiento es cuando la red es normal y se notifica al remitente a través de ACK que lo he recibido. Si hay una pérdida de paquete, el mecanismo de retransmisión de tiempo de espera jugará un papel.
这主要是发送端没发送成功,还有接收端没应答成功,都会触发重传....
inserte la descripción de la imagen aquí

En circunstancias normales, la probabilidad de pérdida de dos paquetes consecutivos sigue siendo muy baja. Asumiendo que la probabilidad de pérdida de paquetes es del 10%, dos veces consecutivas es 10% * 10% => 1%. Si la retransmisión falla todo el tiempo, no se repetirá sin cesar. Significa que la red puede haber encontrado problemas graves en este momento, y solo puede darse por vencido (desconectar automáticamente la conexión TCP)

gestión de conexiones

Este también es un mecanismo para que TCP asegure la confiabilidad...
1) Cómo establecer una conexión:
三次握手:
inserte la descripción de la imagen aquí

¿Cuál es el uso del apretón de manos de tres vías?¿Qué tiene que ver con la confiabilidad?

El apretón de manos de tres vías es equivalente a "tirar piedras para pedir direcciones". Compruebe si la situación actual de la red cumple con las condiciones básicas para una transmisión confiable. Si su red es muy pobre en este momento, forzar la transmisión TCP también implicará una gran cantidad de pérdida de paquete Más específicamente, se puede considerar que el apretón de manos de tres vías en realidad está probando los dos lados de la comunicación, si la capacidad de envío y la capacidad de recepción son normales, al igual que hacer una llamada telefónica, primero le dice al otro lado: "Oye, oye, ¿puedes oír?", Y el otro lado responde: "Sí. Oye, ¿puedes oír?", dijiste: "puedes oír", en este momento, se puede determinar que estos cuatro pasos son fáciles de usar, lo que significa que se cumplen los requisitos previos para una transmisión confiable... Se han experimentado tres apretones de manos, ambas partes en la comunicación pueden verificar que sus respectivas capacidades de envío y recepción están bien, y luego se pueden realizar transmisiones posteriores.
2) Cómo desconectar:

四次挥手:
inserte la descripción de la imagen aquí

ventana deslizante

¡La importancia de la existencia de la ventana deslizante es mejorar la eficiencia de transmisión tanto como sea posible con la premisa de garantizar la confiabilidad!

inserte la descripción de la imagen aquí

Aquí, encontramos que cada vez que realizamos una operación, necesitamos esperar un ACK, y se gasta mucho tiempo en ACK.

inserte la descripción de la imagen aquí

Así, enviamos cuatro conjuntos de datos a la vez. Durante el proceso de envío de estos cuatro conjuntos de datos, no esperamos hasta que se enviaran los cuatro conjuntos de datos, y esperamos en unidad...

inserte la descripción de la imagen aquí

如果一次批量发送数据N,统一等待一波,此时这里N称为"窗口大小"

"滑动"的意思,并不用把N组数据的ACK都等到,才能继续往下发送,而是收到一个ACK,就继续往下发送一组,当前这图里发了四组,只要1001到了,就可以发送(4001 ~ 5000)这组数据了,依次发送

当然,如果在这里发生了丢包该如何重传?

inserte la descripción de la imagen aquí

¿Qué sucede si se pierde el ACK en este caso?

没事,不必要处理!!!,在发送4001之前,发现只收到了2001,1001没收到.2001表示:2001之前的数据都已确认收到,只需要保证最后一个ACK收到了,前面的都是收到了的

inserte la descripción de la imagen aquí

Esta situación desencadenará una retransmisión:

由于1001 ~ 2000 这个数据丢了,然后B就会反复的索要1001这个数据,即使AB已经往后发了,这时B任然在索要1001,当若干次后,A就发现了,就触发了重传,
A重传1001 ~ 2000,2001 ~ 7000这些数据都是已经传过的,这些就没必要重传了,接下来B 就向 A 索要 7001 开始的数据..

control de flujo

El control de flujo es una extensión de la ventana deslizante, el propósito es garantizar la confiabilidad. En la ventana deslizante, cuanto más grande sea la ventana, mayor será la tasa de transmisión. Esto no solo necesita considerar al remitente, sino también al receptor. Si el remitente envía un ladrón rápido, el receptor no puede manejarlo en absoluto, el receptor perderá el paquete recién recibido y el remitente lo retransmitirá, por lo que el mapa de luz del remitente no es rápido.

La clave para el control de flujo es medir la velocidad del receptor. Aquí, el espacio restante del búfer de recepción del receptor se usa directamente para medir la capacidad de procesamiento actual...

inserte la descripción de la imagen aquíinserte la descripción de la imagen aquí

接收方通过ACK报文来告知发送方剩余空间多大
El tamaño de la ventana de 16 bits se usa para medir el espacio restante del receptor actual. Después de que el remitente reciba estos datos, ajustará de manera flexible la velocidad de envío (ajustará el tamaño de la ventana) (aunque dije 16 bits, de hecho, el el tamaño de la ventana es más de 64k, puede ser más grande)

control de congestión

Esto también es una extensión de la ventana deslizante, y también limita la velocidad de la ventana deslizante.El
control de congestión mide la congestión (capacidad de procesamiento) entre el remitente y el receptor, y entre este enlace.
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

respuesta tardía

Esto es equivalente a una extensión del control de flujo. El control de flujo es pisar el freno, no enviarlo demasiado rápido y retrasar la respuesta. Justo sobre esta base, la ventana se puede hacer lo más grande posible.

Esto es como que se echa agua al mismo tiempo, cada vez que se inyecta una ola de agua se pregunta cuanto espacio queda en la piscina actual, la medida que se toma no es contestar inmediatamente, sino contestar después , y responda más tarde, lo que significa que durante este tiempo se producirá más agua, si responde de inmediato se pueden inyectar las 30 toneladas restantes, pero si responde un poco más tarde, quedarán 40 toneladas por inyectar (10 toneladas han sido lanzados) Puede haber aumentado un poco la velocidad de transferencia

a cuestas

Esta es una extensión de la respuesta retardada.
inserte la descripción de la imagen aquí

Orientado al flujo de bytes (problema de paquetes pegajosos)

Este no es solo el problema de los paquetes adhesivos en TCP, sino también otros mecanismos orientados al flujo de bytes, como la lectura de archivos.
El problema adhesivo de los paquetes adhesivos TCP es el datagrama de la capa de aplicación. En el búfer de recepción de TCP, varios datos de las bolsas están mezcladas, no puedo decir quién es quién...
inserte la descripción de la imagen aquí

Manejo de excepciones de TCP

1) Proceso terminado

Cuando el proceso no está preparado, el proceso termina repentinamente. ¿Cuál es la conexión TCP del proceso en este momento? ==> La conexión TCP se establece a través de Socket. Socket es esencialmente un archivo abierto por el proceso. El archivo es en realidad es la tabla de descriptores de archivos que existe en el PCB del proceso. Cada vez que se abre un archivo (incluido el zócalo), se agrega un elemento a la tabla de descriptores de archivos. Cada vez que se cierra un archivo, se elimina en la tabla de descriptores de archivos. . Una línea, si elimina el proceso directamente, la PCB desaparecerá y la tabla de descriptores de archivo también desaparecerá. El archivo aquí es equivalente a "cerrado automáticamente". Este proceso es en realidad lo mismo que llamar a socket. close() manualmente. Activa la onda cuatro veces~)

2) La máquina está apagada

Cerrar de acuerdo con el proceso normal permitirá que el sistema operativo elimine todos los procesos y luego se apague nuevamente, al igual que la terminación del proceso

3) La máquina está apagada/el cable de red está desconectado

Al igual que una computadora de escritorio, si desconecta la alimentación directamente, el sistema operativo no tendrá ningún tiempo de respuesta y no tendrá ninguna medida de procesamiento.

inserte la descripción de la imagen aquí

preguntas de entrevista

¿Cómo lograr una transmisión confiable basada en el protocolo UDP?

Esta pregunta es en realidad una prueba de TCP, que es esencialmente el mecanismo de replicación de TCP basado en UDP en la capa de aplicación.

    实现确认应答机制. 每个数据收到之后,都要反馈一个ACK(应用程序自己定义一个 ack包)
    实现序号/确认序号,以及实现去重
    实现超时重传.
    实现连接管理
    要想提高效率,实现滑动窗口
    为了限制滑动窗口,实现流量控制/拥塞控制
    实现延时应答,捎带应答,心跳机制…

Qué tipo de escenarios son adecuados para usar TCP y qué tipo de escenarios son adecuados para usar UDP

1:啥时候使用TCP? =>对可靠性有一定要求,(日常开发中的大多数情况,都基于TCP)
2:如果传输的单个数据报比较长(超过 64k) -> 首选 TCP
3:啥时候使用UDP? =>对可靠性要求不高,对于效率的要求更高(机房内部的主机之间通信,分布式系统中,广播就是首选UDP)

Supongo que te gusta

Origin blog.csdn.net/chenbaifan/article/details/124194644
Recomendado
Clasificación