Tamaño máximo de segmento UDP

Tamaño máximo de segmento UDP

Entorno: estoy escribiendo una aplicación cliente-servidor UDP. la ruta MTU entre el cliente y el servidor es de 1500 bytes (con sólo un enlace inalámbrico entre ellos, por lo que este valor es bastante estable). El conjunto de mi sistema no fragmenta bits de forma predeterminada, y tanto en el cliente como en el servidor, SO_SENDBUF es 16384 y SO_RECVBUF = 87380.

Pregunta: El cliente usa sendto para enviar 8192 bytes al servidor a la vez. Utilizo Wireshark para ver cómo se enviarán estos 8192 bytes en muchos paquetes y descubro que cada paquete solo contiene 1023 bytes de datos UDP como máximo. Pero dada la ruta MTU = 1500, ¿no debería poder enviar 1500-20 (encabezado IP) -8 (encabezado UDP) = 1472 bytes de datos en cada paquete? Cuando hago lo mismo con TCP, el resultado es el que esperaba. Cada paquete TCP puede contener hasta 1448 bytes, que es 1500-20 (encabezado IP) -32 (encabezado TCP con opción de marca de tiempo). Mi pregunta es: ¿por qué UDP no coloca 1472 bytes en cada paquete, en lugar de 1023 bytes? ¿Es solo un detalle menor de implementación? ¿O pasé por alto algunas restricciones del sistema?

Observación: Se puede observar el mismo resultado incluso cuando hago el experimento en la misma máquina (con 127.0.0.1 en la interfaz loopback).

Respuesta1

Solo está deduciendo los gastos generales de las capas L4 (UDP) y L3 (IP). Supongo que la sobrecarga en la trama Ethernet (L2) con preámbulo, direccionamiento MAC, campo de tipo y suma de comprobación representaría el resto.

http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol4/mhl/ether01.gif

información relacionada