Dlaczego DNS używa protokołu UDP jako protokołu warstwy transportowej?Dlaczego DNS używa protokołu UDP jako protokołu warstwy transportowej?
Odpowiedz
- UDP jest znacznie szybszy. TCP jest powolny, ponieważ wymaga potrójnego uzgadniania. Ważnym czynnikiem jest również obciążenie serwerów DNS. Serwery DNS (ponieważ używają UDP) nie mają połączeń typu keep.
- Żądania DNS są zazwyczaj bardzo małe i dobrze pasują do segmentów UDP.
- UDP nie jest niezawodny, ale niezawodność można dodać na warstwie aplikacji. Aplikacja może korzystać z protokołu UDP i może być niezawodna poprzez wykorzystanie limitu czasu i ponowne wysłanie w warstwie aplikacji.
3 uwagi na twoją odpowiedź: 1) 'DNS' używa ** nie ** tylko' UDP' - czasami używa też 'TCP'. 2) Powolność "TCP" polega głównie na ** nie ** w ustanawianiu połączenia (co z kolei ** nie jest tylko 3-drożnym handshake). 3) Niezawodność można dodać na wyższych warstwach, ale ** nie ** w przypadku DNS. – MarianD
UDP
jest tanie. UDP
sama nie jest niezawodna, ale protokoły wyższego poziomu - jako DNS - mogą zachować niezawodność, np. przez powtarzanie datagramu UDP
w przypadku braku odpowiedzi.
Ale ostatnie nie dotyczy DNS
. DNS
sam używa czasami oprócz UDP
(jako protokół podstawowy) również niezawodny Protokół kontroli transmisji (TCP
).
Ta ostatnia jest używana, gdy rozmiar danych odpowiedzi przekracza 512
bajtów, a dla zadań wymagających niezawodnej dostawy (np. transfer strefy).
Ponadto istnieje kilka implementacji resolver, które używają TCP
dla wszystkich zapytań.
Większość zapytań pasuje do jednej wiadomości. Możesz ponownie wysłać wiadomość, jeśli nie otrzymasz odpowiedzi. Mniejsze obciążenie niż TCP. – Ryan