원래 서버 컴퓨터에 접속을 하려면 그 컴퓨터의 IP 주소를 알아야 합니다. 그런데 이 주소를 기억하는 것은 쉽지 않은 일이죠. 그래서 고안된 것이 도메인 이름입니다. 전화번호를 몰라도 이름으로 친구에게 전화를 할 수 있는 것처럼, 도메인 이름을 컴퓨터에 부여하면 전세계인들이 개성있는 이름을 통해서 나의 컴퓨터에 접속할 수 있습니다.
이렇게 도메인 이름, Domian Name System에 대해서 배워봅니다. 이 내용은 생활코딩의 해당 페이지에 대한 요약 내용이니 참고 부탁드립니다.
도메인 이름을 살펴보기 전에 IP 주소와 hosts의 개념을 먼저 살펴봅니다. hosts 파일을 이용하면 전화기의 전화번호부 기능처럼 IP 주소에 대한 이름을 지정할 수 있습니다.
두 대의 컴퓨터가 있습니다. 이 컴퓨터가 서로 통신하기 위해서 반드시 갖춰야할 것이 있고, 이것이 바로 IP 주소입니다. 인터넷에 참여하는 모든 컴퓨터는 이렇게 IP 주소를 갖고 있어야만 합니다.
그리고 포괄적으로 각각의 인터넷에 연결된 컴퓨터들을 host라 부릅니다. 다시 말해, 네트워크에 연결된 장치들을 host라고 칭합니다.
그러나 IP 주소는 기억하기 매우 힘이 들다는 단점이 있습니다. 이를 해결할 수 있으며, 모든 운영체제에는 hosts라는 파일이 있고 그 파일에 나의 IP 주소는 이러한 도메인 네임이다라고 적어놓으면 클라이언트는 해당 이름으로 접속하게 되는 것입니다.
이러한 방식으로 Domain Name System을 통하지 않고도 도메인 주소와 같은 호스트의 이름을 부여할 수 있습니다.
위와 언급한 것처럼 hosts 파일은 다른 컴퓨터로 접속을 할 수 있게 만듭니다. 그러나 이를 해커가 악의적으로 hosts 파일에 다른 IP 주소를 적어놓는다면, 해당 사이트로 이동을 하게 될 것입니다.
이렇게 hosts 파일은 이러한 경우에 취약하므로 경계해야하며, 백신 등으로 감시할 수 있게 해야합니다.
내 컴퓨터에 랜선을 연결하거나 와이파이를 잡게 되면, 그 순간에 각자의 기기에는 동적으로 IP 주소, DNS, 서브넷, 게이트 주소와 같은 복잡한 정보들이 자동으로 세팅이 됩니다.
이렇게 인터넷에 연결하게 되면 우리의 컴퓨터는 DNS 서버의 IP 주소를 알기 때문에 사용자가 google.com이라는 주소를 쳤다고 하면, 먼저 컴퓨터는 hosts 파일을 살펴봅니다.
hosts 파일에 해당 주소가 없다면, DNS 서버에 접속해서 해당 도메인 네임의 IP 주소를 물어봅니다. DNS 서버는 자신이 기억하고 있는 IP 주소를 알려주고 이를 통해 접속을 하여 통신을 하게 되는 것입니다.
DNS 서버가 하는 일을 크게 두 가지로 나누어 볼 수 있습니다. 첫 째로는 서버가 제출한 도메인 이름과 IP 주소를 등록하는 것입니다. 그리고 클라이언트로 사용되는 컴퓨터가 도메인 이름을 물어봤을 때, IP 주소를 알려주는 것이 두 번째가 될 것입니다.
예상하시다시피 DNS 서버도 한 개는 아닙니다. 매우 많은 숫자의 DNS 서버가 서로 분산되고 협력을 통해 전 세계인들이 인터넷을 쉽게 사용하도록 돕고 있습니다. 이것이 어떻게 가능한 것일까요?
위와 같이 도메인 별로 이름이 있으며, 이에 따라 각각 담당하는 DNS 서버 컴퓨터가 있습니다. 그들이 전담하는 파트가 4가지로 다른 것입니다.
각각의 상위 서버 컴퓨터는 직속 하위 컴퓨터의 목록과 IP 주소를 알고 있어야합니다. Root는 Top-level을 그리고 Second-level은 sub 도메인을 알고 있는 방식입니다.
클라이언트 컴퓨터가 Root, Top-level, Second-level, 그리고 마지막으로 sub 도메인 컴퓨터에게 물어보면 IP 주소를 반환하는 계층 구조의 형식으로 작업이 이루어지게 되는 것입니다.
위와 같은 방식으로 도메인 이름이 등록되게 됩니다. 처음 접하면 복잡하게 느껴지지만, 반복적으로 접하다보면 이해할 수 있을 것입니다.