호스트 식별자
- 호스트 식별자
- 호스트 이름(hostname)
- 사람들이 인식하기 쉬움
- 호스트 위치에 대한 정보 제공 X
- 가변 길이의 알파뉴메릭 문자로 구성됨
- 라우터 처리가 어려움
- IP 주소
- 4byte 구성
- 계층구조
- 호스트 위치에 대한 정보 찾기 가능
- 호스트 이름(hostname)
DNS
- DNS(Domain Name System)
- 주요 역할 : 호스트 이름 → IP 주소 변환
- DNS 서버들의 계층구조로 구현된 분산 데이터베이스
- 호스트가 분산 데이터베이스로 질의할 수 있도록 허락한 어플리케이션 계층 프로토콜
- DNS 서버 → 주로 BIND 소프트웨어이 동작하는 유닉스 컴퓨터
- DNS 프로토콜 : UDP, 53번 포트 사용
- DNS 서비스
- 호스트 에일리어싱(host aliasing) : 별칭 호스트 이름에 대한 정식 호스트 이름 찾기
- 호스트 이름이 복잡할 경우 하나 이상의 별명 가능
- 정식 호스트 이름(canonical hostanme) : 원래의 호스트 이름
- 별칭 호스트 이름 : 정식 호스트 이름의 별칭
- 메일 서버 에일리어싱(mail server aliasing) : 별칭 호스트 이름에 대한 정식 호스트 이름을 얻기 위해 메일 애플리케이션에 의해 수행
- 부하 분산(load distribution) : 여러 중복 서버 사이에 부하를 분산하는 역할
- 중복 웹 서버 : 하나의 정식 호스트 이름에 여러 IP 주소 존재
- DNS 데이터베이스 : 여러 IP 주소 집합 저장
- DNS는 중복 웹 서버에 대한 IP 주소를 순환식으로 전달
- 호스트 에일리어싱(host aliasing) : 별칭 호스트 이름에 대한 정식 호스트 이름 찾기
중앙 집중 데이터베이스의 단일 DNS의 문제점
- 서버 고장 : 인터넷 동작 X → 리스크 ↑
- 엄청난 트래픽양 : 모든 DNS 질의 처리를 단일 DNS가 처리해야함
- 먼 거리의 중앙 집중 데이터베이스 : 모든 DNS 질의 거리가 가깝지 않음 → 엄청난 시간 지연 발생
- 어려운 유지관리 : 모든 호스트에 대한 레코드 유지, 새로운 호스트 갱신, 호스트 등록을 위한 사용자 인증 문제
- 확장성 X : 단일 DNS 서버에 있는 중앙 집중 데이터베이스의 한계
=> 분산 데이터베이스로 DNS 서버 구현
DNS 서버
- DNS 서버 구조 - 확장성 문제 해결을 위해서
- 많은 서버 이용
- 계층 형태 구성
- 분산
- DNS 서버 유형(계층 구조)
- 루트 DNS 서버
- TLD 서버의 IP 주소 제공
- 최상위 레벨 도메인 네임(top-level domain, TLD) DNS 서버
- 상위 레벨 도메인과 모든 국가의 상위 레벨 도메인에 대한 TLD 서버
- TLD를 지원하는 네트워크 인프라는 크고 복잡
- 책임 DNS 서버에 대한 IP 주소 제공
- 책임(authoritative) DNS 서버
- 접근이 쉬운 호스트를 가진 모든 기관은 호스트 이름과 IP 주소로 매핑하는 공개적인 DNS 레코드 제공 필수
- 직접 책임 DNS 서버 구현 또는 서비스를 제공해주는 기관 이용
- 루트 DNS 서버
- 로컬 DNS 서버(= 디폴트 네임 서버)
- 서버들의 계층 구조에 엄격하게 속하지 않음
- DNS 구조의 중심
- 1. 호스트가 DNS 질의
- 2. 프록시로 먼저 동작하는 로컬 DNS 서버로 DNS 질의 전달
- 3. 로컬 DNS 서버는 이 질의를 DNS 서버 계층(루트 DNS 서버, TLD DNS 서버, 책임 DNS 서버)으로 전달
- 4. 이를 통해서 얻은 IP 주소를 로컬 DNS 서버가 호스트에게 전달
DNS 캐싱
- DNS 질의
- 재귀적 질의(recursive query)
- 요청하는 호스트로부터 로컬 DNS 서버까지의 질의 형태로, 로컬 DNS 서버가 호스트 대신 DNS 서버 계층으로부터 IP 주소를 얻어서 전달
- 반복적 질의(iterative query)
- 질의한 DNS 서버에게 바로 응답이 오는 질의
- 재귀적 질의(recursive query)
- DNS 캐싱
- 목적 : 지연 지능 향상 및 네트워크의 DNS 메시지 수를 줄이기 위해서 함
- DNS 서버가 DNS 응답을 받았을 때, 로컬 메모리에 응답에 대한 정보 저장 → 호스트가 같은 호스트 이름을 질의할 때 저장한 정보 전
- 호스트 DNS와 IP 주소는 영구적 X → 일정 기간이 지나면 저장한 정보 삭제
DNS 레코드
- 자원 레코드(resource record)
- 호스트 이름과 IP 주소를 매핑해서 저장하기 위한 형태
- 형식
- (Name, Value, Type, TTL)
- 자원 레코드의 형식
- Type A
- Name : 호스트 이름
- Value : 호스트 이름에 대한 IP 주소
- 책임 DNS 서버가 Type A 레코드 포함
- 책임 DNS 서버 이외의 DNS 서버는 Type NS의 Value에 대한 Type A 레코드 포함
- Type NS
- Name : 도메인
- Value : 도메인의 IP 주소를 얻을 수 있는 책임 DNS 서버의 호스트 이름
- 책임 DNS 서버 이외의 DNS 서버는 Type NS 레코드 포함
- Type CNAME
- Name : 별칭 호스트 이름
- Value : Name에 대한 정식 호스트 이름
- Type MX
- Name : 별칭 호스트 이름
- Value : Name을 갖는 메일 서버의 정식 이름
- TTL : 자원 레코드의 생존기간(Time To Live)
- Type A
DNS 메세지
- DNS 메세지 포맷
헤더 (12 바이트) |
식별자 | 플래그 | ||
질문의 수 | 답변 RR의 수 | 추가 RR의 수 | 추가 RR의 수 | |
질문(가변 질문 수) | ||||
답변(가변 RR 수) | ||||
책임(가변 RR 수) | ||||
추가 정보(가변 RR 수) |
- DNS 메세지 포맷의 구성
- 헤더 영역(Header section) : 12 byte
- 식별자 : 16 bit
- 플래그 필드 : 각 플래그는 1bit
- 질의/응답 플래그 : 메세지의 질의(0), 응답(1)
- 책임 플래그 : DNS 서버가 질의 이름에 대한 책임 서버일 경우 응답 메세지에 설정
- 재귀 요구 플래그 : DNS 서버가 레코드를 갖지 않을 때 재귀적 질의를 수행하기를 클라이언트가 원할 때 설정
- 재귀 가능 플래그 : DNS 서버가 재귀 질의를 지원하면 응답에 설정
- 4개의 '개수' 필드 : 헤더 다음에 오는 데이터 영역의 네가지 타입의 발생 횟수
- 질문 영역(question section)
- 현재 질의에 대한 정보
- 1. 질의되는 이름을 포함하는 이름 필드(NAME)
- 2. 이름에 대한 문의되는 질문 타입을 나타내는 타입 필드(TYPE)
- 현재 질의에 대한 정보
- 답변 영역(asnwer section)
- 질의된 이름(NAME)에 대한 자원 레코드
- 여러 개의 RR 가능
- 책임 영역(authority section)
- 다른 책임 서버의 레코드
- 추가 영역(additional section)
- 다른 도움이 될 수 있는 레코드
- 헤더 영역(Header section) : 12 byte
DNS 데이터베이스에 레코드 삽입
- DNS 데이터베이스에 레코드 삽입 방법
- 1. 등록기관에 도메인 등록하기
- 주책임 서버와 부책임 서버의 이름과 IP 주소 제공
- 2. 등록기관은 도메인 네임의 유일성 확인
- 3. 도메인 이름을 DNS 데이터베이스에 추가
- 두 책임 서버의 Type NS와 Type A 레코드가 TLD 서버에 등록되었는지 확인하기
- 1. 등록기관에 도메인 등록하기
** 참고 문헌 ** 「컴퓨터 네트워킹 : 하향식 접근(7판)」 James F. Kurose,Keith W.Ross