본문 바로가기
HTML, CSS, WEB 기술,

DNS(Domain Name System)에 대한 총정리 #IP주소 #DNS Server

by Developer88 2020. 4. 30.
반응형

오늘은 Web의 DNS(Domain Name System)라는 것에 대해서 정리해 보도록 하겠습니다.

 

1. DNS

세상에 존재하는 모든 컴퓨터들은 그것이 작은 스마트 폰이던 거대한 서버컴퓨터 이던,

인터넷에 연결되어 있다면, 하나의 host라고 할 수 있습니다.

이 host들이 서로 커뮤니케이션 하기 위해서는 숫자를 이용합니다.

이 넘버들이 바로 IP주소(예> "3.242.23.132")라고 하는 것 인데요.

 

그런데 이 넘버들은 사람이 일일히 기억하고 구분하기 어렵습니다.

마치 홍길동씨 전화번호를 등록하고 홍길동씨로 검색하여 찾아서 전화를 걸듯이,

컴퓨터도 찾아갈때, 숫자로 구성된 IP주소보다는 "test.com"과 같이 Domain Name을 이용하도록 한 것이지요.

 

2. 본인의 컴퓨터에서 DNS구현

Mac이건 Window이건 hosts 파일이 존재하는데요.

이 파일을 수정해서 Domain을 통해서 다른 host가 내 컴퓨터에 domain name으로 접속하게 할 수 있습니다.

 

2-1. Mac에서 DNS 구현

Mac을 쓰고 있는 제 컴퓨터의 hosts파일의 위치는 다음과 같습니다.

/private/etc/hosts

 

 

 

현재 localhost라는 domain Name으로 127.0.0.1이 ip주소로 사용되어지고 있는 것 이지요.

실제 대부분의 컴퓨터에서 쓰여지고 있는 localhost의 ip주소이기도 하구요.

 

여기에 특정이름과 주소를 매칭시켜서 사용할수도 있는 것 이지요.

 

2-2. Linux

Linux에서의 hosts파일의 위치는 다음과 같습니다.

따라서 nano나 vim을 이용해서 해당 hosts파일을 수정하도록 하면 되겠지요.

/etc/hosts

역시 마찬가지로 hosts파일에 localhost가 기록되어 있는 것을 알 수 있습니다.

 

 

3. DNS Server

그런데 Domain Name에 해당하는 IP주소를 개별적으로 다 가지고 있다면,

중복도 발생하고 혼선이 발생할 것 같은데요.

전화번호도 전화회사에 등록해서 관리되듯이,

IP주소도 그렇게 어딘가에 등록되고 관리되어야 할 테구요.

 

그런 관리를 위해서 ICANN(국제 인터넷 주소 관리기구)이라는 비영리단체와 Registry기관이 존재합니다.

여기서 Domain Name에 대해서 종합적으로 관리를 하기 때문에,

Domain이름에 대한 문제들을 해결할 수 있는 것 인데요.

 

이 업체에서 Domain Name정보에 대해서 정보를 관리하는 것을 알았는데,

이 업체의 정보에는 어떻게 접근하는 것 인가요?

이러한 정보를 전달받아서 제공해주는 DNS서버에 접속함으로서 가능해 지는 것 입니다.

다행히도 독자적으로 업체를 운영하는 것이 아니라,

Domain Name정보를 DNS Server를 운영하는 업체들에게 제공해 주는 형식을 취하고 있는데요.

 

그럼, 이러한 DNS Server에 유저의 컴퓨터는 어떻게 접속할수 있었던 것 일까요?

우린 누구하고도 DNS Server에 대한 계약이나 등록을 한 적도 없는데 말이지요.

이것은, 인터넷에 접속할 때, KT나 SK나 LG같은 ISP(Internet Service Provider) 사업자들이

사용할 DNS Server를 알려주기 때문에 가능한 것 인데요.

 

실제로 이것을 변경해 보려면, mac기준으로 시스템 설정화면에서,

Network로 가시면, DNS탭에 아래와 같이 DNS Servers가 나오는 것을 볼 수 있습니다.

아래 나오는 주소는 KT에서 제공하는 DNS서버인데요.

이것을 하단의 "+" 와 "-" 버튼을 이용해서 다른 DNS Server로 변경할 수도 있습니다.

 

 

 

DNS서버는 전 세계에 10,000개가 넘는데요.

이중에는 구글도 있습니다. "8.8.8.8"이 바로 구글의 DNS 서버이구요.

CDN으로 유명한 cloudflare사에서도 "1.1.1.1"을 만들었지요.

 

따라서 실제적으로 유저가 브라우저에,

"test.com"을 입력하면,

브라우저는 본인 컴퓨터에서 hosts파일을 뒤진뒤에 없다면,

DNS서버에 접속해서 이 도메인 이름에 해당하는 IP주소가 무엇인지 물어봅니다.

 

DNS서버가 있는 해당하는 IP주소를 알려주게 되고,

그제서야 유저는 IP주소에 웹서버로 연결되는 것 이지요.

그래서 사실, 유저들은 "test.com"에 접속함으로서, 바로 웹서버에 접속되는 것이 아니라,

처음에 DNS서비스의 DNS서버에 먼저 접속한 다음, IP주소를 받아서 그제서야 웹서버에 접속하게 되는 것 이지요.

 

4. Domain Name과 IP주소 조회

그럼 Domain Name Server들이 어떻게 IP주소를 파악하는지 알아보기 위해서,

Domain Name에 대해서 정리해 보도록 하겠습니다.

 

아래 도메인을 예로 들어보기로 하겠습니다.

참고로 com다음의 "."은 보통은 생략되어 있는 것으로, root Domain이라고 부릅니다.

api.test.com.

 

4-1. Domain 명칭

".com"이나 .co.kr" 혹은 ".io" 등을 Top-Level 도메인이라고 하구요.

가운데의 "test"를 Second-Level 도메인이라고 하구요.

"api"는 sub 도메인이라고 합니다.

 

4-2. Domain으로부터 IP주소 찾기

그럼 이러한 Domain정보를 바탕으로 어떻게 IP주소를 찾는 것 일까요?

IP주소를 찾기 위해서 Domain Name의 역순인,

Root Domain > Top-Level Domain > Second -LevelDomain > Sub Domain 순서로,

정보를 조회해 나가게 되는데요.

각 레벨별로 담당하는 Name 서버들이 존재하고 있기 때문에 가능한 일 입니다.

이들은 자신의 직속 하위레벨의 네임서버 정보를 알고 있습니다.

 

A. Root Domain

Root Domain의 Name Server는 위에서 언급한 icann이라고 하는 비영리단체에서 관리하고 있는데요.

이 Server가 Top-Level Domain의 Name Server의 주소를 가지고 있습니다.

참고로 모든 DNS Server에는 이 Root Domain의 Name Server가 기록되어져 있겠지요.

그래서, 유저가 "test.com"주소를 입력하면, ISP프로바이더가 알려준 DNS Server에서,

Root Domain의 Name Server로 접속해, 해당하는 Top-Level Domain의 Name Server를 찾아서 가겠지요.

 

 

B. Top-Level Domain

Top Level Domain의 Name Server는 Registry라는 기관에서 관리되고 있는데,

이들은 Second-Level Domain의 네임서버 주소를 가지고 있지요.

 

C. Second-Level Domain

보통 Second Level Domain의 네임서버는

직접 서버를 만들어 사용할수도 있지만,

도메인을 구매한 업체에서 제공받아서 사용하는 경우도 많습니다.

 

여기서 Second-Level Domain네임서버는 ip주소를 알려주는 역할을 하지요.

IP주소가 적힌 A(Address)레코드가 등장하는 곳이 바로 이곳의 네임 서버입니다.

 

4-3. IP주소 및 네임서버 조회하기

A. nslookup 명령어

nslookup이라는 명령어를 이용하면,

IP주소나 Name Server들을 알아낼 수 있는데요.

google.com의 ip주소를 조회해 보니 다음과 같이 나오는군요.

참고로, 첫째줄과 둘째줄은 DNS서버의 주소 입니다.

 

Name Server를 볼수도 있는데요.

"-type"옵션을 붙이고 여기에 "ns"를 넣어주면 아래와 같은 결과를 볼 수 있는데요.

Google의 경우는 NameServer가 4대인것을 볼 수 있습니다.

 

 

B. ICANN에서 제공해주는 Lookup서비스

ICANN(https://lookup.icann.org)에서 도메인등록 정보를 제공해 주는데요.

여기서 해당 도메인의 Name서버 주소를 볼 수 있습니다.

 

이상으로 DNS에 대해서 정리해 보았는데요.

좀 더 좋은 정보가 있으면 이 글을 통해서 업데이트 하도록 하겠습니다.

 

728x90

댓글