도메인 주소 뒤에 숨겨진 비밀
오늘 회사에서 어느분이 도메인 연결이 잘 안된다고 하셔서 제가 좀 살펴봤습니다. 게임 프로그래밍하고는 관계 없지만 예전에 웹서버로 게임 서비스도 해봤기 때문에 대충 어떤 문제인지는 파악할 수 있을것 같아 보였습니다.
문제는 "도메인 포워딩"으로 연결한 서버가 http로는 접속이 되지만 https로는 안되는 이슈였습니다.
여러가지 단서를 모아본 결과 해당 도메인 업체에서 제공하는 "도메인 포워딩"서비스에서 https를 지원 안하는 것으로 보였습니다.
요즘에는 회사에서 C++ 코딩만 주로 하고 있어서 저도 "도메인 포워딩"이라는 서비스가 있는지도 몰랐습니다. 대부분 게임 서버는 도메인 이름과 IP주소를 직접 연결해놓기 때문에 포워딩 서비스를 쓸 필요가 없기 때문이죠.
그러던중 문득 인터넷 웹사이트가 어떤 과정을 거쳐 접속하게 되는지 궁금해하는 사람들도 있지 않을까 라는 생각이 들었고 그걸 간단하게 정리해보려고 합니다.
다음에 접속하려면 daum.net, 네이버에 접속하려면 naver.com, 구글에 접속하려면 google.com을 인터넷 주소창에 치면 됩니다. 물론 요즘에는 한글로 쳐도 알아서 잘 바꿔주긴 하죠. 하지만 저는 옛날 사람이라 그런지 아직도 주소를 직접 쳐서 들어가는 습관이 남아 있습니다.
이렇게 영문자로 되어있는 인터넷 주소를 도메인 이름이라고 합니다. 사람이 기억하기 쉽게 되어 있죠. 그런데 이런 영문자 말고 숫자로 된 IP주소란 것도 있습니다.
123.456.123.456 이런 식이죠. 다음, 네이버, 구글등 어떤 웹사이트에 접속하든지 반드시 IP주소를 입력해야 들어갈 수 있습니다.
그런데 IP주소는 기억하기 너무 어렵죠. 숫자로 되어 있고 어떠한 규칙이 있는것도 아니니까 말이죠. 그래서 인터넷을 설계한 사람들은 영문자로 된 도메인 이름을 특정 IP주소와 연결시킬 수 있는 시스템을 만들었고, 일반 사용자들한테 도메인 이름만 입력해도 되게끔 체계를 구축해 놨습니다.
이렇게 도메인 이름과 IP주소를 매핑해 놓은 서버를 도메인 네임 서버(Domain Name Server) 또는 Domain Name System이라고 하죠.
이 DNS덕분에 우리는 복잡한 IP주소를 몰라도 웹사이트에 접속할 수 있는 것입니다.
웹 브라우저에 google.com을 입력하고 엔터를 누르면 일단 DNS에 접속해서 이 도메인이 어떤 IP를 갖고 있는지 확인합니다. 이 DNS는 한대만 있는 것이 아니라 전세계에 엄청 많이 존재합니다. 왜냐하면 전세계에 존재하는 도메인 이름은 수도없이 많을 것이므로 이 모든것을 하나의 서버에서 처리할수는 없기 때문이죠. 따라서 특정 도메인 이름은 전세계 어딘가에 존재하는 DNS중 한군데에 기록되어 있습니다.
웹 브라우저는 먼저 1번 DNS로 가서 물어보고, 거기에 없으면 또 2번 DNS로 가고, 여기에도 없으면 3번 DNS, 4번 DNS, ... 이렇게 쭉 물어보고 다닙니다. 그러다가 내가 원하는 도메인을 갖고 있는 DNS를 찾으면 거기서 IP주소를 얻어오죠. 이렇게 얻어온 IP주소로 접속하면 다음, 네이버, 구글, 브런치등 웹사이트 서버에서 보내주는 컨텐츠를 받아올 수 있는 것입니다.
사용자인 우리 입장에서는 IP주소를 알 필요도 없고 직접 입력할 필요도 없습니다. 다 눈에 보이지 않는 백그라운드 과정에서 이루어 지는 일입니다.
그래서 DNS에 등록되어 있지 않은 도메인을 입력하면 IP주소를 찾을 수 없고, 결국 서버에 접속할 수 없기 때문에 이런 에러가 뜹니다.
내가 어떤 웹사이트를 만들었는데 사람들한테 IP주소를 알려주고 들어오라고 해도 됩니다. 하지만 도메인으로 들어오게 하고 싶다면 도메인을 구입하고 DNS에 등록하면 되는 것이죠. 보통 도메인 이름은 1년에 몇 만원정도 유지비용을 받습니다. 아주 오래전에 korea.com 이라는 도메인을 누가 미리 사놨는데 엄청 비싼 값에 팔렸다는 기억이 있습니다. 인기 있을것 같은 도메인을 미리 구입해 놓는 도메인 재테크가 유행하기도 했죠.