IP주소는 10진수 네자리, 즉 x.x.x.x 의 형태이다. 이 10진수로 이루어진 IP주소를 8자리의 2진수로 바꾸면 0과1로 이루어진 xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx 형태의 총 32비트 숫자가 되는데, 점(.)을 기준으로 각 8자리씩을 묶어 옥텟(Octet)이라고 부른다.
IP주소는 네트워크ID+호스트ID 로 구성되어 있다. 네트워크ID는 국가, 도시, 부서 등을 나타내는 특정 그룹, 그리고 호스트ID는 그 그룹에 속한 통신장비(PC, 휴대폰 등)라고 생각하면 된다.
IP를 체계적으로 관리하기 위해 클래스라는게 존재하는데, 종류는 아래와 같다.
A클래스: IP주소 32비트 맨 앞이 0으로 시작, 앞쪽부터 8자리가 네트워크ID, 뒤 24자리가 호스트ID, 디폴트 서브넷 마스크: 255.0.0.0
B클래스: IP주소 32비트 맨 앞이 10으로 시작, 앞쪽부터16자리가 네트워크ID, 뒤 16자리가 호스트ID, 디폴트 서브넷 마스크: 255.255.0.0
C클래스: IP주소 32비트 맨 앞이 110으로 시작. 앞쪽부터 24자리가 네트워크ID, 뒤 8자리가 호스트ID, 디폴트 서브넷 마스크: 255.255.255.0
예를들어 C클래스에 해당하는 192.168.10.38은, 192.168.10(네트워크ID) + 38(호스트ID) 형태의 구성이다.
A클래스는 한 네트워크에 2의24제곱 개의 호스트를 할당할 수 있고,
B클래스는 한 네트워크에 2의16제곱 개의 호스트를 할당할 수 있고,
C클래스는 한 네트워크에 2의8제곱 개의 호스트를 할당할 수 있다.
하지만 순수 클래스만으로 IP를 관리하기에는 문제가 있다.
예를 들어 2000대의 PC를 가진 A회사에서 각 PC에 할당할 2000개의 IP를 필요로 하는데, C클래스(256개)는 너무 적고, B클래스(65536개)는 너무 많아 어떤 클래스를 사용해야 할지 곤란할 수 있다.
이같은 상황을 해결하기 위해 서브넷이라는게 존재한다. 서브넷은 말그대로 sub network, 즉 네트워크가 분할된 작은 네트워크이다. 큰 네트워크를 서브넷으로 쪼개는 행위가 서브네팅이고, 쪼개는 범위를 지정하는 수단이 서브넷 마스크이다.
다른 예시로 설명해 보면 B회사에서 필요한 IP가 50개인데 C클래스(256개)를 받으면 IP가 많이 남으므로, 적당량만 받고 싶을 수 있다. 이 경우에 정확히 50개를 줄 수는 없고, 넉넉히 64개를 할당해야 한다. 왜냐하면 서브넷 마스크는 연속된 1과 0으로 구성되어야 하기 때문에 00110010같은 형태는 사용할 수 없다. 그래서 C클래스의 디폴트 서브넷 마스크(255.255.255.0)를 2진수로 바꾼 11111111.11111111.11111111.00000000 중, 호스트 ID인 마지막 옥텟을 11000000으로 수정한다. 그렇게 되면 11111111.11111111.11111111.11000000 에서 앞쪽부터 연속된 26개의 1이 네트워크ID가 되고, 마지막 6자리가 호스트ID가 되어 2의 6제곱, 즉 64개의 호스트를 사용할 수 있게 된다. 이를 다시 10진수로 바꿔주면 255.255.255.192인데, 이것이 바로 서브넷 마스크이다.
그렇다면 B회사에서 특정 PC에 192.168.10.133이라는 IP를 부여했다고 했을때, 이 호스트가 속한 네트워크 대역(같은 그룹)의 IP 범위는 어떻게 알 수 있을까?
우선 서브넷 마스크가 255.255.255.192이므로 앞26자리가 네트워크ID, 끝6자리가 호스트ID라는 사실을 알 수 있다. 192.168.10.133이라는 IP의 마지막 자리인 133를 2진수로 변환하면 10000101이고, 여기서 서브넷 마스크를 통해 알아낸 호스트 부분(000101)을 전부 0으로 바꾸면 10000000이 되고, 이를 다시 10진수로 바꾸면 128이 된다. 반대로 호스트 부분(000101)을 전부 1로 바꾸면 10111111이 되고, 이를 다시 10진수로 바꾸면 191이 된다. 결론적으로 192.168.10.133이라는 IP가 속한 네트워크 대역은 192.168.10.128~192.168.10.191 의 범위를 가진다는 것을 알 수 있다.
그런데 이 64개의 IP를 모두 호스트IP로 할당할 수는 없다.
한 네트워크 대역에서 맨 앞 숫자는 "네트워크 주소"이고, 마지막 숫자는 "브로드캐스트 주소"로 사용되기 때문에 실제 B회사에서 할당할 수 있는 호스트의 범위는 192.168.10.129~192.168.10.190 의 62개 IP이다.
+ 서브네팅의 반대 의미인 슈퍼네팅이 있는데, 네트워크를 쪼개는게 아니라 합치는 방법이다.
예를들어, 필요한 호스트가 400개라면, C클래스 하나만으로 부족하지만 B클래스는 너무 많다. 이때 C클래스 두개를 합치는 방법이 슈퍼네팅이다.
C클래스의 기본 서브넷 마스크가 255.255.255.0, 즉 11111111.11111111.11111111.00000000 이니까 연속된 1의 개수가 24개인데, 이를 23개로 줄이는 것이다. 그러면 11111111.11111111.11111110.00000000, 즉 서브넷 마스크는 255.255.254.0 이 되고 호스트ID가 9자리이므로 2의 9제곱만큼의 호스트를 할당 할 수 있게 된다. 네트워크와 브로드캐스트 주소를 제외하고 510개의 호스트를 사용할 수 있는 것이다.
'Dev > Network, Web' 카테고리의 다른 글
[Network] 도메인? DNS? (0) | 2022.11.10 |
---|---|
[Network] Cookie, Session 쿠키와 세션 (0) | 2022.11.08 |
[Network] WS, WAS 차이 (Apache, Tomcat) (0) | 2022.11.03 |
[Network] OSI 7 layers 네트워크 7계층 (0) | 2022.11.01 |
[Network] CORS 에러 (0) | 2022.10.31 |