Domain Name System, DNS란 IP주소와 도메인 이름 사이에서의 변환을 수행하는 시스템입니다. DNS의 중심에는 DNS 서버가 존재합니다.
티스토리의 IP주소인 121.53.105.234를 직접 입력하면 티스토리의 페이지를 볼 수 있습니다. 그러나 일반적으로는 티스토리의 도메인 이름인 www.tistory.com을 입력해서 티스토리에 접속하게 됩니다. 둘 모두 똑같이 티스토리에 접속할 수 있습니다.
다만 접속 과정에서는 차이가 있습니다. 도메인 이름은 서버에 부여된 가상의 주소입니다. 만약 도메인 이름으로 접속하게 되면 컴퓨터에 저장되어있는 디폴트 DNS 서버의 주소로 변환을 요청하고 해당 도메인 이름의 IP 주소를 얻어서 서버로 접속하게 됩니다.
일반적으로 IP주소를 외우는 것보다 도메인 이름을 외우는게 더 받아들이기 쉽고, 무엇보다 도메인 이름은 등록하면 잘 바꾸지 않지만 IP주소는 같은 주소를 유지하는건 상당히 힘들기 때문에 도메인을 사용합니다.
디폴트 DNS 서버는 모든 도메인의 IP주소를 알고 있지는 않지만 모를 경우 다른 DNS 서버에서까지 검색해서 알려줍니다. 자신이 모르는 정보에 대한 요청이 들어오면 자신의 상위 계층에 있는 DNS서버에 질의가 전달되고 계속 올라가면 Root DNS 서버까지 질의가 전달되는데, Root DNS 서버는 받은 질문을 누구에게 다시 전달할지 알고 있습니다. 따라서 다시 자신보다 하위에 있는 DNS 서버에게 다시 질의를 던져서 IP주소를 얻어냅니다.
따라서 DNS는 계층적으로 관리되는 분산 데이터베이스 시스템이며, 트리 형태로 나타낼 수 있습니다.
이렇게 일반 사용자가 도메인을 사용하는 이유와 DNS의 원리를 살펴봤고, 프로그램을 작성할 때 도메인 이름을 언제 사용하는지 알아보겠습니다.
만약 당신이 티스토리 도메인을 운영하는 회사에게 일을 받아, IP가 121.53.105.234이고 PORT번호가 2000인 서버에 접속해서 서비스를 받는 클라이언트를 개발해야 한다고 가정합니다. 앞서 말했듯 IP가 항상 같도록 유지하는 것은 쉽지 않기 때문에 IP를 직접 입력해 프로그램을 작성하게 되면 IP가 바뀔 때마다 프로그램을 바꿔줘야하고, 클라이언트 이용자들에게도 프로그램을 재설치하라 요구해야 하는데 이는 너무 번거롭습니다. 따라서 잘 변하지 않는 도메인 이름으로부터 IP를 따와 프로그램을 작성하는게 더 유용합니다.
'현생 > TCP 소켓 프로그래밍' 카테고리의 다른 글
9-1. 소켓의 옵션과 설정 함수 get/setsockopt [TCP/IP][C][LINUX] (0) | 2022.01.24 |
---|---|
8-2. 도메인 이름과 IP 간의 변환 [TCP/IP][C][LINUX] (0) | 2022.01.23 |
7. TCP 기반의 Half-close : shutdown() [TCP/IP][C][LINUX] (0) | 2022.01.21 |
6-4 UDP에서의 connect (connected UDP 소켓) [UDP/IP][C][LINUX] (0) | 2022.01.18 |
6-3. UDP의 데이터 송수신 특성 - 데이터의 경계 [UDP/IP][C][LINUX] (0) | 2022.01.18 |