DNS (domain name system)
서버 마다 할당 된 ip 주소를 매번 외우는 것이 쉽지 않기 때문에, domain name이라는 사람들이 기억하기 쉬운 이름을 ip 주소에 할당한다.
바로 이 domain name과 ip주소 사이에서의 변환을 수행하는 프로그램이 DNS이다.
도메인 이름은 해당 서버에 부여된 가상의 주소이므로 실주소로 변환 후 해당 서버에 접속이 가능하다.
* 인터넷 브라우저에 domain name을 입력하면 일어나는 일
1. 인터넷 브라우저에서 DNS 서버에 접속한다. -> 해당 domain name에 대한 IP정보를 얻어온다. -> 얻어온 실주소를 통해 해당 서버에 접속한다.
네트워크를 거대한 인터넷 망에 연결하도록 돕는 것이 gateway
* 데이터를 전송한다고 하면 그 데이터는 무조건 gateway를 통과하여 인터넷으로 나가게 되어있다.
*DNS 서버는 보통 한 네트워크에서 공통으로 하나만 사용한다.
도메인 이름을 통해서 IP주소를 얻어오는 함수
- struct hostent * getbyhostname(const char * hostname);
-> 성공시 hostent 구조체 변수의 주소 값, 실패 시 NULL 포인터 반환
struct hostent에 채워지는 주소의 형태
h_name : 공식 도메인 이름
h_aliases : 별칭 도메인 이름 (** 이중포인터)
h_addrtype : 반환된 IP정보가 IPv4인 경우, AF_INET이 반환
h_length: 반환된 IP 정보의 크기, IPv4의 경우 4, IPv6인 경우 16
h_addr_list : IP의 주소정보, 둘 이상의 경우 모두 반환 (** 이중포인터)
*이중포인터는 배열을 참조하기 때문에, 캐릭터형 배열의 형태로 여러 주소공간을 저장하고 있다.
-> 한 domain name에는 여러 IP주소가 할당되어 있을 수 있기 때문에.
'Golang > etc' 카테고리의 다른 글
tcp/ip -10 멀티프로세스 기반의 서버 구현 (0) | 2022.07.12 |
---|---|
tcp/ip - 09 소켓 옵션 (0) | 2022.07.06 |
tcp/ip - 07 소켓의 종료 (0) | 2022.07.04 |
golang udp example (0) | 2022.07.03 |
tcp/ip 05 (0) | 2022.07.03 |