UDP provides no guarantee for delivery and no protection from duplication and is connection-less protocol but why then DNS uses UDP protocol.
Perché, nonostante non abbia garanzie di consegna, UDP è adatto per ciò che il protocollo DNS richiede 1 . In particolare:
- DNS deve essere molto veloce. L'impostazione di una connessione TCP richiede uno scambio di pacchetti aggiuntivo. Idem per lo spegnimento di una connessione TCP.
- Una tipica richiesta DNS si inserisce in un singolo pacchetto di rete
- Una risposta DNS tipica si inserisce in un singolo pacchetto di rete
- Dato che il DNS è un protocollo stateless, il reinvio di una richiesta dopo un timeout non è problematico.
At what conditions we should prefer UDP over TCP protocol?
Quando il protocollo application / application-level non richiede le varie proprietà (ma relativamente costose) fornite da un layer di trasporto TCP.
È teoricamente possibile 2 implementare tutte le caratteristiche desiderabili di TCP usando un protocollo a livello di applicazione usando UDP. Ma le persone sensibili non lo fanno ... perché sarebbe uno sforzo inutile.
1 - In effetti il DNS può utilizzare sia TCP che UDP: fonte .
2 - In pratica, è probabile che ci siano problemi dovuti alle differenze nel modo in cui UDP & Il TCP è gestito da reti e kernel OS, kernel vs overhead dello spazio utente e così via. Affrontare questi problemi è ... complesso.