본문 바로가기

네트워크

[네트워크] DNS

TCP / IP 응용계층

TCP / IP 응용계층

DNS 개념

 - DNS란 호스트 이름과 IP 주소를 매핑 시켜주는 거대 규모의 분산 네이밍 시스템을 의미

 - TCP 기반 인터넷 응용 프로그램들은 호스트를 지정하기 위해 IP 주소만을 인식

 - IP 주소는 컴퓨터 입장에서는 해석하기 용이하지만 사람에게는 기억하기 어려움

 - IP 주소만으로는 서비스 유형을 판단하기 어려움

 

DNS 네임스페이스

 - 호스트를 도메인으로 구분하고 도메인 별로 트리화하여 관리

 - DNS 네임 스페이스는 파일 시스템의 디렉토리 트리와 같은 계층적 구조

 - 도메인은 디렉토리에 해당하는 것으로 하위 서브 도메인이나 호스트로 DNS 트리를 구성

 - 인터넷의 모든 호스트는 호스트 이름과 부모 도메인 이름으로 구성된 도메인 네임 식별자를 가지며, 점으로 구분되는 각각의 이름은 63자까지 가능

 - 도메인과 호스트 이름은 대소문자를 구별하지 않고 DNS 트리 루트를 표시하는 null 값이외에는 어떤 문자도 사용 가능

DNS 네임스페이스

DNS 도메인 레벨

 - 최상위 레벨 도메인

   - DNS 이름에서 가장 우측에 표시되는 단어는 도메인 트리의 최상위 도메인을 나타냄

   - 최상위 레벨 도메인은 두 번째 레벨 도메인의 등록 및 관리기관이 되며 어느 집단이 사용하고 있는 이름인지를 쉽게 알아볼 수 있도록 설계

 

DNS 도메인 레벨

 - 두 번째 레벨 도메인

   - 최상위 레벨 도메인 등록기관은 등록 비용을 받고 두 번째 레벨 도메인 이름을 관리할 책임이 있음

   - DNS는 특정한 호스트의 주소를 최상위 레벨 도메인 서버에 조회하고 최상위 레벨 도메인 서버는 그 요청을 두 번째 레벨 도메인의 위임 서버에 요청하고 그에 대한 응답을 받음

   - 1대의 컴퓨터에 있는 호스트 테이블로 트래픽이 집중하는 문제를 해결

 - 두 번째 레벨 도메인의 관리자가 여러 단계의 서브 도메인 생성 가능

 - 대규모 네트워크에서 호스트를 식별하기 쉽지만 도메인을 관리해야 하는 부담이 있음

 - 최상위 레벨 도메인의 DNS 서버에는 각각의 두 번째 레벨 도메인의 위임 서버 주소가 있음

 - 두 번째 레벨 도메인의 서버는 자체 DNS 서버를 관리하는 세 번째 레벨 위임 서버의 주소를 관리

 - 위임을 위해 도메인의 네임 스페이스를 존이라고 하는 관리 유닛으로 분리해야 함

 

리소스 레코드

 - DNS 서버는 리소스 레코드(RRs)에 호스트와 서브 도메인에 대한 정보를 저장하는 데이터베이스를 유지

 - SOA(Start of Authority)

   - 서버가 그 존의 데이터에 대한 최고 권한을 가졌음을 표시

 - NS(Name Server)

   - DNS 서버가 그 존의 위임자임을 표시

 - A(Address)

   - 특정 DNS 이름을 IP 주소로 변환하는 기능을 수행

 - PTR

   - In-addr.arpa 도메인에 있는 특정 주소에 DNS 이름을 공급하는 address-to-name 매핑 제공하며 A 레코드의 반대 기능으로 역룩업에 사용

 - CNAME(Canonical Name)

   - A 레코드에 의해 식별되는 호스트의 정규(canonical) 이름을 지칭하는 별칭을 생성

 - MX(Mail Exchanger)

   - 도메인 주소로 보내진 이메일 트래픽을 개별 수신자나 메일 게이트웨이 또는 다른 메일 서버로 돌리는 시스템

 

DNS 네임 변환

DNS 네임 변환

 - 변환기

   - DNS 쿼리를 생성

   - 서버가 응답한 정보를 요청한 응용 프로그램으로 전달

   - 타임아웃 기간이 지나도록 응답이 없으면 쿼리 메시지를 재전송하며 서버에서 리턴한 오류 메시지를 처리

 

 - DNS 요청

   - 순환(recursive) 쿼리 방식

     - 이름 분석을 시도하고 만일 서버가 요청한 정보를 갖고 있지 않다면 이에 대한 답이나 오류 메시지를 얻을 때까지 다른 DNS 서버에 질의를 계속하여 결과를 전송하는 방식

   - 반복(iterative) 쿼리 방식

     - 자체 데이터베이스에 있는 정보로만 응답

 

 - 루트 네임 서버

   - 클라이언트의 요청에 대해 필요한 정보를 갖고 있지 않은 DNS 서버는 대부분 반복 쿼리를 인터넷 루트 네임 서버 중 하나로 전송

   - 루트 네임 서버는 어떤 도메인상의 이름에 대한 요청도 적합한 권한을 가지고 보낼 수 있음

   - 루트 네임 서버에는 모든 최상위 레벨 도메인의 신뢰할 수 있는 서버들의 주소를 가지고 있음

   - 최상위 레벨 도메인의 관리기관

   - 쿼리를 국가코드 도메인을 포함해서 다른 최상위 레벨 도메인의 적합한 서버로 전달하는 기능을 수행

 

 - 도메인 네임 분석

   - 클라이언트 시스템의 사용자가 웹 브라우저와 같은 응용 프로그램을 통해

서버의 DNS 명을 입력

   - 변환기는 서버의 이름이 포함된 DNS 순환 쿼리 메시지를 생성

   - 순환 쿼리 메시지를 로컬 TCP/IP 설정에서 지정된 로컬 DNS서버로 전송

   - 쿼리를 수신한 DNS 서버는 리소스 코드를 보고 요청한 서버 이름이 포함된 존의 권한 소스가 있는지 여부를 체크

   - 권위자가 존재하면 응답 메시지를 생성, 클라이언트로 전송

   - 권위자가 아닐 경우 반복 쿼리를 루트 네임 서버 중 하나로 전송

   - 루트 네임 서버는 로컬 DNS 서버가 요청한 이름을 검토, 리소스 레코드를 찾아 해당 이름의 최상위 레벨 도메인의 신뢰 서버를 검색 로컬 DNS 서버에 최상위 레벨 도메인의 신뢰 서버 주소가 담긴 리퍼럴(Referal)을 전송

   - 로컬 DNS 서버는 새로운 반복 쿼리를 최상위 레벨 도메인 서버로 전송

   - 최상위 레벨 도메인 서버는 요청 받은 주소를 검색 두 번째 레벨 도메인의 신뢰서버 주소가 담긴 리퍼럴을 로컬 DNS 서버로 전송

   - 로컬 DNS 서버는 다시 반복 쿼리를 생성하여 두 번째 레벨 도메인 서버로 전송

   - 요청한 이름에 추가 도메인 명이 포함되어 있다면 두 번째 레벨 도메인은 세 번째 레벨 도메인 서버를 검색하여 또 다른 리퍼럴로 응답

   - 이 과정은 로컬 서버가 요청한 호스트가 존재하는 도메인이나 존에 대한 권위자를 찾을 때까지 반복

   - 호스트가 존재하는 도메인이나 존의 신뢰 서버는 리소스 레코드를 검색, 해당 호스트의 IP 주소를 찾아 응답

   - 로컬 DNS 서버는 IP 주소를 변환기로 전달, 변환기는 주소를 해당 응용 프로그램으로 중계

 

도메인 네임 분석

 

DNS 서버 캐슁

 - 클라이언트로부터 요청을 수신한 DNS 서버는 특정한 도메인의 신뢰 서버는 물론 요청한 시스템의 주소까지 캐쉬

 - 클라이언트의 같은 주소에 대한 요청에 서버는 즉시 캐쉬된 정보로 응답

 - DNS 서버의 캐시에 리소스 레코드가 너무 오랫동안 남아 있으면 그 리소스에 대한 변경사항 파악에 어려움

 - 너무 빨리 삭제되면 루트 네임 서버와 최상위 레벨 도메인 서버로 전달되는 요청이 급상승해 병목현상을 유발

 - DNS 서버는 존이나 도메인의 리소스 레코드가 남아 있을 시간(TTL)을 지정

 

네거티브 캐슁

 - DNS 서버가 도메인상에 존재하지 않는 서버에 대한 정보를 얻는 경우 발생

 - 캐슁은 병목 현상의 주요한 요인이 되는 루트 네임 서버와 최상위 레벨 도메인에 대한 요청을 줄일 수 있기 때문에 필수적 요소

 

DNS 부하 분산

 - DNS 서버는 대부분의 경우 호스트 이름에 대해 하나의 IP 주소 정보를 가짐

 - 그러나 특정 호스트에 대해 하나 이상의 IP 주소가 필요한 경우가 존재

 - DNS 서버는 동일한 호스트 이름에 여러 IP주소를 부여한 다중의 리소스 레코드를 생성 가능

 - DNS 서버가 이름 분석을 요청하는 쿼리에 응답할 경우, 리소스 레코드를 사용해 차례로 각 클라이언트에게 다른 IP 주소를 제공하여 부하를 분산 가능

 

DNS 역 네임분석

 - IP 주소를 도메인 이름으로 변경해야 하는 경우도 존재

 - IP 주소를 DNS 주소로 변환해 쉽게 읽을 수 있도록 하거나 인증 절차에 사용하기도 함

 - In-addr 도메인 아래에는 0부터 255까지 이름을 가진 256개의 서브 도메인이 존재. 이는 IP 주소의 첫 번째 바이트 값을 의미

 - 각각의 서브 도메인은 또 다른 256개의 도메인들로 구성되며 다음 단계 역시 256개의 도메인을 갖는 방법으로 세 번째와 네 번째 바이트까지 기술

 - 대부분의 DNS 서버는 표준 도메인 네임 스페이스에 추가되는 모든 호스트에 대한 in-addr.arpa 도메인 리소스 레코드를 자동으로 생성

DNS 역 네임분석

 

 

DNS 존 트랜스퍼

 - 대부분의 네트워크에서는 적어도 2대의 서버를 사용하여 비상 시를 대비, 클라이언트가 가까운 DNS 서버에 액세스할 있도록

 - DNS 표준에서는 이러한 서버간 DNS 데이터를 복제하는 매커니즘을 정의, 관리자가 하나의 DNS 서버의 정보를 변경하면 다른 DNS 서버의 정보는 자동으로 변경되도록 함

 - DNS 서버의 역할은 주(Primary) 서버와 보조(Slave) 서버로 구분

 - 주 서버는 리소스 레코드와 관련 정보를 데이터베이스로부터 로딩

 - 보조 서버는 존 전송이라는 방법으로 다른 서버의 데이터를 수신

 - 하나의 DNS 서버가 복수개의 존에 대한 관리자가 될 수 있기 때문에 모든 보조 서버의 데이터를 업데이트하려면 한 번 이상의 전송이 이루어져야 함

 

DNS 메시지 포맷

 - DNS 네임 분석 트랜잭션은 UDP를 사용하며 서버는 포트번호 53, 클라이언트는 임시 포트번호를 사용

 - 헤더 섹션

   - 메시지의 성격에 대한 정보를 나타냄

 - 질의 섹션

   - 수신 측 서버에서 요청한 정보를 나타냄

 - 응답 질의 섹션

   - 섹션에서 요청한 정보를 제공하는 RRs

 - 신뢰 질의 섹션

   - 섹션에서 요청한 정보에 대한 권위자를 지정하는 RRs

 - 추가 질의 섹션

   - 섹션에 대한 응답으로 추가 정보가 들어있는 RRs

DNS 일반 메시지 형식
DNS 헤더 섹션

DHCP

DHCP 개념

 - 자동으로 호스트를 구성해 주는 프로토콜

 

BOOTP 개념

 - 디스크장치가 없는 컴퓨터가 IP주소, 서브넷마스크, 라우터의 IP주소, DNS 주소 같은 네트워크 구성정보를 얻기 위해 사용하는 프로토콜

 - RARP단지 IP주소만을 얻음

 - 물리주소와 IP주소가 바인딩 되어 동작 -> 이런 불편으로 DHCP 등장하여 동적 IP부여

 - 네트워크 구성 정보를 얻기 위해 사용

 - UDP를 기본으로 하고 크기도 작아 전송속도 빠름

 - 패킷 포맷

 

BOOTP 요청 메세지

 - 요청 패킷의 타입은 1

 - 클라이언트의 IP주소는 0.0.0.0

 - 클라이언트의 물리주소를 기록

 

BOOTP 포트번호

 - 두 개의 고정 포트 번호를 사용 : 서버(67), 클라이언트(68)

 - 고정 포트 사용

   - 서버 응답이 브로드캐스트 메시지로 전달

   - 다른 클라이언트가 수신할 수 있는 가능성이 발생하므로 클라이언트는 고정 포트 사용

   - 여러 BOOTP 클라이언트가 동시에 사용되는 경우 헤더의 트랜잭션 식별자 혹은 물리 주소를 검사하여 구별

 

BOOTP 동작과정

 - 서버는 UDP 포트 번호 67번으로 클라이언트 요청을 기다림

 - 클라이언트는 UDP 포트 번호 68번을 사용하여 요청 메시지를 서버로 전송

 - 서버는 목적지 포트번호 68번으로 응답

 

DHCP 동작

DHCP 주소할당 방법

 - 수동할당 : 클라이언트의 IP 주소를 네트워크 관리자가 수동으로 설정

 - 자동할당 : 클라이언트가 서버에 처음 접속할 때 IP 주소가 자동으로 할당

 - 동적할당 : 일정기간 IP 주소를 클라이언트에 할당하고 임대기간이 끝나면 다른 클라이언트에게 다시 할당

DHCP 장단점

DHCP 패킷포맷

 - 플래그 필드와 옵션 필드를 제외하고는 BOOTP 패킷과 유사

 - IP 임대 요청

   - IP 주소 정보 요청

   - MAC 주소와 호스트 이름 포함

 - IP 임대 제공

   - 서버가 제공할 수 있는 IP 주소, 서브넷 마스크, 임대 기간, DHCP 서버 주소(서버 식별자)를 브로드캐스팅으로 전송

 - IP 임대 선택

   - 가장 먼저 도착한 OFFER 메시지에 REQUEST 메시지로 응답

 - IP 임대 확인

   - 서버의 ACK 메시지로 IP 할당 완료

   - NACK를 전송하면 클라이언트는 처음 과정부터 다시 시도

 - IP 임대 갱신

   - 유효 대여 기간의 50% 남았을 때 처음 갱신 시도

   - 총 대여 기간의 87.5% 달할 때 다시 한번 갱신 시도

 - IP 임대 해제

   - 임대기간 이전에 임대를 종료 하려면 RELEASE 메시지 전송

DDNS

 - IP 할당

   - 유동 IP 할당

 - 현재 IP 알림

   - 할당 받은 IP를 DDNS 서버에 알림

 - 도메인 이름 질의

   - 일반 사용자는 DDNS 가입자 도메인 이름을 이용하여 접속

 - 도메인 IP 질의

   - DDNS 서버에게 해당 도메인 이름에 대한 IP 주소 질의

 - IP 응답(DDNS->네트워크 사업자)

   - 바인딩된 IP 주소를 네트워크 사업자에게 알림

 - IP 응답(네트워크 사업자->일반 사용자)

   - DDNS에서 받은 IP 주소를 일반 사용자에게 알림

 - IP 주소로 접속

   - IP 주소를 이용하여 접속

 - 서버응답

   - DDNS 사용자는 서버로써 일반 사용자에게 응답

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'네트워크' 카테고리의 다른 글

[네트워크] 전송계층 프로토콜  (0) 2023.03.20
[네트워크] 라우팅  (0) 2023.03.19
[네트워크] 모바일 IP  (0) 2023.03.18
[네트워크] IPv6 주소  (0) 2023.03.17
[네트워크] IPv4 프로토콜  (0) 2023.03.16