인터넷 호스트를 식별 방법

  • 호스트 이름 (ex_ www.fb.com, www.google.com)
    • 기억하기 쉬움
    • 호스트 위치에 대한 정보는 거의 제공하지 않음
    • 라우터가 처리하는데 어려움
  • IP 주소

2.4.1 DNS가 제공하는 서비스

  • DNS(domain name system) : 호스트 이름을 IP 주소로 변환해주는 디렉터리 서비스

    1. DNS 서버들의 계층구조로 구현된 분산 데이터서비스
    2. 호스트가 분산 데이터베이스로 질의하도록 허락하는 애플리케이션 계층 프로토콜
  • DNS 서버

    • 주로 BIND(Berkeley Internet Name Domain) 소프트웨어를 수행하는 유닉스 컴퓨터
    • UDP 상에서 수행되고 포트 번호 53 이용

DNS는 다른 애플리케이션 프로토콜들이 HTTP, SMTP, FTP등 사용자가 제공한 호스트 이름을 IP 주소로 변환하기 위해 주로 이용

브라우저가 URL을 요청할 때 사용자의 호스트가 HTTP 요청 메시지를 웹서버로 보낼 수 있도록 사용자의 호스트는 URL의 IP주소를 얻는다

  1. 같은 사용자 컴퓨터는 DNS 애플리케이션의 클라이언트 측을 수행
  2. 브라우저는 URL로부터 호스트 이름을 추출하고 그 호스트 이름을 DNS 애플리케이션 클라이언트 측에 송신
  3. DNS 클라이언트는 DNS 서버로 호스트 이름을 포함하는 질의 송신
  4. DNS 클라이언트는 호스트 이름에 대한 IP주소를 가진 응답을 수신
  5. 브라우저가 DNS로부터 IP 주소를 받으면 브라우저는 해당 IP 주소와 그 주소의 80포트에 위치하는 HTTP 서버 프로세스로 TCP 연결을 초기화
  • DNS를 사용하는 인터넷 애플리케이션에게 추가 지연을 줌

  • 원하는 IP 주소는 가까운 DNS 서버에 캐싱되어 있어 평균 DNS 지연뿐만 아니라 DNS 네트워크 트래픽 감소에 도움을 줌

  • DNS가 제공하는 서비스

  1. 호스트 에일리어싱
    • 복잡한 호스트 이름을 가진 호스트는 하나 이상의 별명을 가질 수 있다.
    • 정식 호스트 이름 별칭 호스트 이름
    • 기억하기 쉽다
  2. 메일 서버 에일리어싱
    • DNS는 호스트의 IP 주소 뿐만 아니라 제공되는 별칭 호스트 이름에 대한 정식 호스트 이름을 얻기 위해 메일 어플리에키션에 의해 수행된다
  3. 부하 분산
    • 중복 웹 서버같이 여러 중복 서버 사이에 부하를 분산하기 위해 사용된다
    • 인기있는 사이트는 여러 사이트에 중복되어 있어서 각 서버가 다른 종단시스템에서 수행되고 있는 다른 IP주소를 갖는다
    • 여러 IP주소가 하나의 정식 호스트 이름과 연관되어 있고 DNS 데이터 베이스는 이 IP주소의 집합을 갖고있다
    • 클라이언트가 주소집합에 매핑하는 호스트 이름에 대한 DNS 질의를 하면 서버는 IP 주소 집합 전체를 가지고 응답한다. 주소는 순환식으로 보낸다
    • 클라이언트는 대체로 첫번째 IP주소로 HTTP 요청 메시지를 보내므로 DNS 순환 방식은 여러 중복 서버들 사이에 트래픽을 분산하는 효과를 낸다
    • 전자메일에도 사용되어 여러 메일 서버가 동일한 별칭을 가질 수 있다

2.4.2 DNS 동작 원리 개요

  • 호스트 이름을 IP 주소로 변환하려 할 때
  1. 변환될 호스트이름을 명시하여 DNS측 클라이언트 호출
  2. 사용자 호스트의 DNS는 네트워크에 질의 메시지 전송
  3. 모든 DNS 질의와 응답 메시지는 포트 53의 UDP 데이터그램으로 전송됨
  4. 지연 후 사용자 호스트의 DNS는 요청한 매핑에 해당하는 DNS 응답메시지 수신
  5. 호출한 애플리케이션으로 매핑 전달

모든 질의를 단일 네임 서버로 보내고 DNS 서버는 질의 클라이언트에게 직접 응답

  • 문제점
  1. 서버 고장 : 전체 인터넷 작동 X
  2. 트래픽 양 : 단일 DNS 서버가 모든 DNS 질의를 처리해야 함
  3. 먼 거리의 중앙 집중 데이터베이스 : 단일 DNS 서버가 모든 질의 클라이언트로부터 가까울수만은 없으므로 심각한 지연을 일으킬 수 있음
  4. 유지관리 : 모든 인터넷 호스트에 대한 레코드를 유지해야함. 중앙 집중 데이터베이스는 거대해지고 새로운 호스트 반영을 위해 자주 갱신해야함

단일 DNS 서버에 있는 중앙 집중 데이터베이스는 확장성이 전혀 없다 DNS는 분산되도록 설계되었다

분산 계층 데이터베이스
  • DNS는 많은 서버를 이용하고 이들을 계층 형태로 구성하며 전 세계에 분산시킨다

  • 루트 DNS 서버, 최상위 레벨 도메인 네임(TLD) DNS 서버(com, org,net), 책임 DNS 서버로 분산된다

  • 클라이언트가 호스트 이름의 IP주소 결정을 원할때

  1. 클라이언트가 루트 서버 중 하나에 접속
  2. 루트 서버는 최상위 레벨 도메인을 갖는 TLD 서버 IP를 전송
  3. 클라이언트가 TLD 서버 중 하나에 접속
  4. 서버는 도메인 Url을 가진 책임 서버의 IP주소 전송
  5. 클라이언트는 url의 책임 서버 중 하나로 접속
  6. 서버는 호스트 이름의 IP 주소 전송

  • 로컬 DNS 서버

    • DNS 구조의 중심
    • ISP들은 로컬 DNS 서버를 가짐
    • 호스트가 ISP에 연결될 때 그 ISP는 로컬 DNS 서버로부터 IP 주소를 호스트에게 제공
  • 네트워크 상태창에 접근하여 로컬 DNS서버의 IP주소를 쉽게 결정할 수 있음

  • 호스트의 로컬 DNS 서버는 대체로 호스트에 가까이 있음

  • 기관 ISP에서 로컬 DNS 서버는 호스트와 같은 LAN 상에 있을 수 있음

  • 주거 지역 ISP는 몇개의 라우터 범위 안에서 호스트로부터 떨어져있음

  • 호스트가 질의를 보내면 이 질의는 프록시로 동작하는 로컬 DNS 서버에 전달되고 그 로컬 DNS 서버는 이 질의를 DNS 서버 계층으로 전달

재귀적 질의와 반복적 질의

  • 요청하는 호스트로부터 로컬 DNS 서버까지의 질의 : 재귀적 질의
  • 나머지 질의 : 반복적 질의
DNS 캐싱
  • 지연 성능 향상과 네트워크 DNS 메시지 수를 줄이기 위해 캐싱 사용
  • 질의 사슬에서 DNS 서버가 DNS 응답을 받았을 때 로컬 메모리에 응답에 대한 정보 저장 가능
  • 호스트 이름과 IP주소가 DNS 서버에 저장되고 다른 호스트 이름으로부터 같은 질의가 도착한다면 DNS서버는 원하는 IP 주소를 제공할 수 있음

캐싱으로 인해 로컬 DNS 서버는 두번째로 질의한 호스트에게 다른 DNS 서버로의 질의 없이 IP주소를 보낼 수 있음

2.4.3 DNS 레코드와 메시지

  • DNS 분산 데이터베이스를 구현한 DNS 서버들은 호스트 이름을 각 IP 주소로 매핑하기 위한 자원 레코드를 저장
  • 하나 이상의 자원 레코드를 가진 메시지로 응답
  • 4개의 튜플로 구성

(Name, Value, Type, TTL)

TTL : 자원 레코드의 생존 기간

  • Type=A
    • Name : 호스트 이름, Value : 호스트 이름에 대한 IP 주소
    • 표준 호스트 이름의 IP 주소 매핑 제공
    • DNS 서버가 특별한 호스트 이름에 대한 책임 서버이면 호스트 이름에 대한 Type A 레코드 포함
  • Type=NS
    • Name : 도메인, Value : 도메인 내부 호스트에 대한 IP 주소를 얻을 수 있는 방법을 아는 책임 DNS 서버의 호스트 이름
    • 서버가 호스트 이름에 대한 책임 서버가 아니라면 Type NS 레코드 포함
    • NS 레코드 Value 필드에 DNS 서버의 IP주소를 제공하는 Type A 레코드도 포함
  • Type=CNAME
    • Value : 별칭 호스트 이름 Name에 대한 정식 호스트 이름
    • 질의 호스트에게 호스트 이름에 대한 정식 이름 제공
  • Type=MX
    • Value : 별칭 호스트 이름을 갖는 메일 서버의 정식 이름
DNS 메시지
  • 헤더 영역
    • 질의를 식별하는 16비트 숫자
    • 클라이언트가 보낸 질의와 수신된 응답 간의 일치 식별
    • 플래그 필드
      • 질의/응답 플래그 : 메시지가 질의(0)인지 응답(1)인지 구별
      • 책임 플래그 : DNS 서버가 질의 이름에 대해 책임 서버일 때 응답 메시지에 설정
      • 재귀 요구 플래그 : DNS 서버가 레코드를 갖지 않을 때, 재귀적 질의를 수행하기를 클라이언트가 원할때 설정
    • 재귀 가능 필드
      • DNS 서버가 재귀 질의를 원할때 응답에 설정
    • 4개의 개수 필드
      • 헤더 다음에 오는 데이터 영역의 네가지 타입의 발생횟수
  • 질문 영역
    • 현재 질의에 대한 정보 포함
      1. 질의되는 이름을 포함하는 이름 필드
      1. 이름에 대해 문의되는 질문 타임을 나타내는 타입 필드
  • 답변 영역
    • 원래 질의된 이름에 대한 자원 레코드 포함
    • 응답으로 여러개의 RR 전송 (호스트 이름은 여러개의 IP 주소를 가질수있어서)
  • 책임 영역
    • 다른 책임 서버의 레코드 포함
  • 추가 영역
    • 다른 도움이 되는 레코드 포함
DNS 데이터베이스에 레코드 삽입
  • 도메인 네임을 등록기관에 등록
  • 등록기관은 도메인 네임의 유일성을 확인하고 DNS 데이터베이스에 저장
  • 등록기관에 주책임 서버와 부책임 서버의 이름과 IP주소를 등록기관에 제공