본문 바로가기
개발공부 개발새발/Network

DNS ) DNS 서버

by 휴일이 2023. 7. 25.

 

  • HTTP 메시지를 만들면, 이것을 OS 에 의뢰하여 엑세스 대상 웹 서버에게 송신한다.
  • 브라우저는 URL 을 해독하거나 HTTP 메시지를 만들지만 송출 기능은 없다.

TCP/IP

  • “서브넷”이라는 작은 네트워크를 라우터로 접속하여 전체 네트워크가 만들어진다.
    • 서브넷이란, 허브에 몇 대의 PC가 접속된 것이라고 생각하자. *라우터, 허브는 패킷 중계 장치의 일종
네트워크 번호
호스트 번호 번지
  • 이 두 주소를 합쳐서 IP주소라고 부른다.

동작

  1. 송신 측이 메시지를 보내면 서브넷 안에 있는 허브가 운반
  2. 송신 측에서 가장 가까운 라우터까지 도착
  3. 라우터가 메시지를 보낸 상대 확인 후, 다음 라우터 판단하고 보내도록 지시
  4. 다시 서브넷 허브가 라우터까지 메시지를 보냄
  5. 위의 동작을 반복하면 최종적으로 상대의 데이터가 도착한다.

→ 이것이 TCP/IP와 IP주소의 기본적인 개념

넷마스크

→네트워크 구축할 때 사용자가 직접 내역을 결정 할 수 있는데, 내역 정보를 필요에 따라 IP주소에 덧붙이는 것.

  • 실제 IP주소는 32비트의 디지털 데이터
  • IP주소 규칙은 네트워크 번호와 호스트 번호 두 가지를 합쳐서 32비트지만, 내역은 결정되어있지 않다.
  • 네트워크와 호스트 내역 정보를 결정해 붙이는 것!

IP주소의 호스트 번호

모두 0 서브넷 그 자체
모두 1 서브넷에 있는 기기 전체에 패킷을 보내는 “브로드캐스트”

 

도메인명과 IP 주소 구분이 필요한 이유

  • OS에 메시지 송신을 의뢰할 땐, IP 주소 조사 필요
  • 실제 서버명 대신 IP 주소를 써도 올바르게 동작한다.

→ 그러면 차라리 IP 주소를 쓰지 말고 이름으로 상대를 지정하여 통신하면 안 되나??

  • IP주소는 32비트(4바이트)
  • 도메인 명은 수십 바이트에서 255바이트까지의 문자 취급 필요
  • 그만큼 라우터가 부하되어 데이터를 운반하는 동작에 많은 시간이 걸려 네트워크 속도 느려짐
    • 그래도 이름을 알면 IP주소를 알고 있고, IP주소를 알면 이름을 알 수 있으면 좋잖아!
    • 그 원리가 바로 “DNS”

IP 주소 찾는 방법

  1. 가장 가까운 DNS 서버에 “naver.com” 이라는 서버의 IP 주소를 가르쳐 주세요. 질문
  2. DNS 서버가 “그 서버의 IP 주소는 000.000.000.000 입니다.”

Socket 라이브러리

→ OS 에 포함되어 있는 네트워크의 기능을 애플리케이션에서 호출하기 위한 부품을 모아놓은 것

  • 리졸버의 실체는 Socket 라이브러리에 들어있는 부품화한 프로그램

DNS 리졸버 (리졸버)

→ DNS 서버를 조회하는 클라이언트. DNS 의 원리를 이용하여 IP 주소를 조회하는 것을 네임 리졸루션이라고 한다. 네임 리졸루션을 실행하는 것이 리졸버.

  1. 리졸버가 DNS 서버에 조회 메시지를 보낸다.
  2. DNS 서버에서 응답 메시지가 돌아온다.
    1. 이 응답 메시지 속에는 IP 주소가 포함
  3. IP 주소를 추출해서 브라우저에서 지정한 메모리 영역에 써넣는다.
  4. 브라우저가 웹 서버에 메시지를 보낼 땐, 이 메모리 영역에서 IP 주소를 추출해서 HTTP 리퀘스트 메시지와 함께 OS에 건네줘서 송신을 의뢰한다.

리졸버 내부 작동

  1. 네트워크 애플리케이션(브라우저)가 리졸버 호출
    1. 제어가 리졸버 내부로 넘어감 *앱이 별도의 프로그램을 호출하면 호출처의 프로그램이 쉬고, 호출 대상 프로그램이 움직이는데 이것을 “제어가 넘어간다”라고 함.
  2. 리졸버가 DNS 서버에 문의하기 위한 메시지 만들기
  3. 메시지 송신
    1. OS 내부에 포함된 프로토콜 스택을 호출해서 실행 의뢰
  4. LAN 어댑터를 이용하여 메시지가 DNS 서버를 향해 송신.
  5. 조회 메시지 DNS 서버 도착. DNS 서버가 내용 조사해서 답을 찾음.
  6. 액세스 대상 웹 서버가 DNS 서버에 등록되어 있다면, 답을 응답 메시지에 써서 클라이언트에게 반송
    1. 네트워크를 통해
    2. 클라이언트측에 도착
    3. 프로토콜 스택 경유
    4. 리졸버에게 건네짐
    5. 리졸버가 내용 해독, IP 주소 추출
    6. 애플리케이션에 IP 주소 건네줌
  7. 리졸버를 호출할 때 지정한 메모리 영역에 IP 주소 저장

→ 층을 이루도록 다수의 프로그램이 존재하고, 서로 역할을 분담하는 “다층구조”

 

✅ DNS 서버에 메시지를 송신할 때도 DNS 서버에 IP 주소가 필요한데, 이것은 TCP/IP 설정 항목의 하나하나로 컴퓨터에 미리 설정되어 있다

DNS 서버 기본 동작

→ 클라이언트에서 조회 메시지를 받고 조회 내용에 응답하는 형태로 정보를 회답한다.

조회 메시지에는 다음 세 가지 정보가 포함되어 있다.

  • 이름
    • 서버나 메일 배송 목적지(메일 주소에서 @ 뒷부분 이름)
  • 클래스
    • 인터넷 이외의 네트워크 이용까지 검토해서 클래스를 지정했으나, 지금은 인터넷밖에 남지 않았으니 “IN”으로 표기한다
  • 타입
    • 이름에 어떤 타입(종류)의 정보가 지원되는지. IP주소나 메일 주소 등…
    • IP 주소는 A 타입
    • 메일 배송 목적지는 MX 타입
✅ DNS 서버는 서버에 등록된 도메인명과 IP 주소의 대응표를 조사해 IP 주소 회답. 등록 정보를 리소스 레코드 라고 한다.

Q. 만약 조회 메시지를 받은 DNS 서버에 정보가 등록되어 있지 않다면?

A. 정보를 분산시켜 다수 DNS 서버에 등록하고, 다수의 DNS 서버가 연대하여 어디에 정보가 등록되어 있는지를 찾아낸다.

  • DNS 서버에 등록한 정보에는 도메인명이 붙어있다.
  • lab.cyber.co.kr 이라면
    • com 도메인 → cyber 도메인 → lab 도메인 → www 도메인
    • cyber.co.kr → DNS 서버에 등록
    • com → DNS 서버에 등록
    • com 이나 kr 상위에 “루트도메인” 이 있다. 이 루트 도메인에 정보 다 등록한다.
  • 한 대의 DNS 서버에 도메인 한 대를 등록한다 생각하자.

캐시

한 번 사용한 데이터를 데이터의 이용 장소와 가까운 곳에 있는 고속 기억 장치에 저장하여 두 번 째 이후의 이용을 고속화하는 기술

  • DNS 서버는 한 번 조사한 이름을 캐시에 기록
  • 캐시에 해당 정보가 있으면 그 정보를 회답한다.
  • 단, 캐시에 정보를 저장한 이후 등록 정보가 변경되는 경우도 있다.
    • DNS 서버에 등록하는 정보에는 유효 기간을 설정

캐시 저장 데이터의 유효 기간이 지나면 캐시에서 삭제

728x90