이름과 주소 변환 DNS 해결사 함수 정보통신대학 컴퓨터 학과 2005220020 도희성 Chap. 11.

Slides:



Advertisements
Similar presentations
정보 보안 개론과 실습 네트워크 해킹과 보안 3부 해킹 전 정보 획득 Chapter 10. 목록화.
Advertisements

김태원 심재일 김상래 강신택. 김태원 심재일 김상래 강신택 인터넷 통신망의 정보를 제공하는 서비스 인터넷의 자원 및 정보는 NIC가 관리 IP주소 또는 도메인으로 정보 검색 이용자 및 통신망 관한 정보를 제공.
Ch.07-5 xml-rpc 사용하기 김상엽.
Network Lab. Young-Chul Hwang
연결리스트(linked list).
컴퓨터 프로그래밍 기초 [Final] 기말고사
PHP입문 Izayoi 김조흔.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
Load Balancing L4와 L7은 어떻게 동작할까?.
Chapter 5. DNS (Domain Name System)
Chapter 03. 소켓 주소 구조체 다루기.
제 16 장 DNS 16.1 네임공간 16.2 도메인 네임공간 16.3 네임공간의 분포 16.4 인터넷에서 사용되는 DNS
Domain Name System (DNS)
얇지만 얇지 않은 TCP/IP 소켓 프로그래밍 C 2판
호스트이름과 네트워크이름 찾기 (Hostname and Network Name Lookups)
4 Whois와 DNS 조사.
Internet Address Conversion Functions
3장. 소켓 주소 구조체 다루기 소켓 주소 구조체의 정의와 초기화 방법을 익힌다.
인터넷 주소 변환 School of Electronics and Information. Kyung Hee University.
도메인 네임 시스템 석사 2차 : 최재영 운영체제론.
Content Delivery Network과 DNS
Socket Address Structure and Byte Ordering Functions
제 14 장 도메인 네임 시스템 정보통신연구실.
Chapter 21 Network Layer: ARP, ICMP (IGMP).
1. C++ 시작하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
Socket Address Structure and Byte Ordering Functions
Content Delivery Network과 DNS
Homework 6… 12월 2일(금) 11:59pm까지 자신의 이름과 학번을 출력해 주는 유닉스/리눅스 네트워크 소켓 서버 프로그램 과 클라이언트 프로그램 을 작성해 보세요 참고 (실습1) Hello 프로그램 helloserver.c helloclient.c 컴파일.
Internet Address Conversion Functions
Chapter 06. UDP 서버/클라이언트.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
FTP 프로그램의 활용 FTP 프로그램의 용도 인터넷 공간에 홈페이지 파일을 업로드할 때 필요
Chapter 03. 소켓 주소 구조체 다루기.
14장. 포인터와 함수에 대한 이해.
Socket Address Structure and Byte Ordering Functions
Internet Address Conversion Functions
Socket Address Structure and Byte Ordering Functions
뇌를 자극하는 Windows Server 장. 장애 조치 클러스터.
시스템 인터페이스 Lab3 Unix 사용법 실습.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
Chapter 03 Whois와 DNS 조사.
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
Internet Address Conversion Functions
School of Electronics and Information. Kyung Hee University.
1 학습 목표 네트워크의 기초 네트워크 관련 기초 용어를 익힌다.
24장. 파일 입출력.
ACL(Access Control List)
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
CGI란 무엇인가? CGI(Common Gateway Interface)의 정의
Chapter 16 Socket Interface.
인터넷 주소변환 School of Electronics and Information. Kyung Hee University.
01. DHCP의 개념 조직의 네트워크에 연결되어 있는 워크스테이션의 TCP/IP 설정을 자동화하기 위한 표준 프로토콜
01. 개요 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 IP 주소를 찾아주는 서비스
STS 에서 웹 서버 설치 방법.
Chapter 27 Mobile IP.
01. 개요 DNS(Domain Name System)는 인터넷 주소를 IP 주소로 바꾸기 위한 체계적인 방법
Chapter 04. TCP 서버/클라이언트.
7주차: Functions and Arrays
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
Summary of Pointers and Arrays
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 제 8장 도메인 이름과 인터네 주소 인공지능실험실 박사 1학기 장성만
Numerical Analysis Programming using NRs
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
Chapter 03. 소켓 주소 구조체 다루기.
소켓의 생성과 프로토콜의 설정 School of Electronics and Information.
13. 포인터와 배열! 함께 이해하기.
ARP.
Presentation transcript:

이름과 주소 변환 DNS 해결사 함수 정보통신대학 컴퓨터 학과 도희성 Chap. 11

개요 숫자로 표시 된 주소 호스트 주소 (eg ) 서버 포트 (eg. 메아리서버 포트 9877, 표준시각 포트 13) 이름으로 주소를 표시하자 이름이 기억하기 더 쉬움 숫자 주소는 변할 수 있음 ( 이름은 그렇지 않다 ) IPv6 에서 숫자 주소가 매우 길어진다. 이름과 숫자를 변환하는 함수 gethostbyname, gethostbyport - 호스트 /IPv4 주소 間 getservbyname, getservbyport – 서비스 /port 번호 間 1

영역 이름 시스템 (DNS) 호스트 이름과 IP 주소와의 대응 관계 찾기 위해 사용 호스트 이름의 종류 단순 형 Solaris, freebsd 한정 형 (FQDN) Unpbook.com 기술적으로 절대 이름이라고 하며 반드시 마침표로 끝남. 마지막 마침표는 생략 가능 ( 흔히 생략 : naver.com. ) 끝의 마침표는 해결사에게 한정적임. 즉 가능한 영역 목록을 찾 을 필요가 없음을 알려 준다. 2

자원 기록 DNS 의 항목을 자원 기록 ( RR) 이라고 함. A 호스트 이름을 32bit IPv4 주소로 변환 AAAA Quad A – 32bit 의 4 배라서 128 bit IPv6 주소로 변환 PTR 지시자 기록 IP 주소를 호스트 이름으로 변환 MX 특정한 호스트에 대해 mail 교환기로 동작하도록 명시 CNAME 정규 이름 ftp, www 같은 일반적인 서비스에 할당. 실제 호스트이름 대신에 이 서비스 이름을 사용하면 서비스가 다른 호스트로 이동하더라도 상관하지 않음 3

자원기록 ( CONT.) Free bsdINA INAAAA3ffe:b80:1f8d.1.a00:20ff:fea7:686b INMX5freebsd.unpbook.com. INMX10mailhost.unpbook.com. ftpINCNAMElinux.unpbook.com. wwwINCNAMElinux.unpbook.com. 4

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

DNS 서버의 작동 순서 Domain name 의 구성 Root domain – ‘.’ 으로 표시 ( 이 서버는 전세계에 13 개 ) Top Level Domain Country Code Based TLD ( 국가 기반 ) ‘.kr’, ‘.jp’ 등 Global TLD ( 국가 초월 ) ‘.com’, ‘.net’ 이 아래에 하위 도메인이 앞에 붙어 나간다. 이런 각 Domain 들에게 각 Domain 에 관한 이름 정보 를 보관하고 실시간 질의에 응답하는 서버를 DNS 서 버라고 부른다. 6

DNS 서버의 작동 순서 ( CONT.) 1. 사용자가 웹에서 URL 입력 (eg 자신의 DNS 서버에게 의 ip 주소가 무엇인지 질의 3. 질의 받은 DNS 서버는 루트 도메인 서버에게 질의 전달 4. 정보 없다면 ‘.kr’ domain name server 주소 리턴 5. ‘.kr’ domain name server 는 ‘.ac.kr’ name server 주소 리턴 6. 이런 식으로 하위 name server 들이 연결되고 최종적으로 의 ip 주소 리턴 7. 이 정보들은 각 시스템에 cache 형태로 보관 다음 계속적인 질의 는 바로 응답 가능 7

GETHOSTBYNAME 함수 대부분의 응용에서는 주소 대신에 이름을 다루어야 한다. 호스트를 이름으로 찾는 가장 기본적인 함수 성공하면 호스트에 대한 모든 IPv4 주소를 가지고 있 는 hostent 구조를 가리키는 지시자를 리턴 IPv4 만을 다루기 때문에 새로운 프로그램에서는 getaddrinfo 의 사용을 권고한다. 8

GETHOSTBYNAME 함수 ( CONT.) Struct hostent{ 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 주소만을 돌려줄 수 있다. 9 n. 별명, 가명 #include Struct hostent *gethostbyname(const char *hostname);

GETHOSTBYADDR 함수 addr : ip 주소, len : 구조의 크기 (4 이다 ), family : AF_INET 이진 IPv4 주소를 취하여 그 주소에 해당하는 호스트 이름을 찾으려 한다. gethostbyname 의 반대 역할. getbyhostname 에서 설명한 것과 같은 hostent 구조에 대한 지시자를 돌려 준다. 10 #include Struct hostent *gethostbyaddr(const char *addr, socklen_t len, int family);

참고 자료 AIX Advanced International eXecutive 미국 IBM 사가 개발하여 판매하고 있는 UNIX BSD Berkeley Software Distribution 의 약어 년대 초반에 미국 캘리포니아 대학 버클리분교에서 개발한 유닉스 운영체제의 한 종류. 11

GETSERVBYNAME & GETSERVBYPORT 호스트와 마찬가지로 서비스도 흔히 이름으로 알려 짐. 프로그램에서 포트 번호 대신에 이름으로 서비스를 참조하면 포트 번호가 바뀔 경우 /etc/services 파일의 한 줄만 변경하면 된다. 12

GETSERVBYNAME 주어진 이름으로 서비스를 검색한다.(port 를 얻는다 ) Servname 은 반드시 명시, protoname 은 아니다. 프로토콜은 udp 와 tcp 가 있는데 하나의 프로토콜만 지원하는 서비스가 있으므로 잘 알고 써야 함. Struct servent{ char *s_name; char **s_aliases; int s_port; char *s_proto; } 13 #include Struct servent *getservbyname(const char *servname, const char *protoname);

GETSERVBYNAME ( CONT.) 함수의 전형적인 호출 struct servent *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 만 지원하기 때문에 14

GETSERVBYPORT 주어진 포트 번호와 프로토콜을 이용해서 서비스 검색 함수의 전형적인 호출 struct servent *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 번 포트 사용하는 서비스 없다. 15 #include Struct servent *getservbynport(int port, const char *protoname);

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

17 -END-