도메인 이름 시스템과 이름 변환 함수
Server/Winodw Network 2015. 8. 4. 16:14
domain name 이란 IP 주소와 대응하는 이름으로, 사람이 기억해서 사용하기 쉽게 만든 것이다.
TCP/IP 프로토콜은 도메인 이름을 인식하지 못하므로, 사용자가 입력한 도메인 이름을 반드시
IP 주소로 변환해야 한다.
IP 주소와 도메인 이름 사이의 변환 정보는 인터넷에 연결된 여러 개의 도메인 이름 서버
(DNS Server, Domain Name System Server)가 관리하며,
어느 한 도메인 이름 서버가 모든 정보를 가지고 있지 않다는 점에서 일종의 분산 데이터베이스라고 할 수 있다.
윈도우 소켓에서의 IP 주소와 도메인 이름 사이의 변환을 위한 함수
도메인 이름 -> IP 주소(네트워크 바이트 정렬)
const char *name
- 도메인 이름
IP 주소 -> 도메인 이름
cosnt char *addr
- 네트워크 바이트 정렬된 IP 주소
int len
- IP 주소의 길이
int type
- 주소 체계
gethostbyname(), gethostbyaddr() 함수 모두 hostent 구조체형 포인터를 리턴한다.
hostent 구조체
h_name
- 공식 도메인 이름(official domain name)
h_aliases
- 한 호스트가 공식 도메인 이름 외에 다른 이름을 여러 개 가질 수 있으며, 이를 별명이라고 부른다.
h_addrtype
- 주소 체계를 나타내는 상수값, IPv4를 사용하면 AF_INET값이 저장된다.
h_length
- IP주소의 길이(바이트 단위)를 나타낸다. IPv4를 사용하면 32비트가 저장된다.
h_addr_list
- 네트워크 바이트 정렬 IP 주소를 나타낸다.
- 한 호스트가 여러 IP주소를 가진 경우, 이 포인터를 따라가면 모든 IP주소를 얻을 수 있다.
- 특정 호스트에 접속할 때는 대개 첫번째 IP주소만 이용하므로, h_addr_list[0]으로 접근한다.
- 매크로를 이용해서 재정의한 h_addr을 사용하면 편리하다.
'Server > Winodw Network' 카테고리의 다른 글
클라이언트 함수 (0) | 2015.08.07 |
---|---|
TCP/IP 서버/클라 구조 (0) | 2015.08.04 |
IP 주소 변환 (0) | 2015.08.04 |
바이트 정렬 함수 (0) | 2015.07.20 |
소켓 주소 구조체 정의 (0) | 2015.07.14 |