본문 바로가기
Programming/Socket

[C/C++/소켓프로그래밍] Hostent란?

by whitele 2021. 3. 12.
반응형

도메인 주소로부터 이진형식의 주소를 쓰기 위한 구조체이다. 이를 먼저 알기 위해서 DNS에 대한 이해가 필요하다.

DNS

 도메인 네임 시스템(Domain Name System)의 약자로 우리가 IP를 사이트마다 외우기 어려우니 www.abce.com처럼  럼 사람이 알기 쉽게 도메인 이름을 사용하는 것이다. 그리고 이것을 ip주소와 도메인 네임간의 변환을 시스템적으로 구현한 것을 DNS라고 한다. 도메인 네임에는 계층이 존재하고 이것에 맞춰 DNS서버가 구현된다. DNS서버에 도메인 네임을 쿼리하면 서버는 ip주소로 변환하고 라우팅 정보를 제공한다. 또한 반대로 ip주소를 입력하면 도메인 네임을 반환하는 rDNS도 존재한다.

gethostbyname() 

#include <netdb.h>
(hostent 구조체 포인터 반환) *gethostbyname(const char *domainName);

 호출 성공시 hostent 구조체를 반환하며 실패시 Null값을 반환한다. 도메인 네임을 인자로 받으며 hostent 구조체 안 값을 입력한채로 반환한다.

gethostbyaddr()

#include <netdb.h>
(hostent 구조체 포인터 반환) *gethostbyaddr(const char *addr,int len, int type);

호출 성공시 gethostbyname과 마찬가지로 hostent구조체를 반환하며 실패시 NULL값을 반환한다.

인자로 이진 IP로 됀 const char *addr, 주소 길이 int len, 주소 유형인 int type을 인자로 받는다.

Hostent구조체

hostent의 구조체는 도메인 네임, 별명, 주소 유형, 주소 길이, 이진 Ip주소를 담고 있다.

struct hostent{
    char *h_name;
    char **h_aliases;
    int h_addrtype;
    int h_length;
    char **h_addr_list;
}
728x90
반응형

댓글