Pregunta

Necesito saber cuál es el paquete UDP más grande que puedo enviar a otra computadora sin fragmentación.

Este tamaño se conoce comúnmente como MTU (Unidad de transmisión máxima).Supuestamente, entre 2 computadoras, habrá muchos enrutadores y módems que pueden tener diferentes MTU.

Leí que la implementación de TCP en Windows encuentra automáticamente la MTU máxima en una ruta.

También estaba experimentando y descubrí que la MTU máxima desde mi computadora a un servidor era 57712 bytes + encabezado.Todo lo que estuviera por encima de eso fue descartado.Mi computadora está en una LAN, ¿no se supone que la MTU debe tener alrededor de 1500 bytes?

¿Fue útil?

Solución

Lo siguiente no responder a su pregunta directamente, pero puede que le resulte interesante; se dice que los paquetes IP se pueden desmontar / volver a montar, y por lo tanto más grande que límite en los medios de comunicación subordinado (por ejemplo, Ethernet 1500 bytes): Resolver la fragmentación IP, MTU, SMS, y Cuestiones PMTUD con GRE e IPSec


Más sobre este tema:

No sé sobre la generación de ICMP a través de una API en Windows: en un momento se propuso una API, y fue polémico porque las personas argumentaron que haría más fácil escribir software que implementa la funcionalidad de denegación de servicio mediante la generación una avalancha de mensajes ICMP.

No, todo apunta a que es en práctica: véase, por ejemplo FAQ del programador Ejemplos: ping:. Raw sockets Método

Por lo tanto, para descubrir MTU, generar paquetes de ping con el 'no fragmentar'.

Tal vez hay una API más fácil que esto, no sé; pero espero que he dado a entender el protocolo subyacente [s].

Otros consejos

Además de todas las respuestas anteriores, citando el clásico:

IPv4 e IPv6 definen tamaño mínimo del buffer de reensamblaje, el tamaño mínimo de datagrama que se nos garantiza que debe admitir cualquier implementación.Para IPv4, esto es 576 bytes.IPv6 eleva esto a 1280 bytes.


Esto básicamente significa que desea limitar el tamaño de su datagrama a menos de 576 si trabaja a través de Internet público y controla solo un lado del intercambio; eso es lo que hacen la mayoría de los protocolos estándar basados ​​en UDP.

Tenga en cuenta también que PMTU es una propiedad dinámica de la ruta.Esta es una de las cosas de las que TCP se ocupa por usted.A menos que esté listo para volver a implementar mucha lógica de secuenciación, temporización y retransmisión, utilice TCP para cualquier red crítica.Punto de referencia, prueba, perfil, es decir. probar Si TCP es su cuello de botella, sólo entonces considere UDP.

Este es un tema interesante para mí. Tal vez algunos resultados prácticos podrían ser de interés cuando la entrega de datos UDP gruesos alrededor del mundo a través de Internet real UDP, y con una velocidad de transmisión de 1 paquete de un segundo, los datos continúa a su vez con mínima pérdida de paquetes hasta aproximadamente 2K. Sobre esto y empezar a correr en problemas, pero regularmente hemos entregado más de 1600 paquetes de bytes sin sufrimiento - esto es a través de redes móviles GPRS, así como WAN mundo de ancho. En ~ 1K suponiendo que la señal es estable (no es!) Se obtiene una baja pérdida de paquetes.

Es interesante señalar que no es el paquete extraño, pero a menudo una ráfaga de paquetes durante unos segundos -. Que presumiblemente es la razón por llamadas VoIP acaba de derrumbarse en ocasiones

Su propia MTU está disponible en el registro , pero la MTU en la práctica se va a la MTU más pequeña en el camino entre la máquina y el destino. Su tanto variable y sólo se puede determinar empíricamente. Hay una serie de RFC mostrando cómo determinar a él.

El puede tener internamente los valores MTU muy grandes, ya que el hardware de red suele ser homogénea o LAN al menos administrados centralizadamente.

Para aplicaciones UDP debe controlar de extremo a extremo MTU sí mismo si se quiere evitar la fragmentación IP o paquetes perdidos. El método recomendado para cualquier aplicación es hacer su mejor esfuerzo para utilizar PMTU para recoger su datagrama máximo, o enviar datagramas

https://tools.ietf.org/html/rfc5405#section-3.2

  

Unicast UDP Directrices de uso para los diseñadores de aplicaciones "no deben enviar datagramas que exceden el PMTU, debe descubrir PMTU o enviar datagramas

Windows aparece a la configuración y el acceso a la información a través de PMTU es básico interfaz de opciones de conector:

Puede asegurarse de PMTU Discover es a través de IP_PMTU_DISCOVER, y se puede leer a través de la MTU IP_MTU.

https://docs.microsoft .com / es-es / ventanas / escritorio / Winsock / ipproto-IP-socket-options

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top