Presentation is loading. Please wait.

Presentation is loading. Please wait.

Name and Address Conversions Chap 11. Domain Name System  A lookup mechanism for translating objects into other objects  A globally distributed, loosely.

Similar presentations


Presentation on theme: "Name and Address Conversions Chap 11. Domain Name System  A lookup mechanism for translating objects into other objects  A globally distributed, loosely."— Presentation transcript:

1 Name and Address Conversions Chap 11

2 Domain Name System  A lookup mechanism for translating objects into other objects  A globally distributed, loosely coherent, scalable, reliable, dynamic database  Comprised of three components  Name space  Servers making that name space available  Resolvers (clients) which query the servers about the name space

3 Domain Name Space  DNS's distributed database is indexed by domain names.  Each domain name is essentially just a path in a large inverted tree, called the domain name space.

4 Domain, Delegation, Zone

5 Name Server Architecture Master server Zone transfer Zone data file From disk Authoritative Data (primary master and slave zones) Agent (looks up queries on behalf of resolvers) Cache Data (responses from other name servers) Name Server Process

6 Authoritative Data Resolver Query Response Authoritative Data (primary master and slave zones) Agent (looks up queries on behalf of resolvers) Cache Data (responses from other name servers) Name Server Process

7 Using Other Name Servers Arbitrary name server Response Resolver Query Authoritative Data (primary master and slave zones) Agent (looks up queries on behalf of resolvers) Cache Data (responses from other name servers) Name Server Process Response

8 Cached Data Query Response Authoritative Data (primary master and slave zones) Agent (looks up queries on behalf of resolvers) Cache Data (responses from other name servers) Name Server Process Resolver

9 Name Resolution  A DNS query has three parameters:  A domain name (e.g., ice.hufs.ac.kr),  Remember, every node has a domain name!  A class (e.g., IN), and  A type (e.g., A)  DNS message format Additional Authority Answer Question Header : the question for the name server : RRs answering the question : RRs pointing toward an authority : RRs holding additional information

10 Mapping Addresses to Names

11 Resource Records  주요 RRs  SOA Record (Start Of Authority): 해당 도메인에 대해 네임서버가 인증 (authoritative) 된 자료를 갖고 있음을 의미  NS(Name Server) Record: 해당 도메인에 대한 delegation 하는 네임서버를 지시  A Record: 도메인에 IPv4 주소를 mapping  AAAA Record: 도메인에 IPv6 주소를 mapping  CNAME Record: 도메인에 대한 또 다른 이름 설정  MX(Mail eXchanger) Record: 해당 호스트의 메일 라우팅 경로를 조정  PTR(Pointer) Record: IP 주소를 domain name 으로 reverse mapping 해 주며, Reverse Zone 파일에서 사용 NAME (Dynamic) TYPE(2 Byte) CLASS(2 Byte) TTL(4 Byte) RDLENGTH(2 Byte) RDATA(Dynamic)

12 Name and Address Conversion Functions  Domain name  IPv4 address  IPv4 address  domain name  gethostbyname/gethostbyaddr are not reentrant !! static struct hostent host; /* result stored here */ struct hostent * gethostbyname(const char *hostname) { /* call DNS functions for A or AAAA query */ /* fill in host structure */ return(&host); }

13 Service Name Conversion Functions  Service name  port ( See /etc/services )  Port  service name

14 Example: name/daytimetcpcli1.c Network-related information

15 New Name/Address Conversion Function (1)  hostname : hostname or address string  service : service name or decimal port number string  result : addrinfo data structure is dynamically allocated  Re-entrant, thread-safe, and protocol independent functions (support IPv4, IPv6)

16 New Name/Address Conversion Function (2)  hints : NULL or pointer to addrinfo data structure  The following member can be set by caller  ai_flag /* AI_PASSIVE for server, AI_CANNONNAME */  ai_family/* AF_xxx */  ai_socktype/* SOCK_xxx */  ai_protocol/* 0 or IPPROTO_xxx for IPv4 and IPv6 */  Example

17 getaddrinfo Actions and Results

18 UNP Library Functions #include “unp.h” struct addrinfo *host_serv(const char *hostname, const char *service, int family, int socktype); Returns: pointer to addrinfo structure if OK, NULL on error int tcp_connect(const char *hostname, const char *service); int tcp_listen(const char *hostname, const char *service, socklen_t *lenptr); Both returns: connected socket descriptor if OK, no return on error int udp_client(const char *hostname, const char *service, void **saptr, socklen_t *lenp); Returns: unconnected socket descriptor if OK, no return on error saptr : address of a pointer to a socket address structure that stores destination IP addr/port # for future calls to sendto int udp_connect(const char *hostname, const char *service); Returns: connected socket descriptor if OK, no return on error int udp_server(const char *hostname, const char *service, socklen_t *lenptr); Rerurns: unconnected socket descriptor if OK, no return on error

19 tcp_connect and tcp_listen Functions

20 Protocol-indep Daytime TCP Client/Server names/daytimetcpsrv1.cnames/daytimetcpcli.c

21 Protocol-indep Daytime UDP Client/Server names/daytimeudpsrv2.c names/daytimeudpcli1.c

22 getnameinfo Function  If the caller does not want to return host ( serv ) string, specify hostlen ( servlen ) of 0  flags


Download ppt "Name and Address Conversions Chap 11. Domain Name System  A lookup mechanism for translating objects into other objects  A globally distributed, loosely."

Similar presentations


Ads by Google