본문 바로가기
컴퓨터/데이터 통신

데이터 통신 6

by 주황딱지 2024. 10. 18.

DNS

DNS: Domain Name System

인간을 식별할 수 있는것은 많다: SSN, 이름, 여권, 민증 등등인터넷 호스트와 라우터들도 있다: ip 주소, URL

>> 그러면 IP 주소와 사이트 이름을 매핑해주는 것이 있을까?

그렇다. 바로 DNS인것 

 

DNS: 

  • 분산된 DB: 여러 name server들의 구조로 구현됨
  • 어플리케이션 계층 호스트, 라우터, 네임 서버에 이름(주소/이름 변환)을 해결하기 위해 통신을 함
  • 핵심 인터넷 기능, 애플리케이션 계층 프로토콜로 구현됨
  • 네트워크의 "edge"에서의 복잡성

그러면 도메인 이름이란 뭔가?

  • 인터넷에서 네트워크 장치 모음이 조직되는 관리 자율성, 권한 또는 통제 영역의 이름(예: kt.com )이다.

DNS zone은 뭐임!

  • 관리 책임이 위임된 도메인 이름 시스템(DNS)을 사용하는 도메인 이름 공간의 일부

이해가 안됨!

>> 즉 도메인은 해당 정보를 위임 (등록)하는 단계에서 발생이 되는 것이며, ZONE은 해당 도메인을 운영하는 시스템에서 해당 도메인에 대한 정보를 저장하고 제공되는 단위가 ZONE이다.

 

DNS 서비스

  • 호스트네임을 IP 주소로 변환시킴
  • 호스트 작명
    표준, 별명 이름
    부하 분포(DNS 회전)
    복제된 웹 서버: 하나의 표준 이름에 대한 IP 주소 집합
  • 메일 서버 작명

왜 DNS를 중앙화시키지 않는가?

  • 실패 지점이 하나임
  • 트래픽 많음
  • 원격 중앙 집중식 데이터베이스
  • 유지 불가

DNS 분석하기

  • 애플리케이션 계층 프로토콜
  • UDP 또는 TCP 기반
    RFC 1035: 일반적으로 UDP를 통해 최대 512바이트까지 전송되며, 512바이트 이상의 패킷은 파편화되며, 서버 간에 TCP가 사용된다.
    RFC 2671: 512바이트 이상의 UDP 패킷 전송 허용.

분산된 구조적 데이터베이스

 

루트 DNS 서버

최상위 도메인(TLD) 서버
인증된 DNS 서버

 

1. 클라이언트가 www.amazon.com 에 대한 IP를 원한다.
2. 클라이언트가 루트 서버에 요청하여 .com DNS 서버를 찾는다.
3. 클라이언트가 .com DNS 서버에 요청하여 amazon.com DNS 서버를 가져온다.
4. 클라이언트가 amazon.com DNS 서버에 문의하여 www.amazon.com 의 IP 주소를 가져온다.

DNS: 루트 네임 서버

이름을 확인할 수 없는 로컬 네임 서버에 접근했다
루트 네임 서버:
1. 이름 매핑을 모르는 경우 공인 네임 서버에 접근해라
2. 매핑을 가져온다.
3. 로컬 네임 서버에 매핑을 반환한다.

 

TLD와 인증 서버

TLD(Top-level domain) 서버: 

  • com, org, net, edu, etc, 그리고 나라 도메인(us, kr, jp 등)
  • 네트워크 솔루션은 com TLD용 서버를 유지 관리한다.
  • edu TLD를 위한 교육 목적

인증된 DNS 서버:

  • 조직의 DNS 서버, 조직의 서버(예: 웹, 메일)에 대한 권한 있는 호스트 이름에  IP 매핑을 제공한다.
  • 조직 또는 서비스 제공업체에서 유지 관리할 수 있다.

Local name server

엄격하게 계층 구조에 속하지는 않는다.
각 ISP(주거용 ISP, 회사, 대학교)에는 하나씩 있다.
-"기본 이름 서버"라고도 불린다.
호스트가 DNS 쿼리를 만들면 쿼리가 로컬 DNS 서버로 전송된다.
-프록시 역할을 하며 쿼리를 계층 구조로 전달한다.

DNS 네임 해결 예시

재귀 질의:

답이나 오류 메시지를 얻을 때까지 다른 DNS 서버에 질의를 계속하여 결과를 클라이언트에게 알려줌

해당 정보를 찾기 위해 다른 서버에 접속은 하지 않

보통 DNS 서버에서는 보안 문제 등으로 인해 클라이언트의 재귀질의를 허용하지 않으며, DNS 서버간 질의에 사용됨

 

 

반복질의: DNS 클라이언트 질의 처리
서버는 현재 가진 내용 (자체 데이터베이스)으로 응답할 뿐 재귀질의처럼 정보를 찾지 않는다.
반복 질의는 DNS 클라이언트에 다음 DNS 서버를 제공하여 답이 그렇지 않은 경우 쿼리할 수 있다
로컬에서 사용 가능.

>> 나는 이거 모르겠고 서버에 물어봐라


재귀적 쿼리를 사용하면 DNS 서버가 클라이언트를 대신하여 이름 정보를 검색할 수 있다.

 

DNS: 캐싱과 기록 업데이트

(모든) 네임 서버가 매핑을 학습하면 매핑을 캐시한다.
- 시간 경과 후 캐시 항목 시간 초과(disappear)
- TLD 서버는 일반적으로  로컬 네임 서버에 캐시된다.
- 따라서 루트 네임 서버가 자주 방문하지 않음

DNS 프로토콜, 메시지

DNS 프로토콜: 쿼리와 응답 메시지, 둘다 같은 메시지 형태를 가지고 있다.

 

1. 메시지 헤더

- identification: 

  • 쿼리를 위한 16비트
  • 쿼리를 응답하기 위해 사용하는 것도 같다. 

- flags:

  • 쿼리 or 응답
  • 응답은 신뢰성이 있어야 한다.
  • 재귀 필요
  • 재귀 가능

헤더는 12바이트로 고정되며, resource records라 하는 body 부분을 가지고 있음

 

Identification 쿼리/응답 식별값(transaction id)으로, DNS 요청/응답과 관련된 모든 것을 보기 위한 값(dns.id=0x4269)을 필터링 할 수 있음

 

플래그는 16비트, 8개의 필드로 되어 있:

- QR (1bit)의 경우 Query(0)인지 아니면 Reply(1)인지 구별하는 플래그

- Opcode (4) Query류를 나타. 0은 표준조회 (호스트 이름을 가지고 ip주소를 조회), 1역조회 (ip주소를 가지고 호스트 이름을 조회), 2는 서버상태 요청을 나타낸다. 보통은 0을 사용

- AA (1)의 경우는 Authoritative Answer의 약자로 공식네임서 응답여부 플래그

- TC(Truncation) (1)은 응답시에만 사용. 정해진 사이즈를 초과해서 잘렸는지를 확인하는 플래그

- RD(Recursion Desired) (1)는 재귀적인 질의가 필요한지에 대한 여부를 나타. 기본적으로 필요(1)로 설정되어 있

- RA(Recursion Available) (1)는 응답한 네임서버가 재귀질의(RD)를 할 수 있는지 여부에 대한 설정

- Z(3)로 나중을 위해 예약된 필드. 항상 0으로 설정되어야 함

- Response code (4)아래와 같이 6개로 나타

0 : Success 성공

1 : Format Error 쿼리가 잘못된 경우

2 : Server Failure 네임서버 자체의 문제로 실패

3 : Name Error 해당 네임이 존재하지 않을 경우

4 : Not Implemented 네임서버가 Query를 지원 못함

5 : Refused 정책적인 이유로 Query를 거절함

6~15 : Reserved 나중을 위해 예약됨

 

4개의 섹션을 가진다: questions, answers, authority, additional information

RD(재귀 목적):
재귀는 서버가 재귀적 쿼리 프로세스를 사용할 수 있는지 여부를 나타내기 위해 DNS 쿼리에 정의될 수 있다.
재귀를 통해 DNS 서버는 클라이언트를 대신하여 다른 서버에 답변을 요청할 수 있다.
로컬 네임 서버에 답이 있는 경우 직접 응답한다. 답이 없는 경우 클라이언트를 대신하여 조회 프로세스를 시작한다.

재귀를 원하지 않는 경우 쿼리는 반복 쿼리로 간주된다.

반복 쿼리를 사용하면 DNS 서버가 로컬에서 사용할 수 있는 경우 정보를 반환한다.
그렇지 않으면 DNS 서버가 다른 DNS 서버의 IP 주소를 반환하여 요청할 수 있다. 대부분의 DNS 쿼리는 재귀를 사용한다.

DNS records

DNS: 분산화된 DB를 저장하는 자원 레코드(RR= resource records)

RR format: (name, value, type, ttl)

 

type= A, name = 호스트 네임, value = IP 주소

type= CNAME, name = canonical을 위한 별명 (예: www.ibm.com의의 진짜이름은 servereast.backup2.ibm.com이다), value = canonical 이름

type= NS, name= 도메인, value= 이 도메인에 대한 권한 있는 네임 서버의 호스트 이름

type= MX, value= name과 연관된 메일 서버의 이름

 

Canonical name: 정식 호스트 네임

Alias name: 별칭 호스트 네임(우리가 주로 사용하는 도메인 주소)

TTL (time to live): DNS 서버에 주소 값이 저장(캐슁)되는 기간(단위: 초)

MX(Mail Exchange): 메일서버에 도달할 수 있는 라우팅 정보(메일서버)를 제공

 

반응형

'컴퓨터 > 데이터 통신' 카테고리의 다른 글

데이터 통신 8  (0) 2024.10.19
데이터 통신 7  (0) 2024.10.19
데이터 통신 5  (3) 2024.10.18
데이터 통신 4  (1) 2024.10.10
데이터 통신 3  (3) 2024.10.10