도메인 이름 : 서버의 IP 를 대신하는 주소 (IP 식별자)
google.com
과 같이 사람이 인식하기 좋은 이름으로 IP 주소를 표현할 수 있다
단, 내부적으로는 이 도메인 이름이 IP 주소로 변환되는 과정을 거치는데, 이 때 도메인 이름 별 IP 주소를 저장하고 있는 서버가 DNS 서버 이다
DNS 서버가 Full name 을 저장하고 있지는 않고
.com IP 저장 서버 (.com 으로 끝나는 주소만 존재)
google.com IP 저장 서버 (google.com 으로 끝나는 주소만 존재 -> 찾음)
일전에 DNS 에 대해 글을 작성했지만 이번에는 코드와 함께 살펴보려고 한다
IP 는 도메인 이름에 비해 변동적이다. 따라서 IP 주소를 바로 사용하는 것은 비효율적이다. 매번 도메인 이름에 대해 IP 주소를 불러올 수 있다면, IP 주소를 매번 알아내야하는 수고를 덜 수 있을 것이다.
기본적으로 c언어에서 서버(호스트) 의 정보는 hostent 구조체에 저장이 된다.
h_name : 공식 도메인 이름
h_aliases : 별칭의 도메인 이름
h_addrtype : addr_family 값 반환 (AF_INET)
h_lenght : IP 정보의 크기
-> IPv4 : 4 / IPv6 : 16
h_addr_list : IP의 주소 정보
char * -> *struct in_addr 로 저장되어 있어서
inet_ntoa(*(struct in_addr*)h_addr_list[0])로 받아와야함
도메인 이름으로 호스트 정보 불러오기
#include<netdb.h>
struct hostent* gethostbyname(const char* hostname);
IP 주소로 호스트 정보 불러오기
struct hostent* gethostbyaddr(const char* addr,
socklen_t len, int family)
len : 주소 정보의 길이 4(AF_INET)
family : AF_INET