IP 주소의 구조와 네트워크 부분/호스트 부분으로 구분하기
이전 IP 포스팅에서 우리는 IP가 무엇인지, 그리고 고갈 문제를 해결하기 위한 방법은 무엇인지 간단하게 알아봤습니다.
하지만 IP는 네트워크 분야에 있어 중요한 개념인 만큼 훨씬 더 방대한 내용을 담고 있는데요. 그래서 이번 시간에는 좀 더 깊이 들어가, 우리가 익히 보던 IP 주소가 어떤 구조로 되어 있는지 하나씩 쪼개가며 알아볼 예정입니다.
개념이 점차 어려워지는 만큼 예제를 많이 넣었으니 차근차근 따라와 주세요!
우리가 익히 보던 IP 주소는 IP의 네 번째 주소 체계인 IPv4이며, 아래와 같이 긴 숫자 사이에 점(.)이 들어간 형태를 띠고 있습니다. 뭔가 익숙하죠?
IPv4 주소는 점을 기준으로 4 부분으로 나눌 수 있고, 각 자리는 0부터 255까지의 숫자로 구성되어 있습니다. 그런데 보통 이렇게 10진수로 표현한 모습을 많이 보는데 사실 원래 IP 주소는 1과 0으로 이루어진 2진수입니다. 다만 2진수로는 웹사이트 주소를 찾기 불편하므로 사용자에게 편한 10진수로 바뀌게 된 거죠. 앞의 IP 주소를 2진수로 표현하면 아래와 같습니다.
2진수의 자릿수를 세어보면 32개죠? 컴퓨터에서는 이진법의 한 자릿수를 비트(bit)라고 부르는데, IPv4의 경우 비트의 개수가 총 32개이므로 보통 IPv4 주소는 32비트 길이를 가진다고 이야기합니다. 그리고 점을 기준으로 비트가 8개씩 나뉘어 있는 게 보이시나요? 이렇게 8비트씩 묶은 것을 옥텟(octet)이라고 부르는데, 이 개념을 활용하면 IPv4 주소는 4개의 옥텟으로 구성되어 있고 각 옥텟은 점으로 구분한다고 얘기할 수 있습니다.
마지막으로 각 옥텟은 00000000부터 11111111까지 표현할 수 있는데 이를 10진수로 변환하면 0부터 255입니다. 그래서 앞서 IPv4의 각 자리는 0부터 255까지의 숫자로 이루어져 있다고 설명한 거랍니다. 만약 IP 주소인데 어떤 자리의 값이 256이라면 그건 유효하지 않은 IP 주소겠죠?
IP 주소는 보기엔 하나의 문자 덩어리로 볼 수 있지만 사실은 크게 둘로 나눌 수 있는데, 바로 네트워크 부분과 호스트 부분입니다. 그럼 우선 네트워크와 호스트는 무엇일까요?
보통 인터넷에서 데이터를 받을 때 요청한 컴퓨터로 직접 데이터가 들어오지 않고 먼저 해당 컴퓨터가 연결된 공유기에 전달됩니다. 그럼 공유기는 자신에게 연결된 컴퓨터 중에서 데이터를 요청한 컴퓨터가 있는지 확인하고, 있다면 그 컴퓨터에 다시 데이터를 전달하는 거죠. 네트워크라는 단어엔 다양한 정의가 있지만 이번 포스팅에서 다룰 네트워크는 앞서 데이터를 통신하는 과정에서 같은 공유기를 사용하는 범위를 말하며, 이 네트워크에 연결된 각각의 장치들을 호스트라고 부릅니다.
한 번 빌라를 예시로 들어보겠습니다. 일반적으로 빌라 안에는 여러 가구가 함께 살고 있죠. 이때 빌라 전체를 네트워크, 그 안에 사는 가구들을 호스트라고 볼 수 있습니다.
그리고 만약 빌라 주소가 ‘서울시 네트동 워크빌라’라면 빌라 안에 있는 사람들은 전부 같은 기본 주소를 공유하고 있겠죠. 하지만 택배를 받아야 하는 등 내 정확한 위치를 알려야 할 때 ‘워크빌라’까지만 주소를 적으면 그중 어떤 사람인지 알 수 없으므로 그 뒤에 ‘102호’, ‘302호’처럼 상세 주소까지 작성해야 합니다.
IP 주소 또한 이와 유사합니다. 데이터가 들어올 때 가장 먼저 해당 컴퓨터가 속한 네트워크에 진입해야 하므로 이를 찾기 위한 구분자로 IP 주소의 맨 앞에 네트워크 부분을 표기하고, 그 안에서 다시 특정 호스트를 찾기 위한 구분자로 네트워크 부분의 뒤에 호스트 부분을 작성해 놓은 거죠.
아래 그림에 있는 택배 주소를 본다면 ‘워크빌라’까지의 기본 주소가 네트워크 부분, ‘102호’ 같은 상세 주소가 호스트 부분이 되겠죠? 이 네트워크 부분과 호스트 부분이 함께 IP 주소에 작성되어 있으므로 우리는 데이터를 적절한 호스트로 전달할 수 있습니다.
만약 192.168.123.132라는 IP 주소가 있고 192.168.123까지가 네트워크 부분이라면, 이를 제외한 나머지 .132는 호스트 부분으로 볼 수 있습니다. 그리고 앞서 각 옥텟은 0부터 255까지 값을 쓸 수 있다고 했죠? 그럼 192.168.123이라는 네트워크 빌라 안에는 0호부터 255호까지 공간이 있고, 192.168.123.132는 그중 132호를 지칭하는 IP 주소로 볼 수 있습니다.
이때 주의할 점은 하나의 네트워크에서 사용할 수 있는 IP 주소 중에서 맨 첫 번째와 맨 마지막 주소는 호스트 주소로 사용할 수 없다는 점입니다. 192.168.123 네트워크가 있다면 이중 첫 번째 IP 주소인 192.168.123.0과 마지막 주소인 192.168.123.255는 사용할 수 없는 거죠. 그 이유는 사회적으로 첫 번째는 네트워크 그 자체의 주소, 마지막은 이름도 생소한 브로드캐스트를 위한 주소이기 때문입니다.
첫 번째의 경우 생각해보면 간단하게 이해할 수 있습니다. 앞의 예시에서 네트워크 부분을 192.168.123이라고 했죠? 근데 IPv4 주소는 4개의 옥텟으로 되어 있다는 규칙이 있으므로 네트워크 ‘주소’를 작성하기 위해선 호스트 부분을 제거함으로써 비어있게 된 부분을 0으로 채우게 됩니다. 그럼 자연스레 192.168.123.0이라는 주소는 192.168.123의 네트워크 그 자체의 주소이며, 따로 호스트 주소로 쓸 수 없는 거죠.
그럼 브로드캐스트 주소는 무엇일까요? 한 줄로 설명하자면 특정 네트워크 주소에 속한 모든 호스트에게 패킷을 전달해야 할 때 사용하는 주소입니다. 아파트를 보면 각 집에 스피커가 하나씩 달려 있고, 가끔 관리사무소 등에서 그 스피커를 통해 공지사항을 전달하는 경우가 있죠? 이렇게 아파트 전체에 같은 내용을 전달하는 것처럼 브로드캐스트 주소로 전달된 내용은 같은 네트워크 안에 있는 모든 호스트에게 똑같이 전송됩니다.
브로드캐스트는 IP 통신에 있어 중요한 역할을 하므로 네트워크 내에서 맨 마지막 IP 주소는 브로드캐스트 주소로 사용하기로 약속되어 있습니다. 그럼 192.168.123이라는 네트워크 부분에서는 192.168.123.255가 브로드캐스트 주소가 되겠죠.
이러한 이유로 192.168.123이라는 네트워크에서 사용할 수 있는 IP 주소는 192.168.123.1부터 192.168.123.254까지로 볼 수 있습니다.
참고로 예시에서는 4번째 옥텟을 호스트 부분인 것처럼 설명했는데 사실 IP 주소에서는 네트워크 부분과 호스트 부분을 구분하는 경계점이 고정되어 있지 않습니다. 이 말은 즉 192.168.123.132이라는 IP 주소에서 192까지만 네트워크 부분일 수 있고 아니면 192.168까지가 네트워크 부분일 수도 있는 거죠.
그럼 어떻게 IP 주소를 보고 네트워크 부분을 파악할 수 있을까요? 이 내용은 다음 포스팅에서 알아보도록 하겠습니다.