컴퓨터끼리 통신을 하려면 물리적인 케이블 혹은 무선(Bluetooth, WiFi)으로 연결되어야 한다. 이렇게 통신을 위해 연결된 두 대 이상의 컴퓨터들의 집합을 네트워크라고 한다. n대의 컴퓨터를 연결하여 네트워크를 만들려고 할 때 n * (n - 1) / 2 개의 케이블이 필요하다. 즉, n이 커질수록 케이블 수는 기하급수적으로 늘어나는 문제가 발생한다. 이 문제를 해결하기 위해 라우터(Router)라는 개념이 등장한다. 라우터는 특수한 목적을 가진 컴퓨터로 메세지를 받아서 올바른 목적지(컴퓨터)로 보내는 일을 한다. 모든 컴퓨터를 라우터에 연결하면 n이 커져도 n개의 케이블만으로 모든 컴퓨터 간의 통신이 가능하게 된다. 하지만 n이 계속 커질수록 새로운 문제가 발생하게 된다. 하나의 라우터에 모든 ..