정보통신대학 컴퓨터 학과
This presentation is the property of its rightful owner.
Sponsored Links
1 / 18

이름과 주소 변환 PowerPoint PPT Presentation


  • 189 Views
  • Uploaded on
  • Presentation posted in: General

정보통신대학 컴퓨터 학과 2005220020 도희성. 이름과 주소 변환. Chap. 11. DNS 해결사 함수. 개요. 숫자로 표시 된 주소 호스트 주소 ( eg . 206.6.226.33) 서버 포트 ( eg . 메아리서버 포트 9877, 표준시각 포트 13) 이름으로 주소를 표시하자 이름이 기억하기 더 쉬움 숫자 주소는 변할 수 있음 ( 이름은 그렇지 않다 ) IPv6 에서 숫자 주소가 매우 길어진다 . 이름과 숫자를 변환하는 함수

Download Presentation

이름과 주소 변환

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3251157

정보통신대학 컴퓨터 학과2005220020

도희성

이름과 주소 변환

Chap. 11

DNS

해결사 함수


3251157

개요

  • 숫자로 표시 된 주소

    • 호스트 주소 (eg. 206.6.226.33)

    • 서버 포트 (eg. 메아리서버 포트 9877, 표준시각 포트 13)

  • 이름으로 주소를 표시하자

    • 이름이 기억하기 더 쉬움

    • 숫자 주소는 변할 수 있음(이름은 그렇지 않다)

    • IPv6에서 숫자 주소가 매우 길어진다.

  • 이름과 숫자를 변환하는 함수

    • gethostbyname, gethostbyport - 호스트/IPv4 주소 間

    • getservbyname, getservbyport – 서비스/port번호 間


3251157

영역 이름 시스템(DNS)

  • 호스트이름과 IP주소와의 대응 관계 찾기 위해 사용

  • 호스트 이름의 종류

    • 단순 형

      • Solaris, freebsd

    • 한정 형(FQDN)

      • Unpbook.com

      • 기술적으로 절대 이름이라고 하며 반드시 마침표로 끝남.

      • 마지막 마침표는 생략 가능(흔히 생략 : naver.com. )

      • 끝의 마침표는 해결사에게 한정적임. 즉 가능한 영역 목록을 찾을 필요가 없음을 알려 준다.


3251157

자원 기록

  • DNS의 항목을 자원 기록( RR)이라고 함.

  • A

    • 호스트 이름을 32bit IPv4주소로 변환

  • AAAA

    • Quad A – 32bit의 4배라서

    • 128 bit IPv6 주소로 변환

  • PTR

    • 지시자 기록

    • IP주소를 호스트 이름으로 변환

  • MX

    • 특정한 호스트에 대해 mail 교환기로 동작하도록 명시

  • CNAME

    • 정규 이름

    • ftp, www 같은 일반적인 서비스에 할당.

    • 실제 호스트이름 대신에 이 서비스 이름을 사용하면 서비스가 다른 호스트로 이동하더라도 상관하지 않음


3251157

자원기록(cont.)

Free bsdINA12.106.32.254

INAAAA3ffe:b80:1f8d.1.a00:20ff:fea7:686b

INMX5freebsd.unpbook.com.

INMX10mailhost.unpbook.com.

ftpINCNAMElinux.unpbook.com.

wwwINCNAMElinux.unpbook.com.


3251157

해결사와 이름 서버

  • 해결사 함수

    • Application이 호스트 이름을 ip주소로 바꾸거나 ip주소를 호스트 이름으로 변환하기 위해 호출하는 함수 집합

  • 종종 BIND라는 프로그램으로 이름 서버 가동

  • Application들은 해결사 함수를 호출함으로써 DNS서버와 접촉

  • 흔한 해결사 함수

    • gethostbyname

    • gethostbyaddr


3251157

DNS서버의 작동 순서

  • Domain name의 구성

    • Root domain – ‘.’ 으로 표시 (이 서버는 전세계에 13개)

    • Top Level Domain

      • Country Code Based TLD (국가 기반)

        • ‘.kr’, ‘.jp’ 등

      • Global TLD (국가 초월)

        • ‘.com’, ‘.net’

    • 이 아래에 하위 도메인이 앞에 붙어 나간다.

  • 이런 각 Domain들에게 각 Domain에 관한 이름 정보를 보관하고 실시간 질의에 응답하는 서버를 DNS서버라고 부른다.


Dns cont

DNS서버의 작동 순서(cont.)

  • 사용자가 웹에서 URL 입력(eg. www.korea.ac.kr)

  • 자신의 DNS 서버에게 www.korea.ac.kr의 ip주소가 무엇인지 질의

  • 질의 받은 DNS 서버는 루트 도메인 서버에게 질의 전달

  • 정보 없다면 ‘.kr’domainname server 주소 리턴

  • ‘.kr’ domain name server는 ‘.ac.kr’ name server 주소 리턴

  • 이런 식으로 하위 name server들이 연결되고 최종적으로 www.korea.ac.kr의 ip주소 리턴

  • 이 정보들은 각 시스템에 cache형태로 보관 다음 계속적인 질의는 바로 응답 가능


Gethostbyname

gethostbyname함수

  • 대부분의 응용에서는 주소 대신에 이름을 다루어야 한다.

  • 호스트를 이름으로 찾는 가장 기본적인 함수

  • 성공하면 호스트에 대한 모든 IPv4 주소를 가지고 있는 hostent구조를 가리키는 지시자를 리턴

  • IPv4만을 다루기 때문에 새로운 프로그램에서는 getaddrinfo의 사용을 권고한다.


Gethostbyname cont

gethostbyname함수(cont.)

#include <netdb.h>

Structhostent *gethostbyname(const char *hostname);

Structhostent{

Char *h_name; //official name of host

Char **h_aliases; //pointer to array of pointers to alias names

Inth_addrtype; // host address type : AF_INET

Inth_length; //length of address : 4

Char **h_addr_list; //ptr to array of ptrs with IPv4 addrs

};

  • DNS 자원 기록에서의 A기록에 대한 질의를 수행한다.

  • IPv4 주소만을 돌려줄 수 있다.

n. 별명, 가명


Gethostbyaddr

gethostbyaddr함수

#include <netdb.h>

Structhostent *gethostbyaddr(const char *addr, socklen_tlen, intfamily);

  • addr : ip주소, len : 구조의 크기(4이다), family : AF_INET

  • 이진 IPv4주소를 취하여 그 주소에 해당하는 호스트 이름을 찾으려 한다.

  • gethostbyname의 반대 역할.

  • getbyhostname에서 설명한 것과 같은 hostent구조에 대한 지시자를 돌려 준다.


3251157

참고 자료

  • AIX

    • Advanced International eXecutive

    • 미국 IBM사가 개발하여 판매하고 있는 UNIX

  • BSD

    • Berkeley Software Distribution의 약어.

    • 1980년대 초반에 미국 캘리포니아 대학 버클리분교에서 개발한 유닉스 운영체제의 한 종류.


Getservbyname getservbyport

getservbyname & getservbyport

  • 호스트와마찬가지로 서비스도 흔히 이름으로 알려짐.

  • 프로그램에서 포트 번호 대신에 이름으로 서비스를 참조하면 포트 번호가 바뀔 경우 /etc/services 파일의 한 줄만 변경하면 된다.


Getservbyname

getservbyname

  • 주어진 이름으로 서비스를 검색한다.(port를 얻는다)

  • Servname은 반드시 명시, protoname은 아니다.

  • 프로토콜은 udp와 tcp가 있는데 하나의 프로토콜만 지원하는 서비스가 있으므로 잘 알고 써야 함.

    Structservent{

    char *s_name;

    char **s_aliases;

    ints_port;

    char *s_proto;

    }

#include <netdb.h>

Structservent *getservbyname(const char *servname, const char *protoname);


Getservbyname cont

getservbyname(cont.)

  • 함수의 전형적인 호출

    structservent *sptr;

    sptr=getservbyname(“domain”, “udp”);

    //DNS using UDP

    sptr=getservbyname(“ftp”,”tcp”);

    //FTP using TCP

    sptr=getservbyname(“ftp”,NULL);

    //FTP using TCP

    sptr=getservbyname(“ftp”,”udp”);

    //this call will fail – ftp는 tcp만 지원하기 때문에


Getservbyport

getservbyport

  • 주어진 포트 번호와 프로토콜을 이용해서 서비스 검색

  • 함수의 전형적인 호출

    structservent *sptr;

    sptr=getservbyport(htons(53), “udp”);

    //DNS using UDP

    sptr=getservbyport(htons(21), “tcp”);

    //FTP using TCP

    sptr=getservbyport(htons(21), NULL);

    //FTP using TCP

    sptr=getservbyport(htons(21), “udp”);

    //this call will fail – udp에서 21번 포트 사용하는 서비스 없다.

#include <netdb.h>

Structservent *getservbynport(intport, const char *protoname);


Getaddrinfo

getaddrinfo함수

  • gethostbyname과 gethostbyaddr함수는 IPv4만 지원한다.

  • IPv6 주소의 해결을 위한 결과는 getaddrinfo함수이다.

  • 이름을 주소로 그리고 서비스를 포트로 변환시킬 뿐 아니라 주소 목록 대신에 sockaddr구조를 돌려준다.


3251157

-END-


  • Login