본문 바로가기
CS/컴퓨터네트워크

[열혈] dns

by sun__ 2020. 10. 24.

도메인 이름, dns, 리눅스에서 도메인 이름으로 IP주소 얻어오기

 


도메인 이름 : 인터넷에서 서비스를 제공하는 서버들 역시 IP주소로 구분이 된다. ip주소로 서버의 주소정보를 기억하긴 힘들기 때문에 직관적인 형태의 도메인 이름을 IP 주소에 부여해서 이것이 IP주소를 대체할 수 있도록 한다. 

 

dns서버 : 도메인 이름에 해당하는 IP주소를 저장한 서버. dns 서버에 도메인 이름을 줘서 IP주소를 얻어낼 수 있다.

 

컴퓨터에 기본으로 설정된 디폴트 dns 서버가 모든 도메인의 IP 주소를 알고 있지는 않다. 만약 모른다면 다른  dns서버에 물어봐서 알려준다. 아래 그림과 같이 dns는 계층적으로 관리되는 일종의 분산 데이터베이스 시스템이라고 할 수 있다.

 

콘솔에서 ping www.naver.com 을 치면 해당 도메인 주소의 ip주소가 나온다.

콘솔에 nslookup을 치면 default dns 서버의 ip주소가 나온다.

( www.naver.com : 210.89.164.90)

 

#include <netdb.h>

struct hostent * gethostbyname(const char * hostname);
/*
도메인 이름을 받아 IP정보 등 얻어옴
성공 시 hostent 구조체 변수의 주소 값, 실패 시 NULL 포인터 반환

struct hostent{
	char * h_name; //official name, 공식 도메인 이름
    char ** h_aliases; 	//alias list, 같은 ip 여러 도메인 이름의 리스트
    int h_addrtype;	//host address type, 주소체계에 대한 정보(IPv4인지 IPv6인지 gethostbyname은 이 멤버를 통해 반환) 
    int h_length;	//address length, (IPv4인 경우 4바이트, IPv6인 경우 16바이트)
    char ** h_addr_list;	//address list, (서버 분산 가능. IP 리스트)
}
*/

struct hostent * gethostbyaddr(const char * addr, socklen_t len ,int family);
//설명 생략 찾아보셈. IP주소를 이용해서 도메인 정보 얻어옴