글 작성자: 택시 운전사
반응형

어제 오늘 정부의 HTTPS/DNS 차단으로 떠들석합니다. 기사에는 HTTPS, DNS, Packet같은 여러가지 전문 용어들이 등장하는데요, 과연 어떤 의미인 지 알아보기로 했습니다. 우선 DNS에 대해 알아봅시다. 우리가 주소창에 www.youtube.com을 쳤을 때, 크롬이나 파이어 폭스같은 브라우저는 저 이름에 해당하는 Domain Name이 아닌 우리가 가려는 사이트의 정보를 담고 있는 서버의 IP Address를 알아야합니다. 그리고 이 과정에서 DNS가 등장합니다.

DNS(Domain Name System)

DNSTCP/IP Network에서 사용하는 시스템 서비스으로 영문/한글 주소를 IP Network에서 찾아갈 수 있는 IP Address로 변환해 줍니다. 마치 과거에 모든 사람의 이름과 전화번호가 적혀진 전화번호부와 같습니다. 만약 과거에 전화번호 외우듯 숫자로 된 IP를 외워야 웹사이트를 들어갈 수 있다면 머리 아프겠죠? 위에 언급했던 것처럼 DNS는 도메인 이름과 IP 주소를 서로 변환하는 역할을 합니다. IP Address를 얻기 위해 DNSDomain Name을 담은 요청을 보내고 결론적으로 그에 맞는 IP를 얻어서 해당 IP Address에 해당하는 서버로 요청을 보낼 수 있게 되는겁니다.

그럼 도메인 이름에 맞는 IP Address를 얻는 과정을 좀 더 자세히 알아볼까요?

Domain Name에서 IP Address를 얻기까지

DNS Request은 처음에는 Recursive Name Server라는 곳으로 갑니다. Recursive Name Server는 보통 인터넷 공급자(ISP resolver)에 의해 작동하지만, 우리의 ISP resolver에 문제가 있다면, 구글이나 다른 곳에서 만든 Public server들을 이용할 수도 있습니다.

Recursive Name Server는 아마 당신이 가려하는 웹사이트의 IP Address를 이미 가지고 있을 것입니다. 하지만 만일 가지고 있지 않다면, .com이나 .org 같은top-level 도메인들을 위한 요청들을 관장하는 13개의 Root Server 중 하나로 가게 됩니다. 13개의 서버가 작다고 생각할 수 있지만, 이러한 요청들을 빠르게 처리하기 위해 전 세계에 있는 수 많은 하드웨어를 이용합니다.

이제 우리의 요청이 .com같은 적합한 top-level 도메인 서버에 보내졌다면, IP Address와 그에 해당하는 URL들을 포함한 Authoritative 리스트를 가진 Authoritative Name Server와 연결합니다. Authoritative List는 누군가 도메인을 사거나 등록할 때 업데이트 됩니다.

우리가 원하는 IP 주소를 얻으면 다시 Recursive Name Server로 보내고 최종적으로 우리의 컴퓨터로 IP Address를 보내게 됩니다.

시간을 낭비하지 않기 위해 Recursive Name Server와 우리의 컴퓨터는 DNS 항목을 잠시 캐시(cache) 형태로 저장해서, 나중에 또 같은 도메인에 들어가고자 할 때 위의 기나 긴 과정을 다시 반복하지 않게 합니다.

DNS는 대부분의 사람들에게 잘 작동합니다. 그런데 만약 해당 웹사이트가 IP 주소를 바꿨다면 문제가 생길 수 있습니다. 컴퓨터가 자신이 가진 캐시(cache)만을 사용하려고 한다면 무수한 임의의 404 에러의 요청이 따를 것입니다. 컴퓨터의 DNS 캐시를 지우는 건 매우 쉽습니다.

> ipconfig/flushdns

이렇게 함으로써 문제를 해결할 수도 있겠죠, 하지만 멀 웨어(malware, 악성코드)가 지역적으로 저장된 DNS 항목(entries)을 악의 있는(malicious) 웹 사이트로 보내게 만드는 방식으로 당신의 DNS 캐시를 오염시킨다면 더 심각한 문제에 직면할 수 있습니다. 예를 들어 악의 있는 누군가가 우리의 컴퓨터에 내가 자주가는 사이트를 들어갔을 때, 그 사이트의 IP 주소 대신, 악의 있는 웹사이트의 IP 주소를 보내 당신의 개인 정보를 훔칠 수도 있습니다. 만약 이런 식으로 내가 의도한 웹사이트가 아닌 이상한 웹사이트로 리다이렉트된다면, anti-malware 애플리케이션이 도움을 줄 것입니다. 이러한 취약점에도 불구하고 DNS는 인터넷을 아주 쉽게 사용할 수 있게 만들었습니다. 위에 말씀드렸던 것처럼 유튜브에 들어가기 위해 숫자로 된 IP 주소를 치지 않아도 되기 때문이죠.

참고

Written with StackEdit.

반응형

'Network' 카테고리의 다른 글

[네트워크] OSI 7 Layer와 TCP/IP  (0) 2019.05.28
[네트워크] 🤷‍♂️ HTTPS가 뭐길래?  (0) 2019.02.16