안녕하세요 ^^
주말이라 나름 여유를 부려 오랜만에 블로그 !
오늘은 IT에 근무하는 개발자라면 당연히 알아야 하는 DNS에 대해서 소개하고자 합니다.
우리가 브라우저에 http://naver.com을 타이핑 하여 접속하면 어떤일들이 벌어질까요?
보이지는 않지만 엄청나게 많은 일들이 일어나죠..
수많은 일들 중 하나가 바로 DNS 조회라는 일이에요.
컴퓨터는 0과 1밖에 모르는 똑똑하지만 바보같은 아이랍니다.
그래서 http://naver.com 이란 문자열을 인식하지 못해요.
naver.com 이란 웹서버가 있는 곳을 알아야 그 웹서버에 요청을 할텐데
웹서버가 있는곳을 바로 DNS 서버란 녀석이 알려줍니다.
DNS 서버에는 IP와 도메인이 저장되어 DNS에서 조회를 하면 202.179.177.21 이란 ip를 응답하여 준답니다.
이번에 알게된 사실인데 DNS 서버에 요청은 바이너리 형식으로 요청을 한다고 해요.
자 그럼 응답 하는 과정을 알아볼까요.
1. DNS 서버는 어디 있을까요?
우리가 따로 설정을 하지 않는 한 자동으로 DNS 서버 주소를 해준답니다.
2. DNS 조회
자동으로 설정된 DNS 서버에 우리는 naver.com의 웹서버가 어디있는지를 물어봅니다.
그런데 DNS 서버에 모든 도메인의 IP를 가지고 있을까요?
절대 그럴 수가 없겠죠 .. 도메인이 얼마나 많은데
DNS 서버는 전 세계에 있는 DNS 서버가 연대하여 도메인에 상응하는 IP찾을 수 있도록 도와줍니다.
도메인에는 계층을 갖고 있어요.
바로 점을 기준으로 naver 계층, com 계층 그리고 보이진 않지만 마지막에 .이 생략되어 루트 계층으로 나눠집니다.
이렇게 나누어진 계층으로 각 DNS 서버가 존재 하게 되는데 우리가 사용하는 컴퓨터에 설정된 DNS 서버는
가장 먼저 루트 도메인 DNS 서버에 물어봅니다. 루트 DNS 서버에서는 질의를 확인하여 COM이 속한 DNS 서버의 IP를 응답하여
다시 COM이 속한 DNS 서버에 요청을 하고
COM DNS 서버는 NAVER DNS 서버 IP를 반환하고 이러한 형식으로 결국 원하는 IP 주소를 받습니다.
원하는 IP 주소를 받았으니 이제 알고 있는 IP 주소의 서버로 요청을 보내게 되고 웹서버는 요청을 확인하여 맞는 응답을 합니다.
그 응답한 결과가 바로 NAVER 의 메인 페이지가 브라우저에 보이게 되는 것이랍니다.
바로 이런 식으로 마지막의 NAVER DNS 서버가 우리가 원하는 IP주소를 가르쳐 줍니다.
그럼 우리는 원하는 IP 주소를 받아 그 IP주소의 웹서버에 하고 싶은 요청을 하고 응답을 받는 형시이죠.
3. DNS에 저장되어 있는 데이터
우리가 DNS 서버에 요청을 할 때 어떻게 물어보게 되는 걸까요 ?
마치 웹서버에 HTTP 헤더를 만들어 요청하는것과 같이
DNS 서버에는 3가지의 정보가 포함되어 있습니다.
1) 이름 : 서버나 메일 등 목적지입니다.
2) 클래스 : 지금은 사용하지 않지만 인터넷을 나타내는 'IN'의 데이터만 사용한다고 합니다.
3) 타입 : 어떤 종류의 정보인지 나타냅니다. 여러가지의 타입이 있는데 자주 사용하는건 'A' 라는 address라는 의미로 일반 IP 주소를 나타내며,
'MX'라는 타입이면 메일 서버가 되는것입니다.
이렇게요... 포토샵을 못해서 죄송합니다...
4. 예외
이론상으로는 이렇게 되지만 현실에서는 각 도메인에 한대씩 DNS 서버가 존재한다고 단정 지을 수 없습니다.
상.하위 도메인을 하나의 DNS에 설정을 하는 경우가 있어 위에서의 질의 응답 방식을 한단계 건너 뜁니다.
또한 DNS 서버에게 IP 주소 요청을 할 때마다 항상 루트도메인 까지가고 하위 DNS서버에 가고 또 하위 DNS 서버에 간다면 우리는 원할하게
인터넷을 할 수가 없을거에요..
그래서 한버 조사한 이름을 캐시에 기록하여 다음에 조회할 때는 이미 알고 있는 ip주소를 알려주게 되어 굳이 루트 도메인으로 가지 않아도
알 수가 있답니다.
캐시는 먼저 우리가 사용하는 컴퓨터에 먼저 사용을 하였지만 고속화 하기위해 네트워크에 도입되었습니다.
끝으로...
주저리 주저리 막 쓰게된거 같아 이해가 잘 가실지 모르겠습니다 ㅠㅠ
네트워크 세계는 참 신기하고 오묘한거 같아요.
그러니 개발자는 죽을때까지 공부를 놓치면 안된다고 생각해요
오늘도 즐거운 하루 되세요 :~)
'etc.' 카테고리의 다른 글
컴퓨터의 단위 (0) | 2016.05.24 |
---|---|
mx 레코드, a 레코드 ip 확인하기 (0) | 2016.05.16 |
ASP ajax euc-kr 한글 깨짐 현상 (2) | 2016.04.10 |
host 파일이란 (0) | 2016.02.24 |
포토샵 작업시 유용한 색상 사이트 (0) | 2016.01.22 |