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