TCP / IP 응용계층
DNS 개념
- DNS란 호스트 이름과 IP 주소를 매핑 시켜주는 거대 규모의 분산 네이밍 시스템을 의미
- TCP 기반 인터넷 응용 프로그램들은 호스트를 지정하기 위해 IP 주소만을 인식
- IP 주소는 컴퓨터 입장에서는 해석하기 용이하지만 사람에게는 기억하기 어려움
- IP 주소만으로는 서비스 유형을 판단하기 어려움
DNS 네임스페이스
- 호스트를 도메인으로 구분하고 도메인 별로 트리화하여 관리
- DNS 네임 스페이스는 파일 시스템의 디렉토리 트리와 같은 계층적 구조
- 도메인은 디렉토리에 해당하는 것으로 하위 서브 도메인이나 호스트로 DNS 트리를 구성
- 인터넷의 모든 호스트는 호스트 이름과 부모 도메인 이름으로 구성된 도메인 네임 식별자를 가지며, 점으로 구분되는 각각의 이름은 63자까지 가능
- 도메인과 호스트 이름은 대소문자를 구별하지 않고 DNS 트리 루트를 표시하는 null 값이외에는 어떤 문자도 사용 가능
DNS 도메인 레벨
- 최상위 레벨 도메인
- DNS 이름에서 가장 우측에 표시되는 단어는 도메인 트리의 최상위 도메인을 나타냄
- 최상위 레벨 도메인은 두 번째 레벨 도메인의 등록 및 관리기관이 되며 어느 집단이 사용하고 있는 이름인지를 쉽게 알아볼 수 있도록 설계
- 두 번째 레벨 도메인
- 최상위 레벨 도메인 등록기관은 등록 비용을 받고 두 번째 레벨 도메인 이름을 관리할 책임이 있음
- DNS는 특정한 호스트의 주소를 최상위 레벨 도메인 서버에 조회하고 최상위 레벨 도메인 서버는 그 요청을 두 번째 레벨 도메인의 위임 서버에 요청하고 그에 대한 응답을 받음
- 1대의 컴퓨터에 있는 호스트 테이블로 트래픽이 집중하는 문제를 해결
- 두 번째 레벨 도메인의 관리자가 여러 단계의 서브 도메인 생성 가능
- 대규모 네트워크에서 호스트를 식별하기 쉽지만 도메인을 관리해야 하는 부담이 있음
- 최상위 레벨 도메인의 DNS 서버에는 각각의 두 번째 레벨 도메인의 위임 서버 주소가 있음
- 두 번째 레벨 도메인의 서버는 자체 DNS 서버를 관리하는 세 번째 레벨 위임 서버의 주소를 관리
- 위임을 위해 도메인의 네임 스페이스를 존이라고 하는 관리 유닛으로 분리해야 함
리소스 레코드
- DNS 서버는 리소스 레코드(RRs)에 호스트와 서브 도메인에 대한 정보를 저장하는 데이터베이스를 유지
- SOA(Start of Authority)
- 서버가 그 존의 데이터에 대한 최고 권한을 가졌음을 표시
- NS(Name Server)
- DNS 서버가 그 존의 위임자임을 표시
- A(Address)
- 특정 DNS 이름을 IP 주소로 변환하는 기능을 수행
- PTR
- In-addr.arpa 도메인에 있는 특정 주소에 DNS 이름을 공급하는 address-to-name 매핑 제공하며 A 레코드의 반대 기능으로 역룩업에 사용
- CNAME(Canonical Name)
- A 레코드에 의해 식별되는 호스트의 정규(canonical) 이름을 지칭하는 별칭을 생성
- MX(Mail Exchanger)
- 도메인 주소로 보내진 이메일 트래픽을 개별 수신자나 메일 게이트웨이 또는 다른 메일 서버로 돌리는 시스템
DNS 네임 변환
DNS 네임 변환
- 변환기
- DNS 쿼리를 생성
- 서버가 응답한 정보를 요청한 응용 프로그램으로 전달
- 타임아웃 기간이 지나도록 응답이 없으면 쿼리 메시지를 재전송하며 서버에서 리턴한 오류 메시지를 처리
- DNS 요청
- 순환(recursive) 쿼리 방식
- 이름 분석을 시도하고 만일 서버가 요청한 정보를 갖고 있지 않다면 이에 대한 답이나 오류 메시지를 얻을 때까지 다른 DNS 서버에 질의를 계속하여 결과를 전송하는 방식
- 반복(iterative) 쿼리 방식
- 자체 데이터베이스에 있는 정보로만 응답
- 루트 네임 서버
- 클라이언트의 요청에 대해 필요한 정보를 갖고 있지 않은 DNS 서버는 대부분 반복 쿼리를 인터넷 루트 네임 서버 중 하나로 전송
- 루트 네임 서버는 어떤 도메인상의 이름에 대한 요청도 적합한 권한을 가지고 보낼 수 있음
- 루트 네임 서버에는 모든 최상위 레벨 도메인의 신뢰할 수 있는 서버들의 주소를 가지고 있음
- 최상위 레벨 도메인의 관리기관
- 쿼리를 국가코드 도메인을 포함해서 다른 최상위 레벨 도메인의 적합한 서버로 전달하는 기능을 수행
- 도메인 네임 분석
- 클라이언트 시스템의 사용자가 웹 브라우저와 같은 응용 프로그램을 통해
서버의 DNS 명을 입력
- 변환기는 서버의 이름이 포함된 DNS 순환 쿼리 메시지를 생성
- 순환 쿼리 메시지를 로컬 TCP/IP 설정에서 지정된 로컬 DNS서버로 전송
- 쿼리를 수신한 DNS 서버는 리소스 코드를 보고 요청한 서버 이름이 포함된 존의 권한 소스가 있는지 여부를 체크
- 권위자가 존재하면 응답 메시지를 생성, 클라이언트로 전송
- 권위자가 아닐 경우 반복 쿼리를 루트 네임 서버 중 하나로 전송
- 루트 네임 서버는 로컬 DNS 서버가 요청한 이름을 검토, 리소스 레코드를 찾아 해당 이름의 최상위 레벨 도메인의 신뢰 서버를 검색 로컬 DNS 서버에 최상위 레벨 도메인의 신뢰 서버 주소가 담긴 리퍼럴(Referal)을 전송
- 로컬 DNS 서버는 새로운 반복 쿼리를 최상위 레벨 도메인 서버로 전송
- 최상위 레벨 도메인 서버는 요청 받은 주소를 검색 두 번째 레벨 도메인의 신뢰서버 주소가 담긴 리퍼럴을 로컬 DNS 서버로 전송
- 로컬 DNS 서버는 다시 반복 쿼리를 생성하여 두 번째 레벨 도메인 서버로 전송
- 요청한 이름에 추가 도메인 명이 포함되어 있다면 두 번째 레벨 도메인은 세 번째 레벨 도메인 서버를 검색하여 또 다른 리퍼럴로 응답
- 이 과정은 로컬 서버가 요청한 호스트가 존재하는 도메인이나 존에 대한 권위자를 찾을 때까지 반복
- 호스트가 존재하는 도메인이나 존의 신뢰 서버는 리소스 레코드를 검색, 해당 호스트의 IP 주소를 찾아 응답
- 로컬 DNS 서버는 IP 주소를 변환기로 전달, 변환기는 주소를 해당 응용 프로그램으로 중계
DNS 서버 캐슁
- 클라이언트로부터 요청을 수신한 DNS 서버는 특정한 도메인의 신뢰 서버는 물론 요청한 시스템의 주소까지 캐쉬
- 클라이언트의 같은 주소에 대한 요청에 서버는 즉시 캐쉬된 정보로 응답
- DNS 서버의 캐시에 리소스 레코드가 너무 오랫동안 남아 있으면 그 리소스에 대한 변경사항 파악에 어려움
- 너무 빨리 삭제되면 루트 네임 서버와 최상위 레벨 도메인 서버로 전달되는 요청이 급상승해 병목현상을 유발
- DNS 서버는 존이나 도메인의 리소스 레코드가 남아 있을 시간(TTL)을 지정
네거티브 캐슁
- DNS 서버가 도메인상에 존재하지 않는 서버에 대한 정보를 얻는 경우 발생
- 캐슁은 병목 현상의 주요한 요인이 되는 루트 네임 서버와 최상위 레벨 도메인에 대한 요청을 줄일 수 있기 때문에 필수적 요소
DNS 부하 분산
- DNS 서버는 대부분의 경우 호스트 이름에 대해 하나의 IP 주소 정보를 가짐
- 그러나 특정 호스트에 대해 하나 이상의 IP 주소가 필요한 경우가 존재
- DNS 서버는 동일한 호스트 이름에 여러 IP주소를 부여한 다중의 리소스 레코드를 생성 가능
- DNS 서버가 이름 분석을 요청하는 쿼리에 응답할 경우, 리소스 레코드를 사용해 차례로 각 클라이언트에게 다른 IP 주소를 제공하여 부하를 분산 가능
DNS 역 네임분석
- IP 주소를 도메인 이름으로 변경해야 하는 경우도 존재
- IP 주소를 DNS 주소로 변환해 쉽게 읽을 수 있도록 하거나 인증 절차에 사용하기도 함
- In-addr 도메인 아래에는 0부터 255까지 이름을 가진 256개의 서브 도메인이 존재. 이는 IP 주소의 첫 번째 바이트 값을 의미
- 각각의 서브 도메인은 또 다른 256개의 도메인들로 구성되며 다음 단계 역시 256개의 도메인을 갖는 방법으로 세 번째와 네 번째 바이트까지 기술
- 대부분의 DNS 서버는 표준 도메인 네임 스페이스에 추가되는 모든 호스트에 대한 in-addr.arpa 도메인 리소스 레코드를 자동으로 생성
DNS 존 트랜스퍼
- 대부분의 네트워크에서는 적어도 2대의 서버를 사용하여 비상 시를 대비, 클라이언트가 가까운 DNS 서버에 액세스할 수 있도록 함
- DNS 표준에서는 이러한 서버간 DNS 데이터를 복제하는 매커니즘을 정의, 관리자가 하나의 DNS 서버의 정보를 변경하면 다른 DNS 서버의 정보는 자동으로 변경되도록 함
- DNS 서버의 역할은 주(Primary) 서버와 보조(Slave) 서버로 구분
- 주 서버는 리소스 레코드와 관련 정보를 데이터베이스로부터 로딩
- 보조 서버는 존 전송이라는 방법으로 다른 서버의 데이터를 수신
- 하나의 DNS 서버가 복수개의 존에 대한 관리자가 될 수 있기 때문에 모든 보조 서버의 데이터를 업데이트하려면 한 번 이상의 전송이 이루어져야 함
DNS 메시지 포맷
- DNS 네임 분석 트랜잭션은 UDP를 사용하며 서버는 포트번호 53, 클라이언트는 임시 포트번호를 사용
- 헤더 섹션
- 메시지의 성격에 대한 정보를 나타냄
- 질의 섹션
- 수신 측 서버에서 요청한 정보를 나타냄
- 응답 질의 섹션
- 섹션에서 요청한 정보를 제공하는 RRs
- 신뢰 질의 섹션
- 섹션에서 요청한 정보에 대한 권위자를 지정하는 RRs
- 추가 질의 섹션
- 섹션에 대한 응답으로 추가 정보가 들어있는 RRs
DHCP
DHCP 개념
- 자동으로 호스트를 구성해 주는 프로토콜
BOOTP 개념
- 디스크장치가 없는 컴퓨터가 IP주소, 서브넷마스크, 라우터의 IP주소, DNS 주소 같은 네트워크 구성정보를 얻기 위해 사용하는 프로토콜
- RARP단지 IP주소만을 얻음
- 물리주소와 IP주소가 바인딩 되어 동작 -> 이런 불편으로 DHCP 등장하여 동적 IP부여
- 네트워크 구성 정보를 얻기 위해 사용
- UDP를 기본으로 하고 크기도 작아 전송속도 빠름
- 패킷 포맷
BOOTP 요청 메세지
- 요청 패킷의 타입은 1
- 클라이언트의 IP주소는 0.0.0.0
- 클라이언트의 물리주소를 기록
BOOTP 포트번호
- 두 개의 고정 포트 번호를 사용 : 서버(67), 클라이언트(68)
- 고정 포트 사용
- 서버 응답이 브로드캐스트 메시지로 전달
- 다른 클라이언트가 수신할 수 있는 가능성이 발생하므로 클라이언트는 고정 포트 사용
- 여러 BOOTP 클라이언트가 동시에 사용되는 경우 헤더의 트랜잭션 식별자 혹은 물리 주소를 검사하여 구별
BOOTP 동작과정
- 서버는 UDP 포트 번호 67번으로 클라이언트 요청을 기다림
- 클라이언트는 UDP 포트 번호 68번을 사용하여 요청 메시지를 서버로 전송
- 서버는 목적지 포트번호 68번으로 응답
DHCP 동작
DHCP 주소할당 방법
- 수동할당 : 클라이언트의 IP 주소를 네트워크 관리자가 수동으로 설정
- 자동할당 : 클라이언트가 서버에 처음 접속할 때 IP 주소가 자동으로 할당
- 동적할당 : 일정기간 IP 주소를 클라이언트에 할당하고 임대기간이 끝나면 다른 클라이언트에게 다시 할당
DHCP 패킷포맷
- 플래그 필드와 옵션 필드를 제외하고는 BOOTP 패킷과 유사
- IP 임대 요청
- IP 주소 정보 요청
- MAC 주소와 호스트 이름 포함
- IP 임대 제공
- 서버가 제공할 수 있는 IP 주소, 서브넷 마스크, 임대 기간, DHCP 서버 주소(서버 식별자)를 브로드캐스팅으로 전송
- IP 임대 선택
- 가장 먼저 도착한 OFFER 메시지에 REQUEST 메시지로 응답
- IP 임대 확인
- 서버의 ACK 메시지로 IP 할당 완료
- NACK를 전송하면 클라이언트는 처음 과정부터 다시 시도
- IP 임대 갱신
- 유효 대여 기간의 50% 남았을 때 처음 갱신 시도
- 총 대여 기간의 87.5% 달할 때 다시 한번 갱신 시도
- IP 임대 해제
- 임대기간 이전에 임대를 종료 하려면 RELEASE 메시지 전송
DDNS
- IP 할당
- 유동 IP 할당
- 현재 IP 알림
- 할당 받은 IP를 DDNS 서버에 알림
- 도메인 이름 질의
- 일반 사용자는 DDNS 가입자 도메인 이름을 이용하여 접속
- 도메인 IP 질의
- DDNS 서버에게 해당 도메인 이름에 대한 IP 주소 질의
- IP 응답(DDNS->네트워크 사업자)
- 바인딩된 IP 주소를 네트워크 사업자에게 알림
- IP 응답(네트워크 사업자->일반 사용자)
- DDNS에서 받은 IP 주소를 일반 사용자에게 알림
- IP 주소로 접속
- IP 주소를 이용하여 접속
- 서버응답
- DDNS 사용자는 서버로써 일반 사용자에게 응답
'네트워크' 카테고리의 다른 글
[네트워크] 전송계층 프로토콜 (0) | 2023.03.20 |
---|---|
[네트워크] 라우팅 (0) | 2023.03.19 |
[네트워크] 모바일 IP (0) | 2023.03.18 |
[네트워크] IPv6 주소 (0) | 2023.03.17 |
[네트워크] IPv4 프로토콜 (0) | 2023.03.16 |