slide1
Download
Skip this Video
Download Presentation
이름과 주소 변환

Loading in 2 Seconds...

play fullscreen
1 / 18

이름과 주소 변환 - PowerPoint PPT Presentation


  • 256 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '이름과 주소 변환' - abba


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
slide2
개요
  • 숫자로 표시 된 주소
    • 호스트 주소 (eg. 206.6.226.33)
    • 서버 포트 (eg. 메아리서버 포트 9877, 표준시각 포트 13)
  • 이름으로 주소를 표시하자
    • 이름이 기억하기 더 쉬움
    • 숫자 주소는 변할 수 있음(이름은 그렇지 않다)
    • IPv6에서 숫자 주소가 매우 길어진다.
  • 이름과 숫자를 변환하는 함수
    • gethostbyname, gethostbyport - 호스트/IPv4 주소 間
    • getservbyname, getservbyport – 서비스/port번호 間
slide3
영역 이름 시스템(DNS)
  • 호스트이름과 IP주소와의 대응 관계 찾기 위해 사용
  • 호스트 이름의 종류
    • 단순 형
      • Solaris, freebsd
    • 한정 형(FQDN)
      • Unpbook.com
      • 기술적으로 절대 이름이라고 하며 반드시 마침표로 끝남.
      • 마지막 마침표는 생략 가능(흔히 생략 : naver.com. )
      • 끝의 마침표는 해결사에게 한정적임. 즉 가능한 영역 목록을 찾을 필요가 없음을 알려 준다.
slide4
자원 기록
  • DNS의 항목을 자원 기록( RR)이라고 함.
  • A
    • 호스트 이름을 32bit IPv4주소로 변환
  • AAAA
    • Quad A – 32bit의 4배라서
    • 128 bit IPv6 주소로 변환
  • PTR
    • 지시자 기록
    • IP주소를 호스트 이름으로 변환
  • MX
    • 특정한 호스트에 대해 mail 교환기로 동작하도록 명시
  • CNAME
    • 정규 이름
    • ftp, www 같은 일반적인 서비스에 할당.
    • 실제 호스트이름 대신에 이 서비스 이름을 사용하면 서비스가 다른 호스트로 이동하더라도 상관하지 않음
slide5
자원기록(cont.)

Free bsd IN A 12.106.32.254

IN AAAA 3ffe:b80:1f8d.1.a00:20ff:fea7:686b

IN MX 5 freebsd.unpbook.com.

IN MX 10 mailhost.unpbook.com.

ftp IN CNAME linux.unpbook.com.

www IN CNAME linux.unpbook.com.

slide6
해결사와 이름 서버
  • 해결사 함수
    • Application이 호스트 이름을 ip주소로 바꾸거나 ip주소를 호스트 이름으로 변환하기 위해 호출하는 함수 집합
  • 종종 BIND라는 프로그램으로 이름 서버 가동
  • Application들은 해결사 함수를 호출함으로써 DNS서버와 접촉
  • 흔한 해결사 함수
    • gethostbyname
    • gethostbyaddr
slide7
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

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

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

  • addr : ip주소, len : 구조의 크기(4이다), family : AF_INET
  • 이진 IPv4주소를 취하여 그 주소에 해당하는 호스트 이름을 찾으려 한다.
  • gethostbyname의 반대 역할.
  • getbyhostname에서 설명한 것과 같은 hostent구조에 대한 지시자를 돌려 준다.
slide12
참고 자료
  • 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

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

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

getaddrinfo
getaddrinfo함수
  • gethostbyname과 gethostbyaddr함수는 IPv4만 지원한다.
  • IPv6 주소의 해결을 위한 결과는 getaddrinfo함수이다.
  • 이름을 주소로 그리고 서비스를 포트로 변환시킬 뿐 아니라 주소 목록 대신에 sockaddr구조를 돌려준다.
ad