각각의 Host를 하나하나 관리하는 것은 어렵기 때문에 Network ID를 부여하고 그 그룹 안에서 개인을 구별하는 Host ID를 지정합니다. 비유하자면 네트워크 ID는 아파트 동, 호스트 ID는 아파트 동의 호수와 같습니다.
가장 첫번째 호스트 주소는 네트워크 자체를 지칭하며, 마지막 주소는 브로드캐스트용 주소로 쓰입니다. 예를 들어 192.168.10.1은 네트워크 주소로 보통 공유기(라우터)가 가져가게 됩니다. 따라서 사용자들은 192.168.10.2부터 할당받습니다. 한편 192.168.10.255는 브로드캐스트 주소입니다. 브로드캐스트 주소란 특정 네트워크 주소에 속한 모든 호스트에게 패킷을 전달해야 할 때 사용하는 주소입니다.
네트워크 주소는 호스트 ID가 모두 0인 주소이며 네트워크 자체를 나타내는 주소입니다. 브로드캐스트 주소는 호스트 ID가 모두 1인 주소입니다. 네트워크 주소는 항상 짝수이며 브로드 캐스트 주소는 항상 홀수입니다.
호스트 ID의 개수와 네트워크 ID의 개수는 반비례합니다.
다음에 나올 IP 클래스는 네트워크 ID와 호스트 ID의 범위에 따라 구분된다고도 할 수 있습니다.
class | 네트워크 ID 비트 수 | 서브넷마스크 | 할당가능한 네트워크 수 | 최대 호스트 수 |
---|---|---|---|---|
A | 8 | 255.0.0.0 | 128 | 16,777,214 (2^24 - 2) |
B | 16 | 255.255.0.0 | 16,384 | 65,534 (2^16 - 2) |
C | 24 | 255.255.255.0 | 2,097,152 | 254 (2^8 - 2) |
Classless Inter-Domain Routing
클래스 없는 도메인간 라우팅 기법으로 클래스가 없이도 IP 주소를 할당할 수 있는 새로운 방식입니다.
만약 B 클래스에 IP를 할당했는데 10,000개만 사용한다면 나머지 오만 여개는 낭비나 다름없습니다. 이러한 문제를 해결하기 위해 IP를 사용하는 네트워크 장치 수에 따라 효율적으로 사용할 수 있는 CIDR 개념이 등장하게 되었습니다.
Network Address + Host Address인 IP 주소를 더 잘게 쪼개 IP주소를 아끼고 관리하기 위한 방법입니다.
예를 들어 호스트를 50개만 사용하는 기업이 192.168.10.0/24 IP 주소를 사용한다면 256을 절반으로 나누고(128) 또 절반으로 나눈(64) 주소를 해당 기업에 할당합니다. 그 후 남은 주소는 다른 기업에게 할당하는 것이 서브네팅의 기본 원리입니다.
이러한 서브네팅은 서브넷 마스크를 통해 계산되어 수행합니다.
네트워크 ID와 호스트 ID의 경계선은 고정되어 있는 것이 아니라 유동적입니다. 이러한 경계는 서브넷 마스크에 의해서 결정된다. 유동적인 이유는 IP주소를 효율적으로 사용하기 위해서입니다.
따라서 서브넷 마스크는 네트워크 영역을 다르게하여 구분하여 한 네트워크당 호스트수를 효율적으로 관리할 수 있는 방법으로 IP 주소에서 네트워크 ID와 호스트 ID를 구분하기 위한 목적으로 만들어 졌습니다.
서브넷 마스크는 IP 주소와 똑같은 32비트 2진수로 표현됩니다. 예를 들어 255.255.255.0으로 IP와 차이점은 연속된 1과 0으로 구성되어 있습니다. 10011111.11011111.11110011.00000000 같은 값이 불가능하며 11111111.11111111.11111100.00000000 처럼 연속된 값만 사용할 수 있습니다.
네트워크 ID를 1, 호스트 ID를 0이라고 생각합니다.
서브넷 마스크를 간소화해서 표현하는 것으로 비트를 이용한 방법입니다. IP 주소가 192.168.0.1/24 라면 뒤에 /24가 서브넷 마스크를 표현한 것입니다.
/24 라는 뜻은 32비트 중 앞에서부터 차례대로 1의 개수가 24개라는 의미로 나머지 32-24=16은 0으로 채워주면 서브넷 마스크 숫자가 됩니다. 네트워크에 해당하는 비트의 수로 표시하는 방식입니다. 네트워크 ID의 개수를 표기합니다.
/24 → 11111111.11111111.11111111.00000000
이 방법을 이용하면 IP 주소를 입력할 때 192.168.1.17 255.255.255.0 를 192.168.1.17/24로 간략히 줄일 수 있습니다. 서브넷 정보를 알려주기 위해 기존에 4B가 필요했지만 6bit만 있으면 해당 정보를 전달할 수 있어 네트워크 리소스를 절약할 수 있습니다.
만약 서브네팅을 추가로 해야 한다면 /24에서 /25로 증가시키고 슈퍼네팅을 해야한다면 /23으로 감소시킵니다.
32bit - 22 = 10 -> 8이상인 경우 8보다 작아질때까지 뺌(10 - 8 = 2, 한 번)
2^2 = 4 -> 최대 4개의 IP를 가질 수 있다
와일드카드 값인 4는 옥텟 1개가 가질 수 있는 최대 범위 0~255를 64개로 분할한 것을 의미한다
(0~3, 4~7, 8~11, 12~15.....200~203, 204~207.....252~255 의 범위를 가진다)
-> 256 / 4 = 64
8을 1회 뺐다면 옥텟3의 값인 207을 확인한다. (0회일 경우=옥텟4, 1회 일 경우=옥텟3, 2회일 경우=옥텟2, 3회일 경우=옥텟1을 보면됨)
해당 예시는 1회일 경우인 옥텟3에 해당하고 옥텟3인 207이 256에 더 가까워 204-207 범위에 포함된다.
192.168.204.0 ~ 192.168.207.255
-> 2^(32-prefix IP) 사용 가능
참고 자료
https://dany-it.tistory.com/56
https://www.wisewiredbooks.com/csbooks/ch3-network-internet/ip.html
https://youtu.be/-iMFsDdfoeI
https://hwannny.tistory.com/86
https://daengsik.tistory.com/7
https://inpa.tistory.com/entry/WEB-IP-클래스-서브넷-마스크-서브넷팅-총정리
https://brunch.co.kr/@swimjiy/43