잠시 어떤 컴퓨터가 ip주소로 다른 컴퓨터와 통신을 한다고 했을때 벌어지는 일에 대해서 살펴봅시다.
클라이언트가 example.com 이라는 도메인 이름으로 접속을 시도 한다고 했을때 먼저 모든 운영체제에 있는 hosts 파일을 탐색합니다. hosts 파일에는 도메인 이름과 해당이름에 해당하는 IP 주소가 적혀 있습니다. 이렇게 DNS를 통하지 않고 다른 컴퓨터와 통신을 진행하게 됩니다. DNS가 없었을 때에는 컴퓨터마다 IP 주소에 이름을 각각 부여해서 IP주소를 관리하거나 기억하였습니다.
악의적인 목적을 가진 해커가 컴퓨터의 hosts 파일을 수정해서 자주방문하는 도메인의 ip주소를 바꾼다면 어떻게 될까?
자주 방문하는 도메인 이름으로 평소대로 접근한다면 수정된 ip주소로 접근합니다. 따라서 이 hosts 파일은 굉장히 중요하고 예민한 부분입니다.
만약 국민은행 사이트의 도메인인 kbstar.com 이라는 도메인의 ip주소를 악의적인 목적을 지닌 해커가 수정했다고 해봅시다.
이 수정한 사이트가 국민은행과 똑같이 생긴 fishing 사이트라면 우리는 국민은행을 이용하기 위해 fishing 사이트에 개인정보를 제공하게 됩니다.
이렇게 제공된 개인정보를 통해서 해커는 실제로 은행에서 돈을 빼갈수 있게됩니다.
이러한 보안 문제를 피싱 이라고 합니다.
이렇게 사이트를 구분하기 위해서 https
프로토콜을 이용해야합니다. 피싱사이트는 http
프로토콜을 사용합니다. https 프로토콜은 TLS 혹은 SSL 인증서를 발급받아 안전한 사이트임을 증명해줍니다. 반면 http 프로토콜은 이러한 인증문제를 제공하지 않아 안전을 보장하지 않는다는 경고 메시지를 브라우저가 보내게 됩니다.
중요한 사이트는 https
프로토콜을 사용하는지 확인합니다.
DNS가 등장하게된 배경에 대해서 살펴봅시다. 특정 ip를 가지고 해당 ip로 사이트를 운영하는 사람은 모든 사람들이 동일한 도메인 네임을 가지고 자신의 사이트를 이용해주기를 기대합니다. 그 도메인 네임이 자신의 사이트의 특정한 이름이 될 테니까요. 이러한 사람들이 많아지자 스탠포드 연구 기관에서 모든 사이트의 도메인네임을 관리하기 시작했습니다. 즉, 특정 ip의 특정한 도메인 이름으로 모든사람들이 접속하길 원한다면 스탠포드 연구기관에 해당 ip와 도메인 이름을 제출해서 등록해달라고 요구하고 이렇게 등록된 ip와 도메인이름들이 있는 주소목록은 hosts파일로 만들어져서 공개되었습니다.
모든 사람들은 이 hosts 파일을 다운로드 받아서 자신의 운영체제에있는 hosts 파일에 덮어쓰고 해당 ip주소를 특정한 도메인으로 접속하게 된 것이죠.
하지만, 이방법에는 문제점이 있었습니다. 스탠포드 연구기관에서 수작업을 통해서 hosts파일을 갱신했기 때문에 많은 시간과 비용이 들었고 하나의 hosts 파일에
모든 인터넷사이트의 도메인주소가 있다면 한계에 도달하게 됩니다.
사람들이 IP 주소를 이용해서 다른 컴퓨터와 통신하기 시작했을때 컴퓨터는 1대라는 환경을 극복할 수 있게 되었습니다. 하지만 한가지 문제가 있었는데, 컴퓨터마다 가지고 있는 IP주소라는 것을 사람들이 기억하기 어려웠다는 것 입니다. 이것을 위해 Jon Postel, Paul Mockapetris는 Domain Name System이 만들어지게 됩니다.
이 시스템의 핵심은 수만은 IP 주소의 Domain Name이 저장되어있는 DNS server가 핵심입니다.
우리의 컴퓨터는 어떤 페이지에 접속을 할때 도메인이름으로 접근합니다. 처음에 우리는 도메인 서버에 도메인 이름을 전송해서 ip주소를 물어봅니다. 이렇게 받은 ip주소로 드디어 해당 컴퓨터와 통신을 하는 것 입니다.