잘 모르는 사람에게 설명할 일이 생긴 김에... 인터넷의 동작에 대한 기본 설명을 간략하게 정리해보았다.


인터넷은 Interconnected Network of computers 에서 파생된 단어로, 각 컴퓨터 간의 네트워크 연결이 인터넷의 출발점이 된다.


원격에 있는 컴퓨터에 접속하기 위하여 각 단말은 IP Address 라는 고유 주소를 가지며, IP Address 를 찾아가는 것이 곧 다른 컴퓨터로의 접속으로 이어진다.


참고로 인터넷은 단순히 IP Address 를 직접 사용하지 않고, 사용자가 읽을 수 있는 형태의 Domain Name 이라는 것을 사용한다.

DNS 주소를 통해 머신은 IP 주소를 직접찾는 것이 아니라 도메인 네임 서버에서 받아와서 해당 서버가 중계해주는 IP Address 를 전달받는 방식이다.


IP Address 를 찾아가는 방식은 단순하게 각 네트워크 주소를 방문하면서 해당 네트워크에 해당 주소가 있는지를 탐색하는 방식으로 시작된다.


여기서 네트워크라는 건, 작게는 LAN(Local Area Network), 크게는 WAN(Wide Area Network) 혹은 그 이상의 크기로 전산망을 연결한 것을 말한다.


모든 컴퓨터들은 다른 모든 컴퓨터들과 직접적으로 연결되어 있지 않으며, 계층적으로 망 내에 속하고, 이렇게 구성된 작은 망들이 서로 연결되어 인터넷망을 구성한다.


이때 출발지에서 목적지까지 이어지는 네트워크의 각 단계를 홉이라하며 홉들을 거치면서 거대한 인터넷 망에서도 올바르게 주소를 찾을 수 있게 된다.


각 라우터에서는 브로드캐스트가 일어나며, 내부망을 구성하는 머신들에게 출발지점에서부터 전달된 메시지가 뿌려진다. 이 메시지는 각 머신들에 연결되어 OSI 7계층을 통하는데, 목적지의 주소가 아니라면 중간에 필터링되게 된다. 


목적지에서는 마침내 통신이 이루어지고, 응답메시지가 다시 홉을 타고 출발지로 다시 전송되게 된다.





DNS란 웹사이트의 주소 이름을 IP Address 로 매핑시켜 기억할 수 있는 도메인으로 사이트에 접근할 수 있게 해주는 인터넷의 핵심 요소이다. 다음은 verisign 에서 제공하는 How DNS works 의 설명 내용이다.


(1) 쿼리 전송 : 브라우저가 유저로부터 입력받은 도메인 이름을 이용해 쿼리를 날린다. 쿼리는 ISP 나 무선 통신업체가 운영하는 DNS Resolver 서버에 도달하여 도메인네임을 IP로 바꾸기 위해 어떤 DNS 서버에 요청해야 하는지를 질의하게 된다.


(2) 루트 서버 : DNS Resolver 가 상호작용하는 첫번째 DNS 서버를 루트 서버라 하며, 루트 서버는 .com 과 같은 최상위 도메인에 대한 DNS 정보를 알고 있다. 이 루트서버는 쿼리를 요청한 지점에서 멀지 않은 도메인으로 전송시켜 준다.


(3) TLD 서버 : TLD 서버는 최상위 도메인 내에 차상위 도메인에 대한 주소 정보를 저장하는 서버로 쿼리가 TLD 서버에 도착하면 TLD 서버가 도메인 네임에 대한 IP주소를 답변한다.


(4) DNS : 서버를 거친 쿼리문이 도메인 네임에 대한 IP 주소를 DNS Resolver 로 전송한다.


(5) Web site : DNS Resolver 는 문의한 도메인 네임에 해당하는 IP주소를 브라우저에 알려주고 브라우저는 IP 주소로 접근하여 컨텐츠를 가져온다.



DNS 정보를 조회하는 Flow 는 다음과 같다.


1. 클라이언트(웹 브라우저)가 DNS 를 조회하는 쿼리를 발생시킨다.


2. 발생한 요청은 Local DNS 서버로 이동한다. 이 때의 요청은 다음과 같은 DNS Resolver 들을 거치게 된다.

 - 클라이언트에 저장된 로컬 네임 서버 DNS 캐시

 - Internet Service Provider(ISP) 가 제공하는 네임 서버 DNS 캐시

캐시에서 값이 있으면 해당 IP 정보를 응답값으로 전달한다.

여기서 ISP 가 제공하는 네임서버 DNS 캐시가 의무적으로 존재하지는 않는다. ISP 에 따라 존재하는 경우도 있고 없는 경우도 있다. 없다면 요청은 Local PC 의 설정만 조회해보고 바로 3번 이후로 넘어간다.


3. DNS 주소에 대한 쿼리가 Root 서버로 향한다. Root 서버는 .com 과 같은 최상위 도메인에 대한 DNS 정보를 포함한다.

도메인 정보에 따라서 일반 최상위 도메인(.com, .net, .org ...) 이나 국가 최상위 도메인(.kr, .jp ...) 으로 분류되어 각각에 알맞는 TLD 서버의 정보를 전달받는다.


4. TLD 서버 정보를 이용해 TLD 서버에서 해당 도메인 주소(tistory.com)에 대한 관리 주체 서버로 연결해준다. 


5. 도메인 주소를 관리하는 DNS 서버에서 해당 도메인 주소에 대한 IP 를 반환해준다.


6. 반환된 IP 가 응답으로 전달되면서 Local DNS 에 캐싱된다.


7. Local DNS 를 통해 클라이언트(웹 브라우저) 는 IP 정보를 얻게되고 해당 서버로 접근하게 된다.



DNS 를 관리하는 구조는 트리형태로 되어있으며 클라이언트가 트리 형태의 DNS 구조에서 쿼리를 통해 결과값을 받아가는 과정이 재귀적(Recursive)이라 하여, Resolver 를 Resulsive Resolver, Query 를 Recursive Query 등으로 부르기도 한다.



+ Recent posts