본문 바로가기

카테고리 없음

linux에서 도메인 네임을 어떻게 가져올까?

"인터넷"이라는 환경을 사람들은 당연하게 사용하고 이미 구축되어있는 것들에 궁금증을 가지지 않는다.

심지어 개발자인 나 조차도 어떻게 인터넷을 사용하는지 숨겨져있는 곳에 관심을 갖지 않았고 당연히 모르고있었다.

 

그 중 리눅스에서 도메인네임을 ip와 포트로 변경하는 것에 대해 알아보자.

 

우리는 www.tistory.com 이라는 도메인주소를 알고있다. 하지만 그 서버의 ip를 기억하지는 못한다. 이렇게 도메인을 ip로 변경해주는 역할을 누가 하고있는 것일까?

 

리눅스에서는 먼저 /etc/nsswitch.conf 라는 파일에 hosting하는 방법에 대해 명시하고있다.

hosts: files dns

명시되어있는것을 보았을때 우리는 file을 확인하고, dns를 확인해서 도메인주소를 ip로 변경한다는 의미를 확인할 수 있다.

 

hosts가 명시되어있는 파일은 linux에서 /etc/hosts 라는 파일이다.

기본적으로는 localhost만 기록이 되어있는데 이 파일을 수정하면 원하는 도메인주소를 ip로 변경할 수 있다.

 

그 외의 대부분의 도메인 주소들을 ip주소로 알려주는 곳은 DNS서버이다.

그리고 linux 에서는 /etc/resolv.conf 라는 파일에 dns 서버의 ip를 가지고있다.(참고로 dns 서버는 주로 통신사에서 가지고 있다.)

결국 해당 ip로 우리는 도메인 네임을 보내고 그 도메인 네임을 바탕으로 ip주소를 가져와서 특정 ip에 접속하는 시스템이라고 볼수있다.

 

실제적으로 함수와 구조체를 가지고 설명을 구체적으로 해보겠다.

 

#include <netdb.h>

 

struct hostent * gethostbyname(const char *name);

 

struct hostent{ 

    char *h_name;         //호스트 공식 이름

    char **h_aliases;      // 호스트 알리아스명

    int h_addrtype;        //주소타입

    int h_length;           //주소길이

    char **h_addr_list;    //ip주소 배열

    #define h_addr haddr_list[0]

}

 

위에서 gethostbyname 이라는 함수는 도메인 주소를 입력으로 받아서 ip주소등의 정보를 알려주는 함수이다.