Source string Source string

English Actions
Application layer
This is an unpolished draft of the third edition of this e-book. If you find any error or have suggestions to improve the text, please create an issue via or help us by providing pull requests to close the existing issues.
The Domain Name System (DNS) plays a key role in the Internet today as it allows applications to use fully qualified domain names (FQDN) instead of IPv4 or IPv6 addresses. When using the DNS, it is important to remember the role of the different types of DNS records.
Several software tools can be used to send queries to DNS servers. For this exercise, we use dig_ which is installed on most Unix/Linux systems.
A typical usage of dig is as follows:
`server` is the IP address or the name of a DNS server or resolver
`type` is the type of DNS record that is requested by the query such as `NS` for a nameserver, `A` for an IPv4 address, `AAAA` for an IPv6 address, `MX` for a mail relay, ...
`fqdn` is the fully qualified domain name being queried
dig_ also contains some additional parameters and flags that are described in the man page. Among these, the `+trace` flag allows to trace all requests that are sent when recursively contacting DNS servers.
What are the IP addresses of the resolvers that the `dig` implementation you are using relies on [#fdig]_ ?
What are the nameservers that are responsible for the `info` top-level domain ? Is it possible to use IPv6 to query them ?
What is the IPv6 address that corresponds to `` ? Which type of DNS query does `dig` send to obtain this information ?
When run without any parameter, `dig` queries one of the root DNS servers and retrieves the list of the names of all root DNS servers. For technical reasons, there are only 13 different root DNS servers. This information is also available as a text file from What are the IPv6 addresses of all these servers?
Assume now that you are residing in a network where there is no DNS resolver and that you need to perform your query manually starting from the DNS root.
Use `dig` to send a query to one of these root servers to find the IPv6 address of the DNS server(s) (NS record) responsible for the `org` top-level domain
Use `dig` to send a query to one of these DNS servers to find the IP address of the DNS server(s) (NS record) responsible for ``
Continue until you find the server responsible for ``
What is the lifetime associated to this IPv6 address ?
Perform the same analysis for a popular website such as ``. What is the lifetime associated to the corresponding IPv6 address ? If you perform the same request several times, do you always receive the same answer ? Can you explain why a lifetime is associated to the DNS replies ?
Use `dig` to find the mail relays used by the `` and `` domains. What is the `TTL` of these records ? Can you explain the preferences used by the `MX` records. You can find more information about the MX records in :rfc:`5321`.
When `dig` is run, the header section in its output indicates the `id` the DNS identifier used to send the query. Does your implementation of `dig` generates random identifiers ?
A DNS implementation such as `dig`, and more importantly a name resolver such as bind_ or unbound_, always checks that the received DNS reply contains the same identifier as the DNS request that it sent. Why is this so important ?


No matching activity found.
Browse all component changes

Things to check


The string uses three dots (...) instead of an ellipsis character (…)



English English
No related strings found in the glossary.

String information

Source string location
String age
2 years ago
Source string age
2 years ago
Translation file
locale/pot/exercises/dns.pot, string 9