* TIL/개념: 최대한 공식 문서 & 책을 기반으로 배운 내용을 정리
* 현재 취준생으로 풋내기 개발자가 쓰는 글입니다.
* 그러니 조언과 지적 및 훈수는 언제나 환영입니다! 댓글로 많이 달아주세요!
- 웹 브라우저가 메시지를 만든다.
- HTTP 리퀘스트 메시지를 작성한다.
- 웹 서버의 IP 주소를 DNS 서버에 조회한다.
- 전 세계의 DNS 서버가 연대한다.
- 프로토콜 스택에 메시지 송신을 의뢰
- TCP/IP의 데이터를 전기 신호로 만들어 보낸다.
- 케이블의 앞은 LAN 기기였다.
- 액세스 회선을 통해 인터넷의 내부로!
- 서버측의 LAN에는 무엇이 있는가?
- 웹 서버에 도착하여 응답 데이터가 웹 브라우저로 돌아간다.
전 세계 수만대가 있는 DNS 서버가 연대하여 IP 주소를 조사한다.
어떻게 연대하는가?
DNS 서버의 기본 동작
DNS 서버는 서버에 등록된 도메인명과 IP 주소의 대응표를 조사하여 IP 주소를 화답한다.
DNS 서버는 기본적으로 다음과 같은 동작 과정을 거친다.
- 클라이언트에서 조회 메시지를 받고 조회 내용에 응답하는 형태로 정보를 회답하자!
- 이 때 조회 메시지는 이름, 클래스, 타입이 포함된다.
- 이름: 서버나 메일 배송 목적지(@뒷 부분의 이름과 같은 이름)
- 클래스: 인터넷 이외의 네트워크에서의 이용까지 검토해 식별하기 위한 정보
- 그러나 지금은 인터넷 이외 네트워크가 존재하지 않아 클래스는 항상 인터넷을 나타내는
- 타입: 이름에 어떤 타입(종류)의 정보가 지원되는지를 나타냄
- 예시
- A - 이름에 IP 주소가 지원되는 것을 나타냄
- MX - 이름에 메일 배송 목적지가 지원된다는 것을 나타냄
- 그 외에도 PTR, CNAME, NS 등 존재
- 이 타입에 따라 클라이언트에 회답하는 정보의 내용이 달라진다.
- 예시
- 이 때 조회 메시지는 이름, 클래스, 타입이 포함된다.
- DNS 서버는 조회 메시지에서 등록된 정보를 찾는다.
- 이름, 클래스, 타입 세 가지가 일치하는 것을 찾는다.
- 이 때 등록 정보는 설정 파일에 입력되어있음 ⇒ 리소스 레코드
- 이름에 대응하는 회답 내용을 반송한다.
도메인 계층
실제로 전 세계에는 막대한 수의 서버가 존재하는데,
이를 1대의 DNS 서버가 관리하는 것은 불가능하다.
⇒ 정보를 분산시켜 다수의 DNS 서버에 등록하고, 다수의 DNS 서버가 연대하여 어디에 정보가 등록되어 있는지 찾는다.
실제 DNS 서버에 등록한 정보는 도메인명이라는 계층적인 구조를 가진 이름이 붙여진다.
여기서 계층은 쉽게 말해 회사의 사업부, 디자인부처럼 부서와 같다고 생각하자.
이 때 도메인명에서 계층은 점(.)으로 구분한다.
- 예를 들어 www.naver.com 의 도메인명은
- com 부 naver 과 www
- 하나의 부서의 해당하는 것을 domain이라고 한다.
- 즉 com이라는 도메인 아래의 naver 도메인이 있고, 그 아래에 www 도메인이 있다.
이렇게 계층화된 도메인의 정보는 서버에 등록한다.
- 한 대의 DNS 서버에 도메인 한 대를 등록한다.
- 단, 서버와 도메인은 항상 1:1이 아니라 한대의 DNS 서버에 복수 도메인의 정보를 등록할 수 있다.
인터넷의 도메인은 도메인의 하위 도메인을 만들고, 국가나 회사 및 단체에서 할당한다.
- 예를 들어 www.naver.co.kr이라는 도메인은
- kr: 대한민국에 할당한 도메인
- co: 국내의 도메인을 분류하기 위해 설치된 도메인, 회사를 나타냄
- naver: 회사에 할당된 도메인
- www: 서버의 이름
담당 DNS 서버를 찾아 IP 주소를 가져온다.
그렇다면 찾고자 하는 웹 서버가 어느 DNS 서버에 되어있는지를 찾아야 한다.
이 때 닥치는 대로 뒤지는 방식(...)은 당연히 아니고, 다음 방법을 사용했다.
- 먼저 하위 도메인을 담당하는 DNS 서버의 IP 주소를 그 상위의 DNS 서버에 등록한다.
- 그리고 상위의 DNS 서버를 또 그 상위의 DNS 서버에 등록하는 식으로 차례대로 등록한다.
- 예를 들어 www.naver.com이라는 도메인을 담당하는 DNS 서버는 naver.com의 DNS 서버에 등록
- naver.com의 DNS 서버를 com 도메인의 DNS 서버에 등록한다.
이를 통해 상위의 DNS 서버에 가면 하위의 DNS 서버의 IP 주소를 알 수 있고, 거기에서 조회 메시지를 보낼 수 있다.
또한 com이나 kr과 같은 최상위 도메인의 상위에는 루트 도메인이 존재한다.
- 루트 도메인은 도메인 명이 없으며, com, co 같은 최상위 도메인이 등록되어 있다.
- 즉 루트 도메인을 경유하여 도메인을 찾아갈 수 있다.
루트 도메인의 DNS 서버를 인터넷에 존재하는 DNS 서버에 전부 등록해놓으면,
결국 어느 DNS 서버든지 루트 도메인에 액세스할 수 있게 된다.
- ex. www.naver.com의 ip 주소를 찾자.
- 가장 가까운 DNS 서버는 루트 도메인으로 향해 묻는다.
- 루트 도메인은 com 도메인에서 물어보라고 알린다.
- com 도메인 서버에 물으면, naver.com 도메인 서버에 물어보라고 답변한다.
- naver.com 도메인 서버에 물으면 www.naver.com 도메인 서버에 물어보라고 답변한다.
- www.naver.com 도메인 서버에 ip 주소를 물으면, ip 주소를 답변한다.
DNS 서버는 캐시 기능으로 빠르게 회답할 수 있다.
기본적으로는 최상위 루트 도메인에서 차례대로 따라간다.
→ 이 때 DNS 서버는 한 번 조사한 이름을 캐시에 기록할 수 있다.
→ 이를 통해 루트 도메인에서부터 찾는 것보다 편리하게 작동할 수 있다.
그러나 캐시에 있는 정보와 실제 등록 정보의 차이가 발생할 수 있다.
- 따라서 DNS 서버에 등록하는 정보에는 유효기간이 필요하다.
- 유효기간이 지나면 삭제한다.
또한 조회에 해답할 때는 정보가 캐시에 저장된 것인지, 아니면 등록처 DNS 서버에서 회답한 것인지 알려준다.
요약
- DNS 서버의 기본 동작
- 클라이언트에서 조회 메시지를 받고 조회 내용에 응답하는 형태로 정보를 회답하자.
- DNS 서버에는 조회 메시지에서 등록된 정보를 찾는다.
- 이름에 대응하는 회답 내용을 반송한다.
- 도메인 계층
- DNS 서버의 용량은 제한적이다.
- 때문에 정보를 분산하여 다수의 DNS 서버에 등록하고, 다수의 DNS 서버가 연대하여 정보를 찾는 방식으로 IP 주소를 조회한다.
- 도메인은 계층적인 구조를 가진다.
- 한 대의 DNS 서버에 도메인 한 대를 등록한다.
- 최상위 도메인의 상위에 있는 루트 도메인을 모든 도메인 서버에 등록한다.
- 이를 통해 어느 DNS 서버든지 루트 도메인에 엑세스할 수 있다.
- 루트 도메인으로부터 차례대로 내려오면서 도메인 서버를 찾아서 IP 주소를 조회한다.
- DNS 서버는 한 번 조사한 이름을 캐시에 기록하여 빠르게 회답할 수 있다.
- 그러나 실제 정보와의 차이가 발생할 수 있으므로 유효기간을 둔다.
- 또한 회답 시에 캐시에 저장한 것인지, 등록처 DNS 서버에서 회답한 것인지 알린다.
- DNS 서버의 용량은 제한적이다.
'CS > Network' 카테고리의 다른 글
[TIL/개념] 성공과 실패를 결정하는 1%의 네트워크 원리: 1-4 프로토콜 스택에 메시지 송신을 의뢰 (0) | 2023.07.06 |
---|---|
[TIL/개념] 성공과 실패를 결정하는 1%의 네트워크 원리: 1-2. 리졸버로 IP 주소를 DNS 서버에 조회 (0) | 2023.07.06 |
[TIL/개념] 성공과 실패를 결정하는 1%의 네트워크 원리: 1-1. HTTP 리퀘스트 메시지 작성 (0) | 2023.07.05 |
[TIL/개념] OSI 7 계층 (0) | 2023.06.01 |