Domanda

Sto lavorando su un progetto relativo alla rete e sto usando DTLS (TLS / UDP) per proteggere le comunicazioni.

Leggendo le specifiche per DTLS, ho notato che DTLS richiede il DF bandiera (Do not Fragment) da impostare.

Sulla mia rete locale, se provo a trasmettere un messaggio più grande di 1500 byte, non viene inviato. Questo ha perfettamente senso. Su Windows il sendto () riporta un successo, ma nulla viene inviato.

Io, ovviamente, non può disinserire il DF bandiera manualmente dal momento che è obbligatorio per DTLS e non sono sicuro se il limite di 1500 byte (MTU?) Potrebbe cambiare in alcune situazioni. Credo che sia possibile.

Quindi, la mia domanda è: "C'è un modo per scoprire questo limite?" utilizzando le API?

In caso contrario, quale sarebbe il valore più basso possibile?

Il mio software gira sotto UNIX (Linux / Mac OSX) e sistemi operativi Windows così diverse soluzioni per ogni OS sono i benvenuti;)

Molte grazie.

È stato utile?

Soluzione

C'è un MTU minimo che deve essere sostenuta - 576 byte, tra gli header IP. Quindi, se si tengono i pacchetti di seguito che, non dovete preoccuparvi di PMTU-D (questo è quello che fa DNS).

Altri suggerimenti

Probabilmente è necessario 'auto tune' inviando una gamma di dimensioni dei pacchetti al bersaglio, e vedere che arrivano. pensare binary_search ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top