IP 주소의 구조
앞 PART에서 MAC 주소를 배웠습니다. MAC 주소가 이웃과 직접 대화하는 지역 주소라면, IP 주소는 지구 반대편까지 편지를 보낼 때 봉투 겉면에 적는 주소입니다. 서울에서 뉴욕까지 패킷이 수십 개의 라우터를 거쳐 도달할 수 있는 것은, 모두 IP 주소 덕분입니다.
점 네 개로 된 숫자의 정체
우리에게 익숙한 IP 주소는 192.168.1.1 처럼 생겼습니다. 점 세 개로 나뉜 숫자 네 묶음. 이것이 IPv4 주소입니다. 각 묶음은 8비트, 즉 0에서 255 사이의 숫자입니다. 네 묶음을 합치면 32비트, 총 약 43억 개의 주소를 표현할 수 있습니다.
그런데 왜 하필 이런 형태일까요. 컴퓨터는 사실 주소를 2진수로 다룹니다. 192.168.1.1을 풀어 쓰면 11000000.10101000.00000001.00000001이 됩니다. 사람이 읽기 불편하니 8비트씩 잘라 10진수로 바꿔 표기하는 것뿐입니다. 이 표기 방식을 점 표기법 또는 닷 노테이션이라 부릅니다.
네트워크 부분과 호스트 부분
IP 주소 32비트는 두 부분으로 나뉩니다. 앞부분은 네트워크 주소, 뒷부분은 호스트 주소입니다. 같은 네트워크에 속한 장치들은 네트워크 부분이 동일하고, 호스트 부분만 다릅니다.
아파트 주소로 생각해보면 이해하기 쉽습니다. '서울시 강남구 테헤란로 123'은 건물 주소이고, '101호'는 호수입니다. IP 주소에서 네트워크 부분은 건물 주소, 호스트 부분은 호수에 해당합니다. 같은 건물 안 사람들끼리는 건물 이름만 알아도 서로 찾아갈 수 있고, 외부에서 올 때는 건물 주소로 먼저 찾아온 뒤 호수를 확인합니다.
어디까지가 네트워크 부분이고 어디서부터 호스트 부분인지를 알려주는 것이 서브넷 마스크입니다. 255.255.255.0처럼 생긴 숫자인데, 1인 비트는 네트워크 부분, 0인 비트는 호스트 부분을 나타냅니다.
특수 IP 주소들
모든 주소가 장치에 할당되는 것은 아닙니다. 네트워크 안에서 예약된 특수 주소들이 있습니다.
네트워크 주소는 호스트 부분이 모두 0인 주소입니다. 192.168.1.0처럼 생겼고, 이 네트워크 자체를 가리킬 때 씁니다. 브로드캐스트 주소는 호스트 부분이 모두 1인 주소입니다. 192.168.1.255처럼 생겼으며, 이 주소로 보낸 패킷은 같은 네트워크의 모든 장치가 받습니다. 이 두 주소를 제외한 나머지가 실제 장치에 할당 가능한 호스트 주소입니다.
127.0.0.1은 루프백 주소로, 자기 자신을 가리킵니다. ping 127.0.0.1을 실행하면 패킷이 실제 네트워크로 나가지 않고 내 컴퓨터 안에서 되돌아옵니다. 네트워크 설정이 제대로 됐는지 확인할 때 자주 씁니다.
다음 절에서는 네트워크 부분과 호스트 부분의 경계를 정하는 방법, 서브넷과 CIDR을 살펴봅니다.