You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

TDAT2004 Datakommunikasjon med nettverksprogrammering
Oppgave 16: DNS-protokollen
Av Roger Rambjør Holten

1. Innledning

DNS (Domain Name System) er et desentralisert system for navngivning av enheter og tjenester på nettverk. DNS er også navnet på protokollen som brukes av klienter for å gjøre oppslag mot DNS-tjenere. Den hører hjemme i applikasjonslaget i OSI-modellen.
DNS er standardisert av Internet Engineering Task Force (IETF) gjennom en rekke RFC-dokumenter datert tilbake til november 1983 (RFC 882).

2. Ønsket funksjonalitet

Ved å tilegne navn til tjenere på nettverk så slipper man å huske IP-adressene de har. Det er også mulig å legge til flere IP-adresser under samme navn, som peker til forskjellige tjenere etter hvilke tjenester de tilbyr.

Utviklingen av DNS kan spores tilbake til ARPANET. På denne tiden ble det brukt en tekstfil, vedlikeholdt av Stanford Research Institute, som holdt styr på hvilket navn hver maskin på ARPANET hadde. Etter hvert som nettverket vokste, ble dette upraktisk og
Paul Mockapetris hos University of Southern California utviklet DNS i 1983 hvor en mengde tjenere hver har ansvar for visse domenenavn og de kan oppdateres uavhengig av hverandre.

DNS brukes av alle program som støtter tilkobling til tjenere ved hjelp av domenenavn. De kanskje mest kjente er nettleserne, hvor man kan bruke domenenavn som ntnu.no for å besøke NTNU's nettside istedenfor å måtte huske IP-adressen 129.241.56.116.

3. Virkemåte

Bruken av DNS er vanligvis transparent for sluttbruker. Når en nettleser skal åpne en nettside, vil spørringene mot DNS-tjeneren skje automatisk i bakgrunnen.

En klient gjør oppslag mot en DNS-tjener ved å sende spørringer til den. Spørring blir vanligvis sendt som UDP-pakker på port 53. TCP blir brukt hvis svaret overstiger 512 byte i størrelse. En spørring fra klient fører til ett svar fra tjener.
En oppføring i en DNS-tjener inneholder som oftest flere såkalte ressurs-records (RR) for hvert domene. En spørring kan henten hente ut alle eller bare de av en viss type.

Eksempel på en spørring.

Her gjøres en spørring mot en DNS-tjener for domenenavnet ntnu.no. Dette er lik det som skjer hvis man prøver å åpne denne nettsiden i en nettleser:

Domain Name System (query)
	[Response In: 4]
	Transaction ID: 0x0006
	Flags: 0x0100 Standard query
	0... .... .... .... = Response: Message is a query
	.000 0... .... .... = Opcode: Standard query (0)
	.... ..0. .... .... = Truncated: Message is not truncated
	.... ...1 .... .... = Recursion desired: Do query recursively
	.... .... .0.. .... = Z: reserved (0)
	.... .... ...0 .... = Non-authenticated data: Unacceptable
	Questions: 1
	Answer RRs: 0
	Authority RRs: 0
	Additional RRs: 0
	Queries
		ntnu.no: type A, class IN
			Name: ntnu.no
			[Name Length: 7]
			[Label Count: 2]
			Type: A (Host Address) (1)
			Class: IN (0x0001)


Spørringen begynner med en transaksjons-ID generert av klienten. Deretter følger 16 bits med flagg. Bit 1 er satt til 0, som betyr at dette er en spørring. Bit 8 er satt til 1, som betyr at det er ønsket at DNS-tjeneren søker rekursivt gjennom tjenerhierarkiet for å finne domenenavnet.

Nederst kommer detaljer om spørringen. Den begynner med domenenavnet. Type er hvilken type RR som er ønsket. RR av type A inneholder IP-adressen som er knyttet til domenenavnet. Det er denne IP-adressen webtjeneren nettsiden ligger på benytter.

Svaret fra tjeneren:

Domain Name System (response)
	[Request In: 3]
	[Time: 0.027645000 seconds]
	Transaction ID: 0x0006
	Flags: 0x8180 Standard query response, No error
	1... .... .... .... = Response: Message is a response
	.000 0... .... .... = Opcode: Standard query (0)
	.... .0.. .... .... = Authoritative: Server is not an authority for domain
	.... ..0. .... .... = Truncated: Message is not truncated
	.... ...1 .... .... = Recursion desired: Do query recursively
	.... .... 1... .... = Recursion available: Server can do recursive queries
	.... .... .0.. .... = Z: reserved (0)
	.... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server
	.... .... ...0 .... = Non-authenticated data: Unacceptable
	.... .... .... 0000 = Reply code: No error (0)
	Questions: 1
	Answer RRs: 1
	Authority RRs: 0
	Additional RRs: 0
	Queries
		ntnu.no: type A, class IN
			Name: ntnu.no
			[Name Length: 7]
			[Label Count: 2]
			Type: A (Host Address) (1)
			Class: IN (0x0001)
	Answers
		ntnu.no: type A, class IN, addr 129.241.56.116
			Name: ntnu.no
			Type: A (Host Address) (1)
			Class: IN (0x0001)
			Time to live: 390
			Data length: 4
			Address: 129.241.56.116

Transaksjons-ID-en er her den samme som klienten sendte i spørringen. Det gjør det mulig for klienten å holde styr på alle spørringer den utfører. Bit 1 er satt til 1, som betyr at dette er et svar på en spørring. Deretter følger bits som sier at tjeneren er ikke-autorativ når det gjelder domenet,
og at den kan utføre rekursive spørringer.
Answer RRs inneholder antall RR som finnes av type A. Deretter kommer en reprise av spørringen før pakken avsluttes med svaret fra tjeneren. Svaret inneholder da en RR av type A, som inneholder IP-adressen 129.241.56.116.


4. Kilder
  • No labels