IP 0.0.0.0 주소가 가지는 의미?

지금부터 내가 싸지르는 글은 서버 개발자를 위한 글이 아니다.
그냥 당신이 어느정도 컴퓨터 좀 다룰 줄 아는 모든 이들을 대상으로 쓰는 유용한 팁 글이다.
마음을 비우고 차분히 읽어보기 바란다.

일단 먼저 이론부터 보자면, IP 주소 0.0.0.0 은 유효한 주소다.
근데 이론만이다.

하지만 실제로 0.0.0.0 주소는 당연하겠지만 할당 가능한 IP 주소가 아니며, 논리적 용도로 사용한다.
위키페디아 0.0.0.0 문서를 보면 여러 의미로 사용되곤 한다.
문서 상에서는 메타 주소라 칭하고 있다. 그렇다. 우리식 대로는 물리적 주소가 아닌, 논리적 주소라 해석해도 손색이 없다.

하지만 한국에서는 0.0.0.0 얘기를 꺼내기 시작하면, TCP/IP 이론부터 들고 일어나 서버쪽 공부를 시키게 될 것이다.
당장에 구글 한국어 검색이나 네이버를 뒤지면 이런 얘기들 뿐이다.
서버에 관심 없거나 모르는 사람을 위해, 서버측 이론을 당장 한 마디로 함축하면,
0.0.0.0 주소는 “나는 어떤 IP 주소로 서비스할 지 모르니 아무 IP 대역 다 서비스 해 줘.” 라는 뜻이 되겠다.
여기서 다른 방향으로 넘어가면, 서버 프로그램이 0.0.0.0 주소를 어떻게 사용하느냐 나름이겠지만, 묵시적 규칙으로 대부분 이렇게 사용한다.

하지만 네트워크 클라이언트에서도 0.0.0.0 주소를 사용하기도 한다.
당장 OS 상관없이 가장 빠르고 쉽게 접할 수 있는 가장 대표적인 예로 HOSTS 파일이 있다.
자, 하지만 서버와는 달리 0.0.0.0 의 쓰임새도 없다. 할당할 IP가 없다. 그렇다면 뭐다? 없다.
그렇다. HOSTS 파일의 0.0.0.0 IP 주소는 “어느 IP 주소도 할당하지 마라.” 라는 뜻으로 보면 된다.
만약 우리가 HOSTS 파일에 0.0.0.0 naver.com 줄을 추가하여 저장 후 브라우저를 킨다면?
네이버 접속하자마자 바로 페이지를 찾을 수 없다고 뜰 것이다. 1초의 망설임도 없이 컴퓨터는 접속 오류를 내뱉을 것이다.
왜냐, 0.0.0.0 이 가지는 라우터도 없고, 물리적 할당 공간도 모르며, 어디로 접속해야 할 지 아예 정해지지 않았기 때문이다.
그래서 HOSTS 파일 작성 시, 원치 않는 도메인을 바인딩하려고 할때 (주로 광고나… 어둠의 유지용) 127.0.0.1 대신 사용하라는 것이다.
127.0.0.1 주소는 다들 아시다시피 로컬 IP 주소다. 만약 이 주소로 바인딩을 시도하면, 컴퓨터는 자신의 컴퓨터를 “가상 루프백 네트워크 드라이버”를 통해 접속하려 할 것이다.
그러다가 접속할 수 없으면 접속 오류가 뜬다. 그렇기 때문에 HOSTS 에서는 원치 않는 도메인을 127.0.0.1 대신 바로 접속을 중지해버리는 0.0.0.0 주소를 권장하는 것이다.

네트워크 클라이언트에서도 0.0.0.0 주소는 요긴한 기능으로 사용하기도 한다. 상기 위키페디어를 가면 알겠지만,
당신의 랜 카드에 IP를 할당해야 하는데, 모르겠다? 그냥 자동으로 받고 싶다? 그러면 우리가 보기에는 DHCP 사용에 체크하거나 설정할 것이다.
그러면 네트워크 연결 프로그램은 이걸 할당 IP 주소를 내부적으로 0.0.0.0 으로 설정한 다음, 접속 가능한 게이트웨이로부터 자동으로 IP를 받는 서버로 IP를 할당받으려 할 것이다.
그러지 못하면 169.254.xxx.xxx 라는 듣도보도 못한 IP 주소를 받고 네트워크 활동을 못하는 참사가 일어나겠지.
어쨌든, 네트워크 연결 프로그램에서는 0.0.0.0 주소의 의미는 “나는 어떤 IP 주소를 할당받을 지 모르겠으니 자동으로 받아 주시오.” 뜻이 되겠다.

지금까지 IP 얘기는 IPv4 기준이었고, IPv6 에서 같은 역할을 담당하는 주소는 콜론 2개 딸랑 :: 쓰면 된다. 참으로 간편하지 아니한가?

올바르지만 올바르지 않는 0.0.0.0 IP의 세계는 결국 앱이 정하는 기준에 따른다고 보면 된다. 전체적으로는 “몰라, 안써!” 의미가 되겠다. 하지만 이 의미가 유용하게 쓰이기도 한다는 점을 알아두기 바란다.
끗.

composite / 2018년 5월 8일 / Piss Development / 0 Comments