2016-10-15 68 views

Odpowiedz

6
  • 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.
+1

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

4

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ń.