Paquetes fijos TCP y división de paquetes
¿Habrá problemas de adherencia o descompresión en el protocolo UDP en la capa de transporte?
No. UDP se basa en mensajes y utiliza 16 bits en el encabezado UDP para representar la longitud del paquete UDP, por lo que se pueden distinguir diferentes paquetes en la capa de aplicación, evitando así los problemas de paquetes fijos y división de paquetes.
¿El protocolo TCP en la capa de transporte tiene problemas con los paquetes fijos o la división de paquetes?
Sí. Hay dos razones:
1. TCP se basa en un flujo de bytes. Aunque la interacción de datos entre la capa de aplicación y la capa de transporte consta de bloques de datos de diferentes tamaños, TCP trata estos bloques de datos como bytes no estructurados ilimitados. stream;
2. Según los dos puntos anteriores, cuando se utiliza TCP para transmitir datos, se producirán problemas de paquetes fijos y división de paquetes. Según los dos puntos anteriores, cuando se utiliza TCP para transmitir datos, pueden ocurrir problemas de adhesión o división de paquetes.
Ahora supongamos que el cliente envía dos paquetes de datos al servidor continuamente, representados por paquete1 y paquete2. Los datos recibidos por el servidor se pueden dividir en los siguientes tres tipos:
El. En la primera situación, el extremo receptor recibe dos paquetes de datos normalmente, es decir, no hay ningún fenómeno de división o adherencia de paquetes, lo cual está más allá del alcance de este artículo.
En el segundo caso, el extremo receptor solo recibe un paquete de datos. Debido a que TCP no pierde paquetes, este paquete de datos contiene la información de los dos paquetes de datos enviados por el extremo emisor. . Bolsa. Es difícil para el receptor manejar esta situación porque no conoce el límite entre estos dos paquetes.
La tercera situación tiene dos formas de expresión, como se muestra en la siguiente figura. El receptor recibe dos paquetes de datos, pero los dos paquetes de datos están incompletos o tienen una pieza adicional. Esta situación ocurre en paquetes divididos y paquetes adhesivos. Ambas situaciones no son fáciles de manejar para el destinatario sin tratarlas de una manera especial.
Hay muchas razones para que los paquetes TCP se mantengan fijos o se descompriman. Algunas razones comunes se enumeran a continuación:
1. Los datos a enviar son mayores que el espacio restante en el búfer de envío TCP. . De tamaño, se producirá el desembalaje.
2. Si los datos a enviar son mayores que MSS (longitud máxima del mensaje), TCP los descomprimirá antes de la transmisión.
3. Si los datos a enviar son más pequeños que el tamaño del búfer de envío TCP, TCP enviará los datos escritos en el búfer varias veces a la vez, lo que resultará en la adhesión del paquete de datos.
4. Los paquetes de datos adhesivos también aparecerán si la capa de aplicación en el extremo receptor no lee los datos en el búfer de recepción a tiempo.
A través del análisis anterior, entendemos las razones por las que los paquetes de datos se pegan o se descomprimen, entonces, ¿cómo resolver este problema? La clave para resolver el problema radica en cómo agregar información de límites a cada paquete de datos. Los métodos comúnmente utilizados son los siguientes:
1. El remitente agrega un encabezado de paquete de datos a cada paquete de datos y el paquete. El encabezado debe contener al menos la longitud del paquete de datos, de modo que después de recibir los datos, el extremo receptor pueda conocer la longitud real de cada paquete de datos leyendo el campo de longitud en el encabezado del paquete.
2. El remitente encapsula cada paquete de datos en una longitud fija (se puede completar con 0), de modo que cada vez que el receptor lea datos de longitud fija del búfer de recepción, el receptor dividirá naturalmente cada paquete. paquete.
3. Puede establecer límites entre paquetes, como agregar símbolos especiales, para que el receptor pueda separar diferentes paquetes según este límite.
Tomcat está disponible en blogs.com/yaochunhui/p/14175396.html.