# DNS

![](https://2407442552-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lpv9LvHzpublmUWisvz%2Fsync%2F0eec6f419d2ea320f5924e44db0ff43b63087e18.png?generation=1589265737549418\&alt=media)

## Introduction

A Domain Name System (DNS) **translates** a domain name such as `www.example.com` to an IP address.

> DNS 就是一个翻译机，把网址转换成 IP 地址

DNS is hierarchical, with a few authoritative servers at the top level. Your router or ISP provides information about which DNS server(s) to contact when doing a lookup. Lower level DNS servers cache mappings, which could become stale due to DNS propagation delays. DNS results can also be cached by your browser or OS for a certain period of time, determined by the time to live (TTL).

* **NS record (name server)** - Specifies the DNS servers for your domain/subdomain.
* **MX record (mail exchange)** - Specifies the mail servers for accepting messages.
* **A record (address)** - Points a name to an IP address.
* **CNAME (canonical)** - Points a name to another name or CNAME (example.com to www.example.com) or to an A record.

Services such as CloudFlare and Route 53 provide managed DNS services. Some DNS services can route traffic through various methods:

## Algorithm

* [Weighted round robin](https://g33kinfo.com/info/round-robin-vs-weighted-round-robin-lb/)
* Prevent traffic from going to servers under maintenance
* Balance between varying cluster sizes
* A/B testing
* Latency-based
* Geolocation-based

> round robin 基本上就是 equally distribute request。所有在 pool 里的 host 挨个接收 request。而 weighted round robin 做了改进，比如有三个 hosts，他们的 weight 分别是 6:3:1。那么 每十个 requests，6 个 dispatch 到 host1，3 个 dispatch 到 host2，1 个 dispatch 到 host3。这在 hosts 他们的性能不一样的时候优化的效果明显。

## Disadvantages

* Accessing a DNS server introduces a slight delay, although mitigated by caching described above.
* DNS **server management could be complex** and is generally managed by governments, ISPs, and large companies.
* DNS services have recently come under DDoS attack, preventing users from accessing websites such as Twitter without knowing Twitter's IP address(es).
