Address Conversion Functions and The Domain Name System
description
Transcript of Address Conversion Functions and The Domain Name System
![Page 1: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/1.jpg)
Netprog: DNS and name lookups 1
Address Conversion Functions and
The Domain Name System
Refs: Chapter 9
RFC 1034
RFC 1035
![Page 2: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/2.jpg)
Netprog: DNS and name lookups 2
Hostnames
• IP Addresses are great for computers– IP address includes information used for
routing.
• IP addresses are tough for humans to remember.
• IP addresses are impossible to guess.– ever guessed at the name of a WWW site?
![Page 3: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/3.jpg)
Netprog: DNS and name lookups 3
The Domain Name System
• The domain name system is usually used to translate a host name into an IP address .
• Domain names comprise a hierarchy so that names are unique, yet easy to remember.
![Page 4: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/4.jpg)
Netprog: DNS and name lookups 4
DNS Hierarchy
edu com org jp
rpi albany
![Page 5: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/5.jpg)
Netprog: DNS and name lookups 5
Host name structure• Each host name is made up of a sequence
of labels separated by periods.– Each label can be up to 63 characters– The total name can be at most 255 characters.
• Examples:– whitehouse.gov– barney.the.purple.dinosaur.com– monica.cs.rpi.edu
![Page 6: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/6.jpg)
Netprog: DNS and name lookups 6
Domain Name
• The domain name for a host is the sequence of labels that lead from the host (leaf node in the naming tree) to the top of the worldwide naming tree.
• A domain is a subtree of the worldwide naming tree.
![Page 7: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/7.jpg)
Netprog: DNS and name lookups 7
Top level domains
• edu, gov, com, net, org, mil, …
• Countries each have a top level domain (2 letter domain name).
• New top level domains include:.aero .biz .coop .info .name .pro
![Page 8: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/8.jpg)
Netprog: DNS and name lookups 8
DNS Organization• Distributed Database
– The organization that owns a domain name is responsible for running a DNS server that can provide the mapping between hostnames within the domain to IP addresses.
– So - some machine run by RPI is responsible for everything within the rpi.edu domain.
![Page 9: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/9.jpg)
Netprog: DNS and name lookups 9
rpi.eduDNS DB
rpi.eduDNS DB
DNS Distributed Database
• There is one primary server for a domain, and typically a number of secondary servers containing replicated databases.
rpi.eduDNS DB
Authoritative
rpi.eduDNS DB
Replicas
rpi.edu DNS server
![Page 10: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/10.jpg)
Netprog: DNS and name lookups 10
DNS Clients• A DNS client is called a resolver.
• A call to gethostbyname()is handled by a resolver (typically part of the client).
• Most Unix workstations have the file /etc/resolv.conf that contains the local domain and the addresses of DNS servers for that domain.
![Page 11: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/11.jpg)
Netprog: DNS and name lookups 11
/etc/resolv.conf
domain rpi.edu
128.113.1.5
128.113.1.3
![Page 12: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/12.jpg)
Netprog: DNS and name lookups 12
nslookup
• nslookup is an interactive resolver that allows the user to communicate directly with a DNS server.
• nslookup is usually available on Unix workstations. (dig and host are also DNS clients).
![Page 13: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/13.jpg)
Netprog: DNS and name lookups 13
DNS Servers
• Servers handle requests for their domain directly.
• Servers handle requests for other domains by contacting remote DNS server(s).
• Servers cache external mappings.
![Page 14: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/14.jpg)
Netprog: DNS and name lookups 14
Server - Server Communication• If a server is asked to provide the
mapping for a host outside it’s domain (and the mapping is not in the server cache):– The server finds a nameserver for the
target domain.– The server asks the nameserver to provide
the host name to IP translation.
• To find the right nameserver, use DNS!
![Page 15: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/15.jpg)
Netprog: DNS and name lookups 15
DNS Data
• DNS databases contain more than just hostname-to-address records:– Name server records NS– Hostname aliases CNAME– Mail Exchangers MX– Host Information HINFO
![Page 16: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/16.jpg)
Netprog: DNS and name lookups 16
The Root DNS Server
• The root server needs to know the address of 1st (and many 2nd) level domain nameservers.
edu com org jp
albanyrpi
![Page 17: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/17.jpg)
Netprog: DNS and name lookups 17
Server Operation
• If a server has no clue about where to find the address for a hostname, ask the root server.
• The root server will tell you what nameserver to contact.
• A request may get forwarded a few times.
![Page 18: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/18.jpg)
Netprog: DNS and name lookups 18
DNS Message Format
HEADER
QUERIES
Response RESOURCE RECORDS
Response AUTHORITY RECORDS
Response ADDITIONAL INFORMATION
HEADER
QUERIES
Response RESOURCE RECORDS
Response AUTHORITY RECORDS
Response ADDITIONAL INFORMATION
![Page 19: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/19.jpg)
Netprog: DNS and name lookups 19
DNS Message Header
• query identifier
• flags
• # of questions
• # of RRs
• # of authority RRs
• # of additional RRs
16 b
it f
ield
s
Response}
![Page 20: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/20.jpg)
Netprog: DNS and name lookups 20
Message Flags
• QR: Query=0, Response=1
• AA: Authoritative Answer
• TC: response truncated (> 512 bytes)
• RD: recursion desired
• RA: recursion available
• rcode: return code
![Page 21: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/21.jpg)
Netprog: DNS and name lookups 21
Recursion
• A request can indicate that recursion is desired - this tells the server to find out the answer (possibly by contacting other servers).
• If recursion is not requested - the response may be a list of other name servers to contact.
![Page 22: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/22.jpg)
Netprog: DNS and name lookups 22
Question Format
• Name: domain name (or IP address)
• Query type (A, NS, MX, …)
• Query class (1 for IP)
![Page 23: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/23.jpg)
Netprog: DNS and name lookups 23
Response Resource Record
• Domain Name
• Response type
• Class (IP)
• Time to live (in seconds)
• Length of resource data
• Resource data
![Page 24: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/24.jpg)
Netprog: DNS and name lookups 24
UDP & TCP
• Both UDP and TCP are used:– TCP for transfers of entire database to
secondary servers (replication).– UDP for lookups– If more than 512 bytes in response -
requestor resubmits request using TCP.
![Page 25: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/25.jpg)
Netprog: DNS and name lookups 25
Lots more
• This is not a complete description !
• If interested - look at:– RFC 1034: DNS concepts and facilities.– RFC 1035: DNS implementation and
protocol specification.– play with nslookup.– Look at code for BIND (DNS server code).
![Page 26: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/26.jpg)
Netprog: DNS and name lookups 26
Name to Address Conversion
• There is a library of functions that act as DNS client (resolver).– you don’t need to write DNS client code to
use DNS!
• With some OSs you need to explicitly link with the DNS resolver library:-lnsl (nsl is “Name Server Library”)
Suns (Solaris) need this!
![Page 27: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/27.jpg)
Netprog: DNS and name lookups 27
DNS library functions
gethostbyname
gethostbyaddr
gethostbyname2IPV6!
![Page 28: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/28.jpg)
Netprog: DNS and name lookups 28
gethostbyname
struct hostent *gethostbyname( const char *hostname);
struct hostent is defined in netdb.h:
#include <netdb.h>
![Page 29: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/29.jpg)
Netprog: DNS and name lookups 29
struct hostent
struct hostent {
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
};
official name (canonical)
other names
AF_INET or AF_INET6
address length (4 or 16)
array of ptrs to addresses
![Page 30: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/30.jpg)
Netprog: DNS and name lookups 30
hostent picture
h_name
h_aliases
h_addrtype
h_length
h_addr_list
Official Name
alias 1
alias 2
null
IP address 1
IP address 2
null
![Page 31: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/31.jpg)
Netprog: DNS and name lookups 31
Which Address?
On success, gethostbyname returns the address of a hostent that has been created.– has an array of ptrs to IP addresses– Usually use the first one:
#define h_addr h_addr_list[0]
![Page 32: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/32.jpg)
Netprog: DNS and name lookups 32
gethostbyname and errors
• On error gethostbyname return null.• Gethostbyname sets the global variable h_errno to indicate the exact error:– HOST_NOT_FOUND– TRY_AGAIN– NO_RECOVERY– NO_DATA– NO_ADDRESS
All defined in netdb.h
![Page 33: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/33.jpg)
Netprog: DNS and name lookups 33
Getting at the address:char **h_addr_list;
h = gethostbyname("joe.com");
sockaddr.sin_addr.s_addr =
*(h->h_addr_list[0]);
This won't work!!!!
h_addr_list[0] is a char* !
![Page 34: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/34.jpg)
Netprog: DNS and name lookups 34
Using memcpy
• You can copy the 4 bytes (IPv4) directly:
h = gethostbyname("joe.com");
memcpy(&sockaddr.sin_addr,
h->h_addr_list[0],
sizeof(struct in_addr));
![Page 35: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/35.jpg)
Netprog: DNS and name lookups 35
Network Byte Order
• All the IP addresses returned via the hostent are in network byte order!
• Repeat after me:
"Thank you gethostbyname!"
![Page 36: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/36.jpg)
Netprog: DNS and name lookups 36
gethostbyaddr
struct hostent *gethostbyaddr( const char *addr
size_t len,
int family);AF_INET (could be AF_INET6)
sizeof(struct in_addr)
![Page 37: Address Conversion Functions and The Domain Name System](https://reader035.fdocuments.us/reader035/viewer/2022062804/56814c24550346895db9289a/html5/thumbnails/37.jpg)
Netprog: DNS and name lookups 37
Some other functions
uname : get hostname of local host
getservbyname : get port number for a named service
getservbyaddr : get name for service associated with a port number