일반적으로 우리가 주소창에 www.naver.com 치게 된다면, 사실 이러한 것들도 소켓통신으로 작동한다. 소켓 통신이라 하면, IP 주소와 포트번호를 알아야 한다. 일반적인 웹서버의 포트번호는 80 포트번호를 이용하며, 우리가 입력하는 www.naver.com 이라는 해당 도메인이 IP주소로 바뀌어야만 우리는 해당 서버로 접속할 수 있다.


동작)

(1) 웹 브라우저 창에 www.naver.com 을 입력하고 Enter 키 누름

(2) 웹 브라우저는 입력된 도메인 주소의 서버와 통신하기 위해 PC에 설정된 DNS 서버와 DNS 메시지를 교환하여 해당 서버의 IP 주소를 획득
(3) 해당 IP 주소를 통해 서버에 접속하고 서버에서 웹 리소스를 가져와 브라우저 창에 렌더링해서 사용자에게 보여준다.


DNS

DNS 라는 서비스를 이용하게되면 호스트 네임과 IP 를 가지고 있어서 해당 호스트 네임에 매핑되는 IP 주소를 가져올 수 있다. DNS 란 인터넷 통신을 위해 도메인 이름과 IP 주소 정보를 관리하고 매핑하는 분산 데이터베이스 시스템을 DNS(Domain Name System) 이라고 한다.


Local DNS

결과 값을 전달하는 DNS 서버.

기업 내 인터넷 사용자의 경우 보통 사내에 설치된 DNS 서버가 Local DNS Server가 되고,

가정 내 인터넷 사용자의 경우 통신 사업자가 제공하는 DNS - KT DNS 가 Local DNS Server 가 된다.


DNS 구성요소

  • 도메인 네임 스페이스 (Domain Name Space)
    DNS는 거대한 분산 네이밍 시스템이며, 도메인 네임 스페이스는 이러한 DNS 가 저장/관리하는 계층적 구조를 의미

  • 네임 서버 (Name Server)
    숫자로 구성된 IP 주소와 함께 기억하기 쉬운 도메인 이름을 사용한다. 문자열로 표현된 도메인 이름을 실제 컴퓨터가 통신할 때 사용하는 IP로 변환시켜주기 위한 동작을 위해 그 정보를 가지고 있는 서버

  • 리졸버 (Resolver)
    웹 브라우저와 같은 DNS 클라이언트의 요청을 네임 서버로 전달하고 네임 서버로부터 정보를 받아 클라이언트에게 제공하는 기능을 수행


DNS 메세지 - 데이터

DNS 메시지의 데이터 부분은 DNS Query 와 같은 요청 메세지를 전달하거나, 이에 응답하는 DNS Response를 전달하기 위한 내용으로 구성된다. 

  • Query Name : Domain Name 을 의미

  • Type : A Type(매핑된 IP 주소를 요청/응답한다는 의미), NS Type(하나의 도메인을 관리하는 네임서버를 의미)

  • Class : 프로토콜 패밀리 의미. 인터넷 사용하는 경우 IN(Internet 사용)

  • TTL : 자원 레코드의 유효시간

  • Resource Data Length / Resource Data


구현)

(1) 서버를 둔다.

(2) 해당하는 호스트 네임과 IP를 가진 테이블을 저장한다.


하나의 서버에 모든 정보를 가지게 된다면 문제가 발생한다.

- 서버가 닫히면 해당 호스트에 대한 매핑되는 IP 를 받아오지 못할 수 있다.

- 전 세계의 호스트를 다 가지고 있기 때문에 검색하는데 많은 시간이 소요된다.


DNS 서버를 계층화 그리고 분산화하는 것이 정답.

매핑이 되는 단순한 데이터베이스를 계층화 및 분산화 시킨다.

그렇게 된다면 클라이언트의 접근에 대해서 효율적으로 처리가 가능하다.


- Root Servers 

- top-level domain (TLD) servers

- authoritative DNS servers

인터넷에 속한 모든 기관들은 자기자신의 authoritative name server를 가지고 있어야한다. 해당 서버는 각자 자기 기관이 보유하고 있는 호스트 네임에 대한 IP 주소를 가지고 있다. 


도메인 네임과 호스트 네임은 다르다.

도메인은 네트워크 그 자체,

호스트는 컴퓨터를 지칭한다.


- 호스트네임과 IP 를 통해 사용방식을 두 개로 분리된 것이 어떤 장점이 있는가?

호스트네임이 지칭하는 그 자체만으로 의미를 받을 수 있다. 

ex)www.naver.com, pasudo123.tistory.com


IP 주소는 컴퓨터의 물리적인 위치와 굉장히 관련이 있지만 호스트 네임은 그 IP와는 별개로 초월한 개념이다. IP 주소는 바뀌어도 호스트네임은 변하지 않기 때문이다. 물리적인 r값이 달라져도 논리적인 값은 변함이 없다.


각 기관에서는 내부적으로 로컬 네임 서버를 가지고 있다. 따라서 사용자가 특정 도메인 네임에 대한 IP 주소 매핑을 알기위해선 바로 루트 서버로 가지 않는다. 해당 로컬 네임 서버에서 처리할 수 있으면 바로 매핑되는 IP를 바로 반환한다. ( 웹 캐시 혹은 프록시 같은 개념 )


DNS는 필드가 네개

- Name

- Value

- Type  

- TTL


이렇게 존재.

Type 필드는 중요한데, 해당 값에 따라 레코드의 의미가 달라진다.


type

  • type A

    • name 은 호스트네임

    • value 는 ip 주소이다.

    • 호스트네임에 대한 ip 주소를 매핑시킨다.

  • type cname

    • name 은 호스트네임

    • value 는 dns 서버이다.

    • 호스트네임에 대한 ip 요청 시, dns 서버로 요청하라고 한다.

  • type ns

    • name 은 도메인

    • value 는 해당 도메인에 대한 권한이 있는 서버

    • local dns 서버가 dns query 를 보낼 dns 서버의 ip 주소를 알려준다. (계층적으로 알려주기 위함)

Type A 와 Type NS 는 같이 존재한다. 왜냐하면, Type NS 의 value 값인 hostname을 동일한 서버에서 Type A 로 가지고 있어야만 해당 IP를 추출할 수 있기 때문이다.


name

value

type

ttl 

.com 

DNS.a.com 

NS 

 

DNS.a.com

123.456.789 

 


이렇게 받는다면 로컬 네임 서버는 DNS.a.com 에 대한 value 값을 통해 IP를 얻고 해당 IP에 대해서 다른 도메인(호스트 네임 X)에 대한 호스트 네임을 얻으면서 해당 호스트 네임과 연관된 IP address 값을 얻는 형태로 되어있다.


Question 

DNS 는 TCP 로 되어있을까? UDP 로 되어있을까?


Answer

UDP로 되어있다. Why ? 

TCP는 본 메시지를 위해 여러 동작들을 수행한다. 필요없는 리소스를 낭비함과 동시에 오버헤드 발생. 실질적인 request 및 response 작업에 대한 사전작업이 DNS 서비스이다. DNS 라는 작업의 의의. 호스트네임을 단순 IP로 바꾸는 작업.


DNS 작업을 통해 패킷이 유실되는 크기의 단위는 byte , 대략 40 byte 이며 유실되면 다시 보내면 된다. 중요도가 다르다.



정리 )

  • DNS 란
  • DNS 구성요소
  • DNS 동작원리
  • DNS 데이터


Posted by doubler
,