[Network] 도메인과 DNS 서버

SangHyun-Park·2022년 5월 22일
0

도메인과 DNS 서버

도메인 이름 : 서버의 IP 를 대신하는 주소 (IP 식별자)

google.com 과 같이 사람이 인식하기 좋은 이름으로 IP 주소를 표현할 수 있다

단, 내부적으로는 이 도메인 이름이 IP 주소로 변환되는 과정을 거치는데, 이 때 도메인 이름 별 IP 주소를 저장하고 있는 서버가 DNS 서버 이다

DNS 서버가 Full name 을 저장하고 있지는 않고
.com IP 저장 서버 (.com 으로 끝나는 주소만 존재)
google.com IP 저장 서버 (google.com 으로 끝나는 주소만 존재 -> 찾음)

일전에 DNS 에 대해 글을 작성했지만 이번에는 코드와 함께 살펴보려고 한다

이전 DNS 포스팅


코드

IP 는 도메인 이름에 비해 변동적이다. 따라서 IP 주소를 바로 사용하는 것은 비효율적이다. 매번 도메인 이름에 대해 IP 주소를 불러올 수 있다면, IP 주소를 매번 알아내야하는 수고를 덜 수 있을 것이다.

기본적으로 c언어에서 서버(호스트) 의 정보는 hostent 구조체에 저장이 된다.

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

profile
https://ppaksang.tistory.com/ 옮겼습니다 !!

0개의 댓글