Network - 네트워크의 원리(3)

YangJiWon·2020년 6월 13일
0

DNS 서버의 기본 동작

  • DNS 서버의 기본 동작은 클라이언트에서 조회 메시지를 받고 조회의 내용을 응답하는 형태로 정보를 회답하는 일입니다.

조회 메시지의 구성 요소

  1. 이름 : 서버나 메일 배송 목적지(메일 주소에서 @ 뒷부분의 이름)와 같은 이름입니다.
  2. 클래스 : DNS의 구조를 고안했을 때 인터넷 이외에도 네트워크에서의 이용까지 검토하여 이것을 식별하기 위해 클래스라는 정보를 준비했습니다. 그러나 지금은 인터넷 이외의 네트워크는 소멸되었으므로 클래스는 항상 인터넷을 나타내는 'IN'이라는 값이 됩니다.
  3. 타입 : 이름에 어떤 타입(종류)의 정보가 지원되는지를 나타냅니다. 예를 들어 타입이 A이면 이름에 IP주소가 지원되는 것을 타나내며, MX이면 이름에 메일 배송 목적지가 지원된다는 것을 나타냅니다. 또한 이 타입에 따라 클라이언트에 회답하는 정보의 내용이 달라집니다.
이름클래스타입클라이언트에 회답하는 항목
www.daum.netINA192.0.2.226
www.naver.comINMX10 mail.cyber.co.kr
mail.cyber.co.krINA192.0.2.227
  • 클라이언트가 조회메시지를 DNS 서버에게 보낼 때 위와 같은 내용으로 보내게 됩니다.
  • 타입이 MX인 경우에는 메일 서버의 우선 순위(작은 것일수록 더 빠르게 처리해야 함)와 메일 서버의 이름이라는 두 항목이 등록되어 있기 때문입니다.
  • DNS 서버는 서버에 등록된 도메인명과 IP 주소의 대응표를 조사하여 IP주소를 회답합니다.
  • A와 MX 타입 외에도 IP주소에서 이름을 조사할 때 사용하는 PTR 타입, 이름에 닉네임을 붙이기 위한 CNAME, DNS 서버의 IP 주소를 등록하는 NS, 도메인 자체의 속성 정보를 등록하는 SOA 등입니다.
  • 등록 정보들을 표 형태로 표현했지만, 실제로는 등록 정보가 설정 파일 등에 입력되어 있습니다. 표의 1행 정보에 해당하는 것을 리소스 레코드라고 부릅니다.

도메인의 계층

  • 위는 DNS 서버에 조회메시지의 IP 주소가 등록되어 있을 때에 경우를 설명했습니다. 하지만 인터넷은 막대한 수의 서버가 있기 때문에 위와 같은 상황이 보통 불가능합니다.
  • DNS 서버에 IP 주소가 등록되어 있지 않은 경우, 정보를 분산시켜서 다수의 DNS 서버에 등록하고, 다수의 DNS 서버가 연대하여 어디에 정보가 등록되어 있는지를 찾아내는 구조로 해결하고 있습니다.
  • 좀 더 자세히 보자면, DNS 서버에 등록한 정보에는 모든 도메인명이라는 계층적 구조를 가진 이름이 붙여져 있습니다. 계층화해서 다수의 정보를 깔끔하게 정리하고 있습니다.
  • DNS에서 취급하는 이름은 www.daum.net처럼 점으로 구분되어 있는데, 이 점이 계층을 구분합니다. 회사 조직과 같이 '사업부'에서 '부'라는 호칭을 사용하지 않고 점으로 구분했을 뿐입니다. (회사와 같이 '사업부'나 '부'라는 이름을 붙이면 계층이 고정화되어 있어 유연성이 나빠지지만, 점으로만 해두면 계층을 간단힌 늘릴 수 있어 유연성이 좋아집니다.)
  • 오른쪽에 위치한 것이 상위의 계층을 나타냅니다. 그러므로 www.daum.net이라는 이름은 회사 조직의 이름을 흉내내어 'net사업부 daum부 www'는 이름과 같다고 생각하면 됩니다.
  • 그리고 하나의 부서에 해당하는 것을 도메인이라고 합니다. 그러므로 net이라는 도메인의 아래에 cyber라는 도메인이 있고, 그 아래에 daum이라는 도메인이 있으며, 그 도메인의 안에 www라는 이름이 있는 셈이 됩니다.
  • 한 개의 도메인 정보를 일괄적으로 DNS 서버에 등록하고 도메인 한 대의 정보를 분할하여 복수의 DNS 서버에 등록하는 것은 불가능합니다. 단 DNS 서버와 도메인은 항상 1대 1이 아니라 한 대의 DNS 서버에 복수 도메인의 정보를 등록할 수 있습니다. 즉 한 대의 DNS서버에 도메인 한 대를 등록한다고 생각해도 좋습니다.
  • 보통 한 대의 DNS 서버에 복수 도메인을 저장하고 있는 것이 보통입니다. 여기서 도메인을 분할해서 저장하는 것이 곤란하다고 생각할 수도 있지만 도메인의 아래에 서브 도메인을 만들어 할당할 수 있기 때문에 이와 같은 문제를 해결할 수 있습니다.

담당 DNS 서버를 찾아 IP 주소를 가져오는 방법

  1. 하위의 도메인을 담당하는 DNS 서버의 IP 주소를 그 사위의 DNS 서버에 등록합니다.
  2. 상위의 DNS 서버를 또 그 상위의 DNS 서버에 등록하는 식으로 차례대로 등록합니다. 즉 lab.glasscom.com이라는 도메인을 담당하는 DNS 서버를 glasscom.com의 DNS 서버에 등록하고, glasscom.com의 DNS 서버를 com 도메인의 DNS 서버에 등록하는 식입니다.
  3. 이렇게 하면서 상위의 DNS 서버에 가면 하위의 DNS 서버의 IP 주소를 알 수 있고, 거기에서 조회 메시지를 보낼 수 있습니다.
  • 위의 설명에서는 com이나 kr이라는 도메인(최상위 도메인)의 DNS 서버에 하위의 DNS 서버를 등록한 곳에서 끝나는 것처럼 보이지만, 사실은 그렇지 않습니다. 인터넷의 도메인은 com이나 kr의 상위에 또 하나의 '루트 도메인'이라는 도메인이 있습니다. 루트 도메인에는 com이나 kr이라는 도메인명이 없으므로 보통 도메인을 쓸 때는 생략합니다.
  • 하지만 루트 도메인을 명시적으로 써야 하는 경우에는 www.daum.net. 처럼 끝에 마침표를 찍어서 루트 도메인을 나타내지만, 보통은 그렇게 쓰지 않으므로 루트 도메인의 존재를 알아차리지 못합니다.
  • 루트 도메인이 명시적으로 있지 않은 경우 DNS 서버에 com이나 co.kr의 co의 DNS 서버를 등록합니다. 이렇게 해서 하위의 DNS 서버를 상위의 DNS 서버에 등록하여 루트 도메인에서 차례로 아래쪽으로 거슬러 내려갈 수 있습니다.
  • 등록 작업은 한 가지가 더 있습니다. 루트 도메인의 DNS 서버를 인터넷에 존재하는 DNS 서버에 전부 등록하는 것입니다. 이렇게 해서 어느 DNS 서버에서도 루트 도메인에 액세스할 수 있게 됩니다. 그 결과, 클라이언트에서 어딘가의 DNS 서버에 액세스하면 여기에서부터 루트 도메인을 경유하여 도메인의 계층 아래로 찾아가서 최종적으로 원하는 DNS 서버에 도착합니다.
    원하는 서버 찾아가기
  • 도메인 서버에서 원하는 도메인 서버 찾아가기
    DNS 서버들의 조회 동작
  • 클라이언트에서 조회 메시지를 받은 DNS 서버는 이렇게 해서 IP 주소를 조사하고 이것을 클라이언트에 회답합니다.
  • DNS 서버의 움직임을 알았으면 위의 그림과 아래의 그림을 연결해보면 어떻게 동작하는지 한 눈에 알 수 있습니다.
    리졸버를 호출할 때 PC 내부의 움직임

DNS 서버는 캐시 기능으로 빠르게 회답할 수 있습니다.

  • DNS 서버는 한 번 조사한 이름을 캐시에 기록할 수 있는데, 조회한 이름에 해당하는 정보가 캐시에 있으면 그 정보를 회답하기 때문입니다.
  • 캐시의 원리에는 한 가지 주의할 점이 있습니다. 캐시에 정보를 저장한 후 등록 정보가 변경되는 경우도 있으므로 캐시 안에 저장된 정보는 올바르다고 단언할 수 없습니다.
  • 따라서 DNS 서버에 등록하는 정보에는 유효 기한을 설정하고, 캐시에 저장한 데이터의 유효 기간이 지나면 캐시에서 삭제합니다. 또한 조회에 회답할 때 정보가 캐시에 저장된 것인지, 아니면 등록처 DNS 회답한 것인지 알려려줍니다.
profile
데이터데이터데이터!!

0개의 댓글