Una forma de entender como funciona un protocolo, es utilizar herramientas y analizar el tráfico que estas generan. A continuación vamos a ver algunos simples ejemplos para entender como trabaja el protocolo DNS.
Vamos a utilizar el comando "host" de Linux/Unix, para solicitar mediante los parámetros "-t ns", el listado de los servidores de nombres correspondiente al dominio "amazon.com".
Vamos a utilizar el comando "host" de Linux/Unix, para solicitar mediante los parámetros "-t ns", el listado de los servidores de nombres correspondiente al dominio "amazon.com".

Si analizamos esta captura, podemos ver que DNS utiliza como protocolo de transporte UDP en el puerto 53:

Generalmente DNS va a utilizar UDP, pero podemos decirle a "host" que realice el pedido utilizando TCP. Esto lo podemos hacer con la opción "-T" de esta forma: "host -T -t ns amazon.com"
A menos que forcemos a "host" a utilizar TCP, DNS va a utilizar este protocolo con un cliente solamente cuando la respuesta a un pedido supere los 512 bytes.
Por ejemplo, veamos este ejemplo en donde solicitamos los registros ANY de amazon.com:
A menos que forcemos a "host" a utilizar TCP, DNS va a utilizar este protocolo con un cliente solamente cuando la respuesta a un pedido supere los 512 bytes.
Por ejemplo, veamos este ejemplo en donde solicitamos los registros ANY de amazon.com:

Podemos ver que como la respuesta supero los 512 bytes, aparece un error ";; Truncated, retrying in TCP mode". Analicemos el tráfico:

Al principio, podemos ver que los dos primeros paquetes son UDP, como la respuesta supera los 512 bytes, se volverá a realizar toda la transacción utilizando TCP. Después de los paquetes UDP, se pueden ver los tres paquetes del 3-way handshaking de TCP, la respuesta del servidor y finalmente los FIN, ACK para finalizar la conexión.
El único caso en el que DNS siempre utilizará TCP, es cuando un servidor de nombres le solicite a otro una transferencia de zonas. También podemos solicitar una transferencia de zonas con el comando "host -l", pero esto solo debería ser posible entre servidores de nombres.
En mi COMBAT Training veremos muchas cosas más sobre DNS que luego iré posteando en el Blog ;-)
El único caso en el que DNS siempre utilizará TCP, es cuando un servidor de nombres le solicite a otro una transferencia de zonas. También podemos solicitar una transferencia de zonas con el comando "host -l", pero esto solo debería ser posible entre servidores de nombres.
En mi COMBAT Training veremos muchas cosas más sobre DNS que luego iré posteando en el Blog ;-)
No hay comentarios.:
Publicar un comentario