DNS:n näkymätön taika: Näin selain löytää tiensä netin syövereihin
DNS:n näkymätön taika: Näin selain löytää tiensä perille
Joka kerta kun avaat sivuston, selaimesi tekee pientä ihmeen. Se muuttaa domain-nimen IP-osoitteeksi, paikantaa oikean palvelimen jostain maailmankolkasta ja yhdistää sinut sekunneksia myöhemmin. Tämän ihmeen takana on DNS eli Domain Name System. Se on paljon nokkelampi, kuin moni kehittäjä tajuaakaan.
DNS syntyi vuonna 1983, kun internet pyöri modeemeilla ja web oli vasta unelma. Paul Mockapetris suunnitteli sen nopeaksi, skaalautuvaksi ja kestäväksi epävakaissa verkoissa. Neljä vuosikymmentä myöhemmin se pitää yhä pintansa. Katsotaanpa, miksi.
Nopeuden salaisuus: UDP ennen TCP:tä
Ensimmäinen nerokas kikka on yksinkertainen: DNS käyttää UDP:tä TCP:n sijaan.
TCP vaatii kolmivaiheisen kädenpuristuksen ennen kuin voit lähettää varsinaisen kyselyn. Jos jokainen DNS-haku vaatisi tämän, netti mateleisi. Yksi sivu lataa kymmeniä hakuja – lasketko itsekin viiveen?
UDP ohittaa kaiken. Lähetät yhden paketin porttiin 53 kyselylläsi. Palvelin vastaa yhdellä paketilla. Valmista. Ei kädenpuristusta, ei neuvottelua – pelkkä kysymys ja vastaus.
Miinuspuoli? UDP-paketit voivat kadota. DNS ratkaisee tämän helposti: jos vastausta ei kuulu aikarajassa, kysyt uudelleen. Yli 99 % hauista mahtuu 512 tavun pakettiin, joten häviöitä on harvoin.
Varasuunnitelmana on TC-bitti (Truncated). Jos vastaus on liian iso – kuten DNSSEC-allekirjoitusten kanssa – palvelin keskeyttää ja asiakas siirtyy TCP:hen portissa 53. Nopea oletus, luotettava hätä.
Delegointi: Käänteinen puu
DNS:n skaalautuvuuden salaisuus on tämä: ei ole yhtä jättirekisteriä kaikista domaineista.
Sen sijaan DNS on käänteinen puu, joka luetaan oikealta vasemmalle. Kun haet www.example.com., matka alkaa juuresta (se piilotettu piste lopussa) ja delegoidaan alaspäin:
Root-palvelimet ovat portti. Niitä on 13 loogista (A–M), mutta Anycast levittää niitä tuhansille kopioille maailmanlaajuisesti. Lähin vastaa. Ne eivät tunne domainiasi, vaan kertovat, ketkä hoitavat .com:ia, .org:ia tai .uk`:ta.
TLD-palvelimet (Top-Level Domain) pyörittävät rekisterit. Verisignillä on .com, Afilias .info:lla ja ccTLD:t maakohtaisesti. Kysy example.com:sta, saat nameserverit, jotka vastaavat siitä.
Authoritative nameserverit ovat puun alaosa. Ne istuvat rekisteröijälläsi tai DNS-tarjoajalla kuten Cloudflarella, Route 53:lla tai NameOceanilla. Niissä on zone file: A-, AAAA-, CNAME- ja MX-rekisterit. Vastauksessa palaa aa-bitti: "Minä olen auktoriteetti. Tämä on totuus."
Tässä on kananmunaongelma: entä jos nameserveri on ns1.example.com? Miten löydät sen IP:n ennen domainin IP:tä? TLD auttaa glue-rekistereillä – ne antavat nameserverin IP:n suoraan NS-delegaatiossa. Ilman niitä systeemi kaatuu.
Välimuisti: Netin todellinen supervoima
Karmea totuus: jos jokainen haku kulkisi koko puun läpi, internet romahtaisi.
Peli pelastuu aggressiivisella välimuistilla joka tasolla.
Jokainen DNS-rekisteri kantaa TTL-arvon sekunneissa. Lupaus: "Tämä kelpaa X sekuntia. Älä kysy aiemmin." Välimuistia on kaikkialla:
- Selaimessa – Chromen sisäinen varasto näkyy
chrome://net-internals/#dns:ssä. - Käyttöjärjestelmässä – Linuxilla
systemd-resolved, macOS:llamDNSResponder, Windowsilla DNS Client. - Rekursiivisessa resolverissa – Googlen 8.8.8.8, Cloudflaren 1.1.1.1 tai operaattorisi resolverit jakavat muistin miljoonille. Yhden missi on muiden hitti.
Siksi TTL on kriittinen muutoksissa. Siirrätkö sivua? Laske TTL etukäteen 24 tunnista 5 minuuttiin. Muuten vanha IP ohjaa liikennettä päivän, vaikka olisit vaihtanut kaiken.
Reitityksen taika: Anycast
Nyt nerokkuus huipentuu.
Miten Googlen 8.8.8.8 vastaa Tokiosta 2 ms:ssä ja Lontoosta yhtä nopeasti? Miten 13 rootia skaalautuu tuhansiin? Ei DNS, vaan Anycast-reititys.
Normaalisti IP viittaa yhteen palvelimeen. Anycastissa satoja palvelimia julistavat saman IP:n BGP:llä (Border Gateway Protocol). Reititin ohjaa pakettisi lähimpään datakeskukseen.
Tämän ansiosta Cloudflare tarjoaa DNS:ää millisekunneissa kaikkialla. DDoS-hyökkäykset rootteja vastaan hajautuvat automaattisesti – taikaa infrastruktuureissa.
Kaikki kasassa
DNS on hajautettujen järjestelmien mestariteos. Se on nopea UDP:lla. Skaalautuu delegaatiopuiden ansiosta. Kestää kuormaa välimuisteilla. Saapuu matalalla viiveellä Anycastin voimin.
Suunniteltu 1983 vaatimattomalle netille, se pyörittää nyt webiä biljoonilla hauilla päivässä. Periaatteet eivät vanhene.
NameOceanin kanssa rakentaessa tai DNS:ää skaalatessa nämä perusteet muuttavat domainien hallintaa, migraatioita ja optimointia. DNS ei ole putkea – se on netin verenkierto.