DNS란
Domain Name Space의 약자이다.
우리는 네트워크 상에서 Host를 식별하기 위해 IP주소를 사용한다.
하지만 일반적으로 우리는 도메인 이름으로 사이트에 접속하는 경우가 대부분인데, 이 또한 최종적으로는 IP 주소랑 매핑이 되어야만 한다.
그래서 이 도메인 이름을 IP주소로 해석을 해주는 DNS가 나오게 되었다.
DNS는 보통 패킷의 사이즈가 매우 작아 loss 발생이 적기에 UDP로 빠르게 보낸다고 한다. ( loss 되어도 단순 접속을 위한 시도이니 다시 시도하면 된다. )
다만 큰 패킷을 보내거나 Zone Transfer 시에는 신뢰성 있는 전송이 필요해 TCP로 전송한다고 한다. (이에 대해서는 나중에 공부해 보겠다.)
역할
1) 호스트에게 별칭을 줄 수 있다.
ex) relay1.naver.com 이라 한다면 호스트는 naver.com과 www.naver.com 같은 별칭을 2개 쓸 수 있다.
2) 메일 서버 별칭
3) 부하 분산
같은 도메인이더라도 다른 ip를 제공함으로서 부하를 분산 시킬 수 있다.
계층 구조
위의 그림에서 보다 싶이 앞에서 부터 레벨이 높아지는 것이 아닌 뒤에서 부터 체크하는 것이다.
- 그래서 처음에는 .을 보고 Root DNS 서버에 접속하고, 거기서 .com을 가지고 있는 TOP-LEVEL DNS 서버 주소(ip)를 얻는다.
- 그럼 해당하는 TOP-LEVEL DNS 서버에 접속을 하고, 거기서 .example.com을 가지고 있는 SECOND - LEVEL DNS 서버 주소를 얻는다
- 그럼 SECOND - LEVEL DNS 서버에 들어가 blog.example.com의 주소를 가져 오는 것이다.
물론 위의 과정은 진짜 대략적인 내용만 넣은 것이니 흐름정도만 이해를 하자
DNS 서버 종류
- Root DNS Server : 위에서 말한 그 서버이다. ICANN같은 기관에서 직접 관리를 하며, TLD DNS Server ip 주소를 가지고 있다.
- TLD(최상위) DNS Server : 도메인 등록 기관이 관리를 하며, Authoritative(책임) DNS Server의 ip 주소를 가지고 있다.
- Authoritative DNS Server : 실제 도메인과 ip 주소 관계가 기록/저장/변경되는 서버이다. 보통 도메인/호스팅 업체의 네임서버를 말하지만 개인이 DNS 서버를 구축했을 때에도 해당된다.
- RecurSive(Local) DNS Server : 일반적으로 유저들이 제일 먼저 접근하는 DNS Server. ISP에서 제공하는 DNS Server가 대표적으로 보통 캐싱역할을 맡는다...
Name Server
도메인 주소를 IP 주소로 변환 시키기 위해서는 도메인 네임 스페이스의 트리 구조를 알아야 하는데, 이런 정보를 가지고 있는게 네임 서버라 생각 하면 된다.
간단하게 도메인 주소에 해당하는 IP 주소를 알고 있어 알려주는 것이라 생각하면 쉽다.
- Master(Primary) Name Server : 해당 도메인을 관리하는 주 네임 서버라고 한다. Zone 파일을 관리하는 네임 서버 정도로 이해하자
- Slave(Secondary) Name Server : 말 그대로 두번째 네임 서버인데, 마스터 네임 서버가 고장 등의 이유로 정상 작동이 안될 때를 대비한 네임 서버라 생각하자. 그렇기에 주기적으로 마스터 네임 서버와 동기화를 해야만 일관성이 유지가 될 수 있으므로 Zone Transfer을 통해 업데이트를 한다. 이 때 용량도 크고, 신뢰성이 보장되야 하므로 TCP를 이용한다고 한다.
- Zone 파일
- Authoritative DNS 에서 관리하는 도메인 영역을 Zone이라 하고, 그 관리 도메인에 대한 정보를 가진 파일을 Zone 파일이라 한다.
동작원리
- 사이트를 검색시 ip 주소를 얻기 위한 dns 요청이 recursive dns 서버로 가게 된다.
- 만약 캐시 데이터가 있다면 바로 return을 하고 없다면 Root DNS 서버에 간다.
- 그럼 루트에서는 TLD DNS 서버 주소만 관리하기에 .com만 보고 TLD DNS 서버 주소를 알려준다
- 그럼 TLD에 가서 똑같이 물어본다
- 그럼 TLD에서는 그것이 Authoritative DNS 서버에 있다 알려준다
- 그럼 Authoritative DNS 서버에 가서 물어본다
- 그럼 Authoritative DNS 서버에서 ip를 알려주고 이것을 Recursive DNS 서버에 가 저장을 한다
- 그 뒤 브라우저에 ip주소를 알려준다.
참고자료
https://peemangit.tistory.com/52
'CS > 네트워크' 카테고리의 다른 글
WebSocket과 리눅스에서 소켓이란...? (0) | 2023.06.07 |
---|---|
OSI 7계층 PDU이름 (0) | 2023.06.07 |
Packet Delay(패킷 지연) 4가지 요인들 (1) | 2023.06.05 |
댓글