[Computer Networking] Application(3)

Winney·2021년 8월 8일
0

Computer_Networking

목록 보기
2/3

2.5 DNS - Internet's Directory Service

  • hostname : internet host 식별자 예) www.yahoo.com 하지만 이런 hostname은 인터넷 내의 위치 정보를 제공하기에는 빈약하다. 게다가 hostname은 다양한 길이의 알파벳 철자를 포함하기 때문에 routers에서 처리하기 힘들다.
    → hosts는 IP addresses에의해 식별된다.
  • IP addresses : 4바이트로 구성되며 계층구조가 견고하다. 각 마침표는 0 - 255까지의 십진수 표기법으로 표현된다. IP addresses는 계층적이다. 왼쪽에서 오른쪽으로 스캔하며 인터넷에서 host가 위치한 위치에 대해 구체적인 정보를 얻는다.

Services Provided by DNS

  • host를 식별할 때 두가지 방법 : hostname과 IP address

  • 사람 : hostname, routers : IP address

  • DNS(domain name system) : hostname을 IP address로 변환하는 일을 한다.

    1. DNS의 계층으로 구현된 분산 데이터베이스이다.
    2. hosts가 분산 데이터베이스에 쿼리할 수 있게 하는 application-layer protocol이다.
  • DNS 서버는 berkeley internet name domain(BIND) 소프트웨어를 실행하는 유닉스 시스템인경우가 많다. DNS protocol은 UDP를 통해 실행되며 port 53을 사용한다.

  • DNS는 hostname에서 IP address로 변환하기 위해 HTTP, SMTP, FTP와 같은 다른 application-layer protocol에서 사용된다.

  • 과정

    1. 동일한 유저 시스템이 DNS application의 client 측을 실행한다.
    2. 브라우저는 URL에서 hostname을 추출해 DNS application의 client 측으로 hostname을 전달한다.
    3. DNS client는 DNS server로 hostname이 포함된 query를 보낸다.
    4. DNS client는 hostname에 대한 IP address가 포함된 응답을 받는다.
    5. DNS로부터 IP address를 받은 후 브라우저는 해당 IP address의 port 80번에 해당하는 HTTP server process에 TCP connection을 시작한다.
  • IP address는 종종 근접한 DNS server에 caching 되기 때문에 DNS 네트워크 트래픽과 평균 DNS 딜레이를 줄이는데 도움을 준다.

  • DNS는 hostname에서 IP address를 변환하는데 추가적인 중요 서비스를 제공한다.

    • Host aliasing(별칭) : 복잡한 hostname은 하나 이상의 별칭을 가질 수 있다.
      relay1.west-coast.enterprise.com
      canonical hostname(정식 호스트이름) : enterprise.com and www.enterprise.com , DNS는 application 호출로 제공된 별칭 호스트 이름과 호스트의 IP 주소를 가져 올 수 있다.
      순서: host alias name > host canonical name > IP address

    • Mail server aliasing(메일 서버 별칭) :host의 IP address뿐만 아니라 제공된 alias hostname를 위한 canonical hostname을 가져오기 위해 mail application에서 DNS를 호출 할 수 있다.
      예) heathers@nextunicorn.kr에서 nextunicorn.kr이 도메인 이름이기에 이를 이용해 서버의 IP 주소를 찾아 TCP 연결

    • Load distribution : DNS는 복제된 웹 서버 간에 load distribution을 수행하는데도 사용된다. cnn.com과 같은 사이트는 여러 서버를 통해 복제되고 각 서버는 서로 다른 end-system에서 실행된다. 그렇기에 복제된 웹 서버는 IP 주소 집합이 하나의 표준 호스트(canonical hostname)과 연결된다. DNS database에는 이 IP address 집합이 포함되어 있다. client가 주소 집합에 매핑된 이름에 대해 DNS query를 만들면 server는 전체 IP 주소 집합에 매핑된 이름에 대해 DNS query를 만들면 서버는 전체 IP 주소 집합으로 응답하지만 각 응답 내의 주소 순서를 회전한다. client는 일반적으로 HTTP 요청 메시지를 집합에 먼저 나열된 IP address로 전송하므로 DNS 순환은 트래픽을 복제된 서버 간에 분산시킨다
      동일 도메인 주소에 접근하는 client들에게 IP 주소를 분산시킨다
      일반적으로 DNS 서버에는 하나의 도메인의 여러 IP 주소 List를 가지고 있다. 접속하는 client들에게 이 list를 모두 주는데 보통 첫번째 주소를 사용하기 때문에 서버가 list를 rotation해서 보내준다.

      Overview of How DNS Works

    • hostname-to-IP-address translation service

    • DSN가 하나로 구성되어 있다면 client가 요청하거나 DNS가 응답할 때 편할 것이다. 하지만 오늘날에 맞지 않음

    • 중앙화된 설계의 문제점 :
      - single point of failure : DNS server가 다운되면 모든 인터넷도 다운된다.
      - traffic vlume : 하나의 DNS server에서 모든 query에 응답하게 된다.
      - distant centralize database : 물리적인 거리가 멀면 delay가 심화된다.
      - maintenance : DNS server가 하나라면 매일 새로운 host를 업데이트되어야 한다.

      A Distributed, Hierarchical Database

    • scale문제를 해결하기 위해 DNS는 전 세계에 분산된 수많은 계층적 형태의 서버를 사용한다.

    • mapping은 DNS servers에 분산되어 있다.

    • DNS servers는 3계층이 있다.

      • root DNS servers
      • TLD(top-level domain) DNS servers
      • authoritative DNS servers
    • 예) www.amazone.com 찾기

      1. client는 root server에 접근해 TLD server(.com)의 IP주소를 받는다.
      2. client는 TLD server에서 authoritative server(amazon.com)의 IP 주소를 받는다.
      3. clicent는 authoritative server(amazon.com)에서 www.amazone.com의 IP 주소를 받는다.
    • Root DNS servers : 전 세계에 13개가 있다.

    • Top-level domain (TLD) servers : 이 서버들은 com, org, net, edu, gov 등의 신뢰할만한 TLD, uk, fr, ca, kr 등의 국가 TLD 등이 있다.

    • Authoritative DNS servers

    • DNS server의 또 다른 중요한 타입 : local DNS server(a default name server)

      • 서버의 계급에 엄격히 따르지 않는다. 대신 DNS 구조에도 중앙화로 되어있다. 각 ISP(학교, 회사 등)이 local DNS server를 가진다.
      • host가 DNS query를 만들 때 query는 local DNS server로 보내지고 proxy처럼 역할을 하며 query를 DNS server 계층으로 전달한다.
      • DNS name resolution example
        • recursive queries: 기본
        • iterated query: local DNS server에 따라

DNS Caching

  • DNS caching
  • 장점 : delay를 줄임, DNS message 수를 줄임(traffic 낮춤)
  • hostname/IP address pair가 DNS server에 cache되고 동일한 hostname을 가진 다른 query가 DNS server에 도착하면 DNS server는 hostname에 대한 권한 없이도 원하는 IP address를 제공한다.
  • local DNS server는 TLD 서버의 IP 주소도 cache 할 수 있기 때문에 local DNS server는 query chain을 우회할 수 있고 일반적으로 우회한다.
  • 단, cache한게 오래되어 있을 수 있다. 만약 name host의 IP address가 변경되었다면 TTL(Time to live)이 만료될 때까지 인터넷 전체는 알 수 없다.

DNS Records and Messages

  • DNS server는 hostname과 IP address mapping을 제공하는 RR(resource record)을 포함해 DNS distributed database store resource records(RRs)를 함께 구현한다.
  • resource record(RR) 형태 : (name, value, type, TTL)
    • TTL: time to live of the resource record, cache에서 리소스를 제거할 시기를 결정한다.
  • query와 reply 메시지 형태는 같다.
  • nslookup 은 name server 관련한 조회를 할 수 있는 명령어
profile
프론트엔드 엔지니어

0개의 댓글