socket protocolo caracteristicas networking sockets udp ipv4

networking - protocolo - ¿Cuál es el tamaño de paquete Safe UDP más grande en Internet?



udp vs tcp (9)

512 es tu mejor apuesta. Se usa en otro lado y es un buen número par (la mitad de 1024).

He leído varios artículos sobre tamaños de paquetes UDP pero no he podido llegar a una conclusión sobre cuál es el correcto.

Varios servicios restringen el paquete UDP más grande a 512 bytes (como dns)

Dado que el mínimo de MTU en Internet es 576, y el tamaño del encabezado IPv4 es de 20 bytes, y el encabezado UDP de 8 bytes. Esto deja 548 bytes disponibles para los datos del usuario

¿Sería capaz de usar paquetes de hasta el tamaño de 548 sin fragmentación de paquetes? ¿O hay algo que los creadores de DNS conocían y por eso lo restringieron a 512 bytes?

¿Podría incluso ir más allá de 548 bytes de forma segura?


576 es el tamaño máximo mínimo de búfer de reensamblaje , es decir, cada implementación debe ser capaz de volver a armar paquetes de al menos ese tamaño. Ver IETF RFC 1122 para más detalles.


Dado que IPV6 tiene un tamaño de 1500, afirmaría que los operadores no proporcionarían rutas separadas para IPV4 e IPV6 (ambos son IP con diferentes tipos), forzándolos a equipos para ipv4 que serían viejos, redundantes, más costosos de mantener. y menos confiable. No tendría ningún sentido. Además, hacerlo podría ser considerado como un tratamiento preferencial para cierto tráfico, un no no bajo las reglas que probablemente no les importa (a menos que sean atrapados).

Por lo tanto, 1472 debe ser seguro para uso externo (aunque eso no significa que una aplicación como DNS que no sabe sobre EDNS lo acepte), y si está hablando de redes internas, es probable que conozca el diseño de su red, en cuyo caso los paquetes jumbo se aplican para paquetes no fragmentados, por lo que para 4096 - 4068 bytes, y para tarjetas Intel con búferes de 9014 bytes, un tamaño de paquete de ... espera ... 8086 bytes, ¿sería la máxima ... coincidencia? risa disimulada

****ACTUALIZAR****

Varias respuestas dan los valores máximos permitidos por 1 proveedor de SW o varias respuestas asumiendo la encapsulación. El usuario no solicitó el valor más bajo posible (como "0" para un tamaño UDP seguro), sino el mayor tamaño de paquete seguro.

Los valores de encapsulación para varias capas se pueden incluir varias veces. Dado que una vez que ha encapsulado una secuencia, no hay nada que prohíba, digamos, una capa de VPN debajo de eso y una duplicación completa de las capas de encapsulación por encima de eso.

Dado que la pregunta era sobre valores máximos seguros, supongo que están hablando del valor máximo seguro para un paquete UDP que se puede recibir. Como no se garantiza ningún paquete UDP, si recibe un paquete UDP, el tamaño de seguridad más grande sería 1 paquete sobre IPv4 o 1472 bytes.

Nota: si usa IPv6, el tamaño máximo sería de 1452 bytes, ya que el tamaño del encabezado de IPv6 es de 40 bytes en comparación con el tamaño de 20 bytes de IPv4 (y de cualquier forma, aún debe permitir 8 bytes para el encabezado UDP).



El límite teórico (en Windows) para el tamaño máximo de un paquete UDP es 65507 bytes. Esto está documentado aquí :

El tamaño de mensaje UDP máximo correcto es 65507, según lo determinado por la siguiente fórmula: 0xffff - (tamaño de (encabezado IP) + tamaño de (encabezado UDP)) = 65535- (20 + 8) = 65507

Dicho esto, la mayoría de los protocolos limitan a un tamaño mucho más pequeño, generalmente 512 u ocasionalmente 8192. A menudo puedes ir más allá de 548 de forma segura si estás en una red confiable, pero si estás transmitiendo por Internet en general, el mayor Si vas, es más probable que encuentres problemas y pérdidas en la transmisión de paquetes.


Es cierto que un encabezado típico IPv4 es de 20 bytes, y el encabezado UDP es de 8 bytes. Sin embargo, es posible incluir opciones de IP que pueden aumentar el tamaño del encabezado IP hasta 60 bytes. Además, a veces es necesario que los nodos intermedios encapsulen los datagramas dentro de otro protocolo, tal como IPsec (usado para VPN y similares) para encaminar el paquete a su destino. Por lo tanto, si no conoce la MTU en su ruta particular de red, es mejor dejar un margen razonable para otra información de encabezado que quizás no haya anticipado. Por lo general, se considera que una carga útil UDP de 512 bytes hace eso, aunque incluso eso no deja suficiente espacio para un encabezado IP de tamaño máximo.


Este artículo describe la unidad de transmisión máxima (MTU) MTU . Establece que los hosts IP deben poder procesar 576 bytes para un paquete IP. Sin embargo, nota que el mínimo es 68. RFC 791: "Todo módulo de Internet debe poder reenviar un datagrama de 68 octetos sin más fragmentación. Esto se debe a que un encabezado de internet puede tener hasta 60 octetos y el fragmento mínimo es de 8 octetos. "

Por lo tanto, el tamaño de paquete seguro de 508 = 576 - 60 (encabezado IP) - 8 (encabezado udp) es razonable.

Como mencionó el usuario607811, la fragmentación por otras capas de red debe ser reensamblada. https://tools.ietf.org/html/rfc1122#page-56 3.3.2 Reensamblaje La capa IP DEBE implementar el reensamblaje de datagramas IP. Designamos el tamaño de datagrama más grande que se puede volver a ensamblar mediante EMTU_R ("MTU efectiva para recibir"); esto a veces se llama el "tamaño del búfer de reensamblaje". EMTU_R DEBE ser mayor o igual que 576


He leído algunas buenas respuestas aquí; Sin embargo, hay algunos errores menores. Algunos han respondido que el campo Longitud del mensaje en el encabezado UDP es un máximo de 65535 (0xFFFF); esto es técnicamente cierto. Algunos han respondido que el máximo real es (65535 - IPHL - UDPHL = 65507). El error es que el campo Longitud del mensaje en el encabezado UDP incluye toda la carga útil (capas 5-7), más la longitud del encabezado UDP (8 bytes). Lo que esto significa es que si el campo de longitud del mensaje es 200 Bytes (0x00C8), la carga útil es en realidad de 192 Bytes (0x00C0).

Lo que es difícil y rápido es que el tamaño máximo de un datagrama de IP es 65535 Bytes. Este número se llega a la suma total de los encabezados L3 y L4, más la carga útil de Capas 5-7. Encabezado IP + Encabezado UDP + Capas 5-7 = 65535 (Máx).

La respuesta más correcta para lo que es el tamaño máximo de un datagam UDP es 65515 Bytes (0xFFEB), ya que un datagrama UDP incluye el encabezado UDP. La respuesta más correcta para lo que es el tamaño máximo de una carga útil UDP es 65507 Bytes, ya que una carga útil UDP no incluye el encabezado UDP.


La carga útil UDP segura máxima es de 508 bytes. Este es un tamaño de paquete de 576, menos el encabezado IP máximo de 60 bytes y el encabezado UDP de 8 bytes. Se garantiza que cualquier carga útil UDP de este tamaño o inferior será entregable a través de IP (aunque no se garantiza que se entregue). Cualquier enrutador deja caer cualquier cosa más grande por cualquier razón por cualquier razón. Excepto en una ruta de solo IPv6, donde la carga máxima es de 1.212 bytes. Como otros han mencionado, se podrían agregar encabezados de protocolo adicionales en algunas circunstancias. En su lugar, se puede preferir un valor más conservador de alrededor de 300-400 bytes.

Cualquier paquete UDP puede estar fragmentado. Pero esto no es demasiado importante, porque perder un fragmento tiene el mismo efecto que perder un paquete no fragmentado: se descarta todo el paquete. Con UDP, esto va a suceder de cualquier manera.

Curiosamente, el tamaño máximo del paquete teórico es de alrededor de 30 MB (1.500 MTU Ethernet - 60 encabezado IP x 65.536 número máximo de fragmentos), aunque la probabilidad de que se supere sería infinitesimal.

Fuentes: RFC 791, RFC 2460