도메인 이름
- IP를 대신하는 서버의 주소로, IP로 변환되어야 접속이 가능하다.
DNS 서버
- 도메인 이름을 IP로 변환해주는 서버
- 분산 데이터 베이스로 구성된다.
- 사용자가 질의 > DNS 서버가 답변
- Root DNS > TLD DNS > Authorative DNS
도메인 이름으로 IP주소 얻어오기
#include <netdb.h>
struct hostent* gethostbyname(const char* hostname);
성공시 hostent 구조체 변수의 주소 값, 실패시 NULL 반환
- 상대적으로 IP보다 변동이 덜한 도메인 이름을 이용해 IP를 받아온다.
hostent 구조체
- h_name
- h_aliases
- h_addrtype
- h_length
- 반환된 IP의 크기, IPv4는 4, IPv6은 16이 반환됨.
- ip_addr_list
- IP의 주소정보, 둘 이상일 경우 모두 반환한다.
- 2차원 배열로 이루어져 있으며, 1차원 배열을 in_addr 구조체로 캐스팅 하고 사용해야 한다.
IP 주소를 이용해 도메인 정보 얻어오기
#include <netdb.h>
struct hostent* gethostbyaddr(const char* addr, socklen_t len, int family);
성공시 hostent 구조체 변수 주소 값, 실패시 NULL 반환
- addr : IP주소를 지나는 in_addr 구조체의 포인터
- len : 첫번째 인자로 전달된 주소정보 길이. IPv4 : 4, IPv6 : 16
- family : 주소체계 정보. IPv4 : AF_INET, IPv6 : AF_INET6