📌 개요
해당 고민을 하게 된 계기와 이유
- 수많은 서버에 대해서, 각 서버 별 쿠키를 확인하기 위해, 직접 IP 주소를 치는 것이 아닌 도메인을 명시하며 찾아갈 수 있었다.
- 실제 DNS 서버까지 가지 않고, 운영체제 레벨(내 컴퓨터)에서 도메인을 지정하여 찾아가게 하는 방법은 무엇일까? 그 정답은 hosts 파일에 있었다.
- 그렇다면 hosts 파일이란 무엇이며, 동작과정이 어떻게 되는것일까?
📌 What?
다루고자 하는 키워드와 개념 정리
hosts 파일이란?
DNS 를 찾을 때 가장 먼저 살펴보는 곳으로,
윈도우의 경우 C:\Windows\System32\drivers\etc
MAC의 경우 /etc/hosts 경로에 위치한 hosts 파일이 있다.

해당 파일을 열어보게 되면 아래와 같은 내용을 확인할 수 있다.

내용은 크게 어렵지 않다. 왼쪽에 IP 를 적고, 매핑 할 도메인을 우측에 적으면 도메인과 IP 가 매핑이된다.
정말 그런지 확인해보자!
현재 로컬에서 51384 포트번호로 플러터를 사용중에 있다.
따라서 아래와 같은 입력을 하면 로컬의 플러터를 찾아오게 될 것이다.
localhost:51384
127.0.0.1:51384

이때 새로운 도메인으로 내 컴퓨터의 IP를 매핑해주겠다.
그로 인해, 새로운 매핑 도메인으로도 플러터 서버를 찾아올 수 있게되었다.
해당 기능이 바로 실제 DNS 서버까지 가지 않고, 운영체제 hosts파일 정보를 활용하여, 도메인 정보를 가져온 것이다.


hosts 파일 작성 규칙
- 샵 기호(#)로 시작하는 줄(line)은 주석문, 개별 줄(line) 앞이나 호스트 이름 다음에 작성
- 각 항목은 한 줄(line)로 작성- 항목은 IP 주소 + 호스트 이름 순서로 제한
- 호스트 이름과 IP 주소의 간격은 최소한 1칸을 띄움
- 호스트 이름의 글자수는 255자로 제한- 프로토콜 형식 'http:', 와일드카드 문자 '*', 주소 맨끝에 사선기호 '/' 사용 제한
📌 How?
현재 “어떻게(어떤 용도로)” 이걸 쓰고있는 걸까?
도메인 정보를 찾는 과정
실제로, google.com , naver.com 과 같은 도메인을 입력하게되면, 도메인 정보를 찾기 위해 DNS 서버를 통해서 실제 IP 정보를 제공받고 해당 서버로 찾아가게 된다.

그렇다면 어떻게 실제 DNS 를 찾아가지 않고 내가 설정한 도메인으로 매핑이 이루어진 것일까?
그것은 바로 도메인을 찾아가기 위한 선행조건들이 있기 때문이다.
실제 DNS 를 찾아가기 전, 아래 4단계를 거쳐서 가까운 순서로부터 DNS 정보를 확인하게 된다.
이 때, 그림에는 없지만, 0번에 위치한 곳이 바로 hosts파일이다. (즉, 가장 먼저 살펴보는 공간이다.)

0. hosts 파일
이번 주제에서 다뤘던 부분이다.
가장 먼저 운영체제 내의 hosts 파일을 보게되고, 그 후 여럿 공간에서 캐시정보를 확인한다.
존재여부는 윈도우 기준 c / window / system32 / driver / etc 폴더 밑에 hosts 파일로 존재하게 된다.

해당 부분에서 먼저 선행 조건으로 바라봤기 때문에 엉뚱한 도메인이더라도, 실제 찾아갈 수 있는 IP만 정확하다면, 무사히 통과가 되는 것이다.
1. 브라우저
hosts 정보를 확인해 본 후 바라보는 브라우저 캐시다.
브라우저 캐시는 "개발자 도구(F12)를 열어보면 Cache 라는 공긴이 존재하는데, 해당 공간에서 도메인과 IP주소가 등록되어 있다면 곧바로 웹 브라우저에게 전달이 가능하다.

2. OS
웹 브라우저 캐시에 존재하지 않으면, 다음으로는 OS 쪽을를 살펴보게 되는데,
hosts 파일을 확인 해본후, 다음으로는 운영체제 내의 DNS 캐시정보를 확인하는데,
이는 cmd 프롬프트 창에서 ipconfig/displaydns 로 확인이 가능하다.

이 외에도 라우터캐시 → ISP 캐시 를 확인 후 실제 DNS 서버를 찾아가는 것이 순서가 되어있다.
📌 Why?
현재 “왜” 이걸 다음과 같이 사용하고 있을까?
실제 운영중인 서버에 대해서는 실제 도메인을 사들여서 지정했을 것이다. 하지만 만일, 각 테스트 서버에 대해서는 굳이 도메인을 살 필요가 있을까?
일단 테스트 서버 자체가, 운영에 올라가기 전 회사 내규에서 자체적인 테스트를 위해 사용하는 서버이기 때문에, 모두에게 공개 시킬 필요가 없다.
또한 DNS에 등록해서 사용했다고 한들, 매번 DNS까지 찔러서 IP정보를 가져오는것도 고비용으로 이루어진다. 브라우저 캐시 혹은 OS 캐시를 적극 활용한다면 빠른 속도, 저비용으로 IP정보를 가져올 수 있다.
- 즉, 호스트 파일을 이용하면 얻을 수 있는 몇 가지 장점은. 속도가 향상된다는 점이며, 리소스 사용을 줄일 수 있다.
- 하지만 가장 큰 주된 목적 중 하나는 여러 서버로 구성되어 있는 사내 서버의 고정된 요청에 대해서 가로채 나의 로컬 환경에서 확인하는 용도로도 많이 쓰일 것이다.
📌 Then?
그럼 비교선상에 올라오는 다른 기술, 방법들은 무엇이 있을까? : 어떤식으로 개선해 볼 수 있을까?
주의사항
물론 주의사항도 존재한다.
보안과 악용에 대해서 면밀한 주의가 필요된다.
실제로 네이버의 IP 의 주소를 살펴보면 다음과 같다.
이 실제 주소를 찾아가기 위한 도메인정보를 DNS 서버에 등록해놨을 것이다.

하지만 만일 내가 hosts 파일에서 www.naver.com을 localhost로 지정해버리면 어떻게 될까?


실제 DNS 찾기 전, 나의 hosts 파일에서 정보를 먼저 찾기 때문에, 도메인 정보를 탈취(?)하는 악용을 벌일수도 있을 것이다.
따라서 hosts 파일을 변경하게 하는 해킹등에 면밀히 조심해야 할 것이다.!
📚 참고 자료 / 도움되는 링크들
'[CS]' 카테고리의 다른 글
| OS - 운영체제 정리 : 운영체제 역할, 커널, 이중 모드와 시스템 콜, 인터럽트 (0) | 2025.12.14 |
|---|---|
| 네트워크 - 웹 브라우저에 www.google.com을 치면 어떤일이 일어날까? (0) | 2024.09.08 |