Protokół DNS – Komunikacja przez UDP i TCP

  Domeny

Serwery DNS komunikują się z innymi serwerami DNS i klientami (tzw. resolver’ami) przez protokoły TCP i UDP, w obu przypadkach przez port 53. Zapytania wysyłane są zazwyczaj pojedynczym pakietem UDP, odpowiedź także jest zwracana w postaci pakietu UDP. Protokół został wybrany ze względu na prostotę i minimalne obciążenie, w sytuacji, gdy wielkość danych jest niewielka i nie wymaga nawiązania połączenia przez protokół TCP.

W chwili, gdy cała odpowiedź (zawierająca samą odpowiedź lub dodatkowe dane umieszczone w pozostałych sekcjach) przekracza wielkość pojedynczego pakietu UDP (wielkość standardowej odpowiedzi DNS jest ograniczona do 512 bajtów, bez nagłówka UDP, IP), pytający otrzyma odpowiedź częściową (maksimum, które zmieści się w pakiecie) a w nagłówku zostanie umieszczona informująca o tym flaga (truncated). Pytający może w tym momencie zdecydować, czy otrzymane dane są dla niego wystarczające. Jeśli nie, ponownie wysyła to samo zapytanie, tym razem przy użyciu protokołu TCP, przez który będzie mógł pobrać całą odpowiedź w wymaganej ilości pakietów.

Protokół UDP nie uwzględnia utraty pakietów po drodze, dlatego zapytania są powtarzane po kilku sekundach. Po określonej liczbie nieudanych prób serwer DNS jest uznawany za nieosiągalny. Wszystko zależy od ustawienia resolver’ów.