인터넷, IP 주소, DNS
안녕하세요. 저는 Paola이고 Microsoft의 소프트웨어 엔지니어예요. 인터넷이 어떻게 작동하는지 함께 이야기해봐요.
제 일은 서로 이야기할 수 있는 네트워크에 의존하지만
1970년대에는 이를 위한 표준방식이 없었습니다.
Vint Cerf와 Bob Kahn은 인터네트워킹 프로토콜을 발명하여
커뮤니케이션을 가능하게 만들었습니다. 이 발명은 우리가 지금 인터넷이라 부르는 것의
기초가 되었습니다. 인터넷은 망들의 망이며 전 세계 수 십 억개의 기기를
모두 연결합니다. 그래서, 와이파이를 통해 랩톱 또는 전화기로 연결되고,
그 와이파이 연결은 인터넷 사업자 (또는 ISP)와 연결되며, 그 ISP는 여러분을
모두 서로 연결된 수십 만개의 네트워크를 통해
전 세계 수십 억대의 기기에 연결합니다. 대부분의 사람들이 인식하지 못하는 한 가지는
인터넷은 정말로 프로토콜 집합으로 표현되는 디자인 철학이자 아키텍처라는 점입니다.
프로토콜은 잘 알려진 규칙과 표준의 집합이고
만약 모든 당사자들이 사용하기로 동의하면 문제없이 소통할 수 있게 됩니다.
인터넷이 실제로 어떻게 작동하는지는 덜 중요합니다. 이 디자인 철학이
새로운 커뮤니케이션 기술을 채택하고 흡수하게 허용했다는 사실이 더 중요합니다.
이것은 새로운 기술이 프로토콜만 알면 인터넷을 사용할 수 있기 때문입니다.
인터넷 상의 여러 기기 모두는 각자의 고유 주소를 갖습니다.
인터넷 상의 주소는 전화번호 또는 거리 주소와 마찬가지로, 그냥 번호이고,
각 컴퓨터 또는 네트워크의 말단에 있는 기기마다 고유합니다. 이것은
대부분의 집과 회사가 우편주소를 갖는 방식과 유사합니다. 우편으로 편지를 받았을 때
누가 그 편지를 보냈는지는 알 필요가 없지만, 그들의 주소는 알아야 하고,
그 편지가 우편체계를 통해 목적지로 잘 전달되게 그 주소가 제대로 잘 적는 방법을 알아야 합니다.
인터넷 상의 컴퓨터 주소체계 역시 이와 유사하고, 이는 인터넷 통신에서 사용되는 가장 중요한 프로토콜 중
하나의 일부를 형성합니다. 이것을 인터넷 프로토콜 또는 IP라 부르죠.
컴퓨터 주소는 IP 주소라고 부릅니다. 웹사이트 방문은
여러분의 컴퓨터가 다른 컴퓨터에게 정보를 요청하는 것과 같습니다. 여러분의 컴퓨터는 메시지를
다른 컴퓨터의 IP 주소로 보내고 또한 자기의 주소도 함께 보내,
다른 컴퓨터가 답장을 보낼 곳을 알게 합니다. 여러분은 IP 주소를 본 적이 있을 거예요.
그냥 여러 개의 숫자입니다. 이러한 숫자는 위계체계로 구성되어 있어요. 집주소가
국가, 도시, 거리, 집 번호로 구성된 것과 마찬가지로 IP 주소도 여러 부분으로 되어 있어요.
모든 디지털 데이터와 마찬가지로, 이러한 숫자 각각은 비트로 나타냅니다. 전통적인 IP 주소는 32비트
길이이고 주소의 각 부분은 8비트로 되어 있어요. 앞쪽의 숫자들은 일반적으로 기기의 국가와
지역 네트워크를 나타내요. 그 다음 서브네트워크가 나오고 마지막으로는 특정 기기의
주소가 나옵니다. 이 버전의 IP 주소는 IPv4라고 부르고. 이것은
1973년에 설계되어 80년대 초에 널리 채택되었으며, 인터넷에 연결된 기기에 대해 40억개
이상의 고유 주소를 제공합니다. 하지만 인터넷은
Vint Cerf가 상상했던 것보다 훨씬 더 큰 인기를 누리고 있으며 40억개의 고유 주소로는
충분하지 않게 되었습니다. 지금은 IPv6라고 불리는 더 긴 IP 주소 형식으로 전환하는 중이며,
이 더 긴 주소 형식은 주소 당 128 비트를 사용하고 340 언데실리언 이상의
고유 번호를 제공합니다. 이것은 지구 상의 모래알 하나 하나마다 IP 고유 주소를 부여하더라도
충분한 숫자입니다. 대부분의 사용자는 인터넷 주소를 본적도 없고 관심도 없습니다.
도메인 이름 체계 또는 DNS라 부르는 시스템은 www.example.com과 같은 이름을 해당 주소에
연결시킵니다. 여러분의 컴퓨터는 DNS를 사용하여 도메인 이름을 찾고 여러분의 컴퓨터를
인터넷의 목적지로 연결하는데 사용한 관련 IP 주소를 얻습니다.
그건 이렇게 된단 말이야: (목소리 1) "안녕하세요. 저는 www.code.org로 가고 싶어요"
(목소리 2) "음, 네 저는 그 도메인의 IP 주소를 몰라요. 주위에 물어 볼께요.
안녕, code.org로 어떻게 가야하는 지 알아요?" (목소리 3) "네, 알아요. 174.129.14.120이예요."
(목소리 2) "오 오케이, 좋아요, 감사합니다. 저는 그 번호를 적어놓고 나중에 다시 필요한 경우에
대비해 저장해 놓을 거예요. 안녕하세요. 여기 찾고 계셨던 주소예요." (목소리 1) "훌륭해요! 감사합니다."
그래서 우리는 수십 억개의 기기를 위한 시스템을 어떻게 설계하여 수십 억개의 웹사이트 중 어느 하나를
찾아낼까요? 한 개의 DNS 서버로는 모든 기기에서 나오는 요청을 모두 처리할 수 없어요.
답은 DNS 서버를 분산된 위계체계로 연결하고 구역 별로 나누고,
.org, .com, .net 등과 같은 메이저 도메인에 책임을 나누는 것입니다.
DNS는 원래 정부와 교육기관을 위한 개방형, 공공 커뮤니테이션 프로토콜로
만들어졌습니다. 그 개방성으로 인해, DNS는 사이버 공격에 취약합니다.
DNS 스푸핑이 공격의 예입니다. 그것은 해커가 DNS 서버로 들어와 그것을 변경하여
도메인 이름을 틀린 IP 주소에 매칭시키는 것입니다. 이렇게 하여 해커는 사람들을
가짜 웹사이트로 가게 합니다. 이런 일이 일어나면, 여러분은 그 가짜 웹사이트를
진짜인줄 알고 사용하기 때문에 더 많은 문제에 노출될 수 있습니다.
인터넷은 엄청나게 크고 매일 더 커지고 있습니다. 하지만 도메인 이름체계와 인터넷 프로토콜은
인터넷이 어느 만큼 성장하는지 상관 없이 확장성 있게 설계됩니다.