네트워크 프로그래밍 CH8. 도메인 이름과 인터넷 주소

Alpha, Orderly·2023년 4월 2일
0

도메인 이름

  • 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 구조체

  1. h_name
    • 공식 도메인 이름
  2. h_aliases
    • 별칭의 도메인 이름
  3. h_addrtype
    • 반환된 IP의 타입, Ex. AF_INET
  4. h_length
    • 반환된 IP의 크기, IPv4는 4, IPv6은 16이 반환됨.
  5. 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
profile
만능 컴덕후 겸 번지 팬

0개의 댓글