네트워크 프로토콜
- 데이터 프로토콜
- 컨트롤 프로토콜
- 데이터 프로토콜이 잘 동작하도록 도움
- 통신에 직접 관여하지 않지만 처음 통신 관계를 맺거나 유지하는 역할
- TCP/IP 프로토콜 체계를 유지하기 위한 주요 컨트롤 프로토콜 : ARP, ICMP,
DNS
1. DNS (Domain Name System)
도메인 주소를 IP 주소로 변환
하는 역할
- IP주소보다 도메인 주소를 이용하는 것이
일반 사용자에게 더 익숙
- 서버
IP 변경
에 쉽게 대처
할 수 있음
내부 시스템의 서비스 간 연결에도 DNS를 사용
- 보통 인터넷 연결을 위한 DNS와 내부 서비스 간의 이름 풀이와 통신을 위해
외부와 내부 DNS를 분리
해 운영
2. DNS 구조
EX. www.naver.com
www : Third-Level Domain
naver : Second-Level Domain
com : Top-Level Domain (TLD)
Root 는 생략
최대 255바이트까지 사용, 문자는 알파벳
, 숫자
, “-
”만 사용할 수 있고 대소문자 구분이 없다.
Root Domain
- 도메인을 구성하는 최상위 영역
- DNS 서버는 사용자가 쿼리한 도메인에 대한 값을 직접 갖고 있거나 캐시에 저장된 정보를 이용해 응답
- 만약 DNS 서버에 해당 도메인의 정보가 없으면,
루트 DNS에 쿼리
하게 된다.
- 루트 DNS는 전 세계에 13개가 있고, DNS 서버를 설치하면 루트 DNS의 IP 주소를 기록한
힌트 파일
을 가지고 있어 루트 DNS 관련 정보를 별도로 설정할 필요가 없다.
Top-Level Domain ( TLD )
- TLD는 IANA에서 구분한 6가지 유형으로 구분
- Generic(gTLD) : 일반적인 최상위 도메인 ( .com, .edu., .gov, .int, .mil, .net, .org )
- country-code(ccTLD) : 국가 최상위 도메인 우리나라 : kr
- sponsored(sTLD) : 특정 목적을 위한 스폰서를 두고 있는 최상위 도메인
- infrastructure : 운용상 중요한 인프라 식별자 공간을 지원하기 위해 전용으로 사용됨
- generic-restricted(gTLD) : 특정 기준을 충족하는 사람이나 단체가 사용할 수 있음
- test(tTLD) : IDN 개발 프로세스에서 테스트 목적으로 사용
3. DNS Query
각 레벨을 담당하는 네임서버가 있으며, 각 서버는 바로 하위 레벨 도메인에 대한 네임서버 주소 밖에 알지 못한다.
- Root Server는 Top-Level의 정보
- Top-Level Server는 Second-Level의 정보
- DNS 요청이 들어올 경우 Root 부터 시작해서 단계적으로 ip 주소를 찾아가게 된다.
클라이언트 → DNS Server → Root DNS → DNS Server → TLB DNS …
클라이언트 → DNS 서버 : Recursive Query
DNS 서버 → Roost NS, TLS, 등에 질의한 방식 : Iterative Query
4. DNS 레코드
A ( IPv4 ) 레코드
- A 레코드는 기본 레코드로
도메인 주소를 IP 주소로 변환
하는 레코드이다.
- 사용자가 DNS에 질의한 도메인 주소를 A 레코드에 절성된 IP 주소로 응답
- 하나의 A 레코드에는 한 개의 도메인 주소와 한 개의 IP 주소가 1:1로 매핑
- 동일한 도메인을 가진 A 레코드를 여러 개 만들어 서로 다른 IP 주소와 매핑할 수 있다.
- 반대로 다수의 도메인에 동일한 IP를 매핑한 A 레코드를 만들 수 있다.
서버 한 대에 여러 웹 서비스를 구동하는 방법
- 여러 도메인에 동일한 IP를 매핑하고, HTTP 헤더의 HOST 필드에 도메인을 명시
AAAA( IPv6) 레코드
- 역할은 IPv4와 같고, IPv6 주소 체계에서 사용되는 레코드이다.
CNAME ( Canonical Name ) 레코드
- 별칭 이름을 사용하게 해주는 레코드
- 도메인 주소를 매핑한다.
- 네임 서버가 CNAME 레코드에 대한 질의를 받으면 CNAME 레코드에 설정된 도메인 정보를 확인하고 그 도메인 정보를 내부적으로 다시 질의한 결과 IP 값을 응답. ( Ex. www. )
naver.com, www.naver.com을 A 레코드로 매핑하면, IP 주소가 변경될 때 두 개의 레코드 값을 모두 변경해야 하지만, naver.com만 A 레코드로 매핑한 뒤, www.naver.com은 CNAME으로 naver.com으로 매핑하면 IP 주소가 변경될 때 naver.com만 변경해도 된다.
SOA ( Start Of Authority ) 레코드
- 도메인 영역에 대한 권한을 나타내는 레코드
- 현재 네임 서버가 이 도메인 영역에 대한 관리 주체임을 의미 → 해당 도메인에 대해서는 다른 네임 서버에 질의하지 않고 직접 응답한다.
- SOA 레코드는 필수 항목으로 반드시 만들어야 한다.
- 도메인 동기화에 필요한 타이머 값이나 TTL 값도 함께 도메인의 네임 서버나 관리자 정보도 SOA 레코드에서 설정한다.
PTR ( Pointer ) 레코드
- A 레코드와 반대로 IP 주소에 대한 질의를 도메인 주소로 응답하기 위한 레코드
- 하나의 IP 주소에 대해 하나의 도메인 주소만 가질 수 있음
- 사용처 :
화이트 도메인 구성
용으로 사용
그외 : NS ( Name Server ), MX ( Mail eXchange), TXT( TeXT ) 레코드
5. DNS 이중화
Master & Slave
- 우선순위가 아닌 도메인에 대한
존(Zone) 파일
을 직접 관리하는지 여부로 구분
Master
- 존 파일을 직접 생성해 도메인 관련 정보를 관리
- 자신이 가진 도메인 정보를 인가받지 않은 다른 DNS 서버가 복제해가지 못하도록 슬레이브 서버를 지정해 복제를 제한한다. → 설정하지 않으면 모두 복제 가능 → 보안 문제
Slave
- 마스터에 만들어진 존 파일을 복제 ( 영역 전송 )
이중화에서 일반적으로 사용하는 Active-Standby, Active-Active
방식을 사용하지 않음
- 이중화는 액티브 장비의 문제가 발생해도 다른 액티브나 스탠바이 장비가 그대로 서비스
- 그러나, 마스터 서버에 문제가 발생하고 일정 시간이 지나면 슬레이브 서버도 도메인에 대한 질의에 정상적인 응답 불가능 → 이 시간을
만료 시간
이라고 하고, SOA 레코드
에 설정.
- 만료 시간 안에 슬레이브 서버가 마스터 서버에서 존 정보를 받아오지 못하면 슬레이브의 존 정보는 사용할 수 없어진다.
Active-Standby, Active-Active
- 네트워크 서비스나 시스템 내부의 컴포넌트 일부가 정상동작하지 않아도 서비스가 지속될 수 있도록 고가용성 기술을 사용
- 고가용성을 위해 일반적으로 사용하는 구조 ⇒ Active-Standby, Active-Active
Active-Active
- 두 개의 노드가 동시에 서비스를 제공, 한 노드에 문제가 발생하면 다른 노드에서 서비스를 계속 제공하는 방식
Active-Standby
- 두 개의 노드 중 액티브 노드만 서비스를 제공하고 스탠바이 노드는 대기하고 있다가 액티브 노드에 장애가 발생하면 서비스를 시작
6. 도메인 위임
DNS Delegation ( 도메인 위임 )
- 도메인에 대한 정보를 관리할 수 있는 네임 서버를 지정하지만 도메인 내의 모든 레코드를 그 네임 서버가 직접 관리하지 않고 일부 영역에 대해서는 다른 곳에서 레코드를 관리할 수 있다.
- 이 방식을 도메인 위임이라고 한다.
- CDN을 이용하거나 GSLB (global server load banlancing) 를 사용하는 것이 가장 대표적이다.
- naver.com을 관리하는 네임서버에서 하위에 post영역을 추가하고, 이 영역을 ‘B’ GSLB에서 관리하려고 할 때 post 관리 권한을 ‘B’에게 넘겨주는 방식이다.
- 특정 영역에 대한 관리 주체를 분리하는 용도로 사용할 수 있다.
GSLB
Global Server Load Balancing
- DNS와 동일하게 도메인 질의에 응답해주는 역할과 동시에 로드 밸런서처럼 등록된 도메인에 연결된 서비스가 정상적인지 헬스 체크를 수행
- 지리적으로 가깝거나, 응답할 수 있는 DNS를 찾아 빠르게 서비스를 제공.