Thursday, January 27, 2011

chapter 8 (도메인 이름과 인터넷 주소)

-Domain Name System-
IP주소와 도메인 이름 간의 변환하는 시스템을 DNS(Domain Name System) 이라고 한다

도메인 이름이란?
DNS 서버
도메인 이름은 가상 주소. 때문에 도메인으로 특정 서버에 접속 하려면 실제 주소인 IP주소로 변환 해야 한다. 이러한 변환을 담당하는 것이 DNS 서버. 보통 컴퓨터 마다 DNS 서버를 지정한다. 그런데 디폴트 DNS 서버가 모든 도메인의 IP를 알고 있지는 않다. 만약 내 컴퓨터가 정한 DNS 서버가 도메인의 IP를 모른다면 그 DNS 서버는 자기보다 상위의 DNS 서버에게 물어보고 결국 최상위 DNS 서버까지 가서 최상위 DNS 서버는 그 정보가 있는 DNS 서버까지 질문을 돌리고 다시 거꾸로 IP정보가 돌아온다.


-IP주소와 도메인 이름 사이의 변환-


프로그램상에서 도메인 이름을 쓸 필요가 있는가?
도메인 이름은 한번 등록하면 계속 쓰는 한편 IP 주소는 자주 변하니까

도메인 이름을 이용해서 IP주소 얻어오기
struct hostent * gethostbyname(const char * hostname); 란 함수를 사용하면 문자열 형태의 도메인 이름으로 IP주소를 얻을수 있다. 성공시 hostent 구조체 변수의 주소값이 실패시 NULL 포인트 반환. 이 구조체는 책 참조


IP주소를 이용해서 도메인 정보 얻어오기
반대로 IP주소에서 도메인 정보를 얻어 올때 쓰는 함수는 struct hostent * gethostbyaddr(const char * addr, socklen_t len, int family); 로 addr에는 in_addr 구조체 변수(IPv4 일때. 만약 다른 주소체계면 거기에 맞는 구조체 사용), len은 addr 인자의 길이, family는 주소체계(IPv4 경우 AF_INET 전달). 성공시 hostent 구조체 변수의 주소값 전달, 실패시 null 반환

No comments:

Post a Comment