개발

IP주소, 서브넷 마스크

플리트우드 2024. 12. 6. 15:08

 

IPv4 주소에는 두 부분이 있다. 

1. 네트워크 ID

  • 인터넷상에서 네트워크를 구분하는 역할
  • 네트워크ID가 같다면 같은 네트워크로 인식한다.

2. 호스트 ID

  • 같은 네트워크에 연결된 기기를 구별하기 위한 역할

 

 

클래스와 서브넷 설정에 따라 네트워크ID, 호스트ID가 쓸 수 있는 비트 수가 정해진다.

먼저 클래스에 대해 알아보자.

 

  • A클래스
    • 첫번째 옥텟이 0~127이다. (0000 0000 ~ 0111 1111)
    • 첫번째 옥텟을 네트워크 ID로 쓴다.
    • 나머지 9~32번째 비트를 호스트 ID로 쓴다.
  • B클래스
    • 첫번째 옥텟이 128~191이다. (1000 0000 ~ 1011 1111)
    • 두번째 옥텟까지 네트워크 ID로 쓴다.
    • 나머지 17~32번째 비트를 호스트ID로 쓴다.
  • C클래스
    • 첫번째 옥텟이 192~223이다. (1100 0000 ~ 1101 1111)
    • 세번째 옥텟까지 네트워크ID로 쓴다.
    • 나머지 25~32번째 비트를 호스트ID로 쓴다.
    • 가정집 공유기가 만들어내는 내부IP(사설IP)는 주로 C클래스이다.

이처럼 클래스에 따라 서브넷마스크가 정해지는 Classful 방식을 쓸 수도 있다. 

그러나 C클래스만 해도 호스트ID로 쓸 수 있는 부분이 과하다.

Classless 방식의 서브네팅은 네트워크ID와 호스트ID를 경계지을 수 있는 더 유연한 방법을 제공한다.

 

서브넷 = 서브 네트워크 = 내부 네트워크 

서브네팅 = 네트워크를 서브넷마스크를 이용하여 쪼개는 것 

 

서브넷 마스크는 IPv4를 구성하는 8*4 = 32비트 중,

네트워크 ID로 차지할 자리를 1로, 호스트ID로 활용할 자리를 0으로 구성한다.

 

서브넷 마스크가 255.255.255.248 이라고 하자.

255.255.255.248은 이진법으로 11111111 11111111 11111111 11111000이다.

마지막 1까지를 네트워크ID로 쓰고, 나머지 0으로 되어있는 부분을 호스트ID로 쓰겠다는 의미다.

만약 퍼블릭 IP의 주소가 222.10.13.50이고, 서브넷 마스크가 255.255.255.248일 때 나올 수 있는 호스트IP는 아래와 같다.

 

퍼블릭IP

222.10.13.50

= 11011110. 00001010. 00001101. 00110010

 

서브넷마스크 

255.255.255.248 

= 11111111. 11111111.  11111111.  11111000

 

퍼블릭IP와 서브넷마스크를 AND연산하면 나오는 네트워크 ID 

= 11011110. 00001010. 00001101. 00110000 

= 222.10.13.48

 

할당가능한 IP 

11011110. 00001010. 00001101. 00110000

~

11011110. 00001010. 00001101. 00110111

= 222.10.13.48 ~ 222.10.13.55

...여기서 끝이 아니라 네트워크 주소랑 브로드캐스트 주소를 고려하여 앞뒤 경우의 수를 하나씩 빼면, 할당가능한 호스트IP는

222.10.13.49 ~ 222.10.13.54 가 된다.

 

서브넷이 255나 0처럼 딱떨어지지 않을 때, 십진수를 이진수로 변경해서 생각하지 않으면 헷갈릴 수 있다. 

 

 

 

***************************************************************************************************************************** 

참고자료 

 

 

 

출처 : https://limkydev.tistory.com/166

 

 

서브네팅 : 네트워크 성능 보장, 자원을 효율적으로 분배하기 위해 네트워크 영역과 호스트 영역을 쪼개는 작업

 

 

서브네팅을 하기 위해선 서브넷마스크라는 녀석이 필요하다고 했습니다. 그럼 서브넷마스크가 뭘까요??? 쉽게 생각해 봅시다. 성형외과에서 코수술을 한다고 했을때, 환자얼굴위에 수술 마스크를 덮습니다. 해당 마스크는 코만 보이고 눈,입,볼 등 코를 제외한 부분은 전부 가려줍니다. 의사가 코에만 집중할 수 있게 말이죠... 이와 비슷한 개념입니다. 어느 한 네트워크에서 1~100까지 IP를 할당받을 수 있고 우리가 필요한 IP가 20개정도라고 가정할 때, 굳이 1~100까지 IP를 줄 필요가 없습니다. 최소 1~20까지만 IP를 주면 되겠죠...그럼 나머지 21~100은 사용자가 신경쓰지 않게 끔, 서브넷마스크로 가려버린다 라고 생각하면 조금 이해하기 쉽습니다.

 

 

3) 서브넷마스크 표시방법

서브넷마스크는 기본적으로 1과 0 으로 구성되어 있습니다. IP는 32자리 2진수로 표현할 수 있다고 했는데, 서브넷마스크 또한, IP와 크기만큼 32자리 2진수로 표현합니다. 당연하겠죠? 굳이 IP보다 클 필요가 없고 작으면 마스크하는 의미가 없습니다. 자! 이야기가 길어졌는데 다시 서브넷마스크는 1과 0으로 이뤄져있고, 1이 연속으로 나와야합니다. 11101 안되구요. 11001 안됩니다. 무조건 1111000 이런식으로 1을 표현하기 위해선 1이 연속으로 나와야 합니다.  IP주소에서 만약 192.168.0.1/24 라고 하면 이는 C클래스이고 기본 디폴트 마스크는 255.255.255.0 입니다. 디폴트 마스크도 서브넷마스크라입니다. 255.255.255.0 은 우리가 알기 쉽게 10진수로 표현했을 뿐 2진수로 바꾸면....

결국 1111 1111.1111 1111.1111 1111.0000 0000 입니다. 여기서 연속으로 1이 24개 있습니다. 눈치 채셨나요? IP 뒤에 /24 라는 표현이 1이 24개가 있다는 뜻입니다. 1은 네트워크 영역으로 사용하겠다는 뜻이고 0은 호스트 IP로 사용하겠다는 뜻입니다. 즉 사용자에게 0이 표현된 부분만 호스트 IP를 할당할 수 있게 만들겠다는 뜻입니다.

192.0.0 ~ 223.255.255 까지의 네트워크가 곧 서브넷 네트워크가 됩니다. 별개의 서브넷마스크를 생성하지 않아도 기본적으로 적용되어 있는게 기본 서브넷마스크이고, 기본서브넷마스크로 쪼개진 네트워크 주소를 서브넷 네트워크 라고 합니다.

서브넷마스크를 통해서 얻을 수 있는 서브넷네트워크 갯수와 각 서브넷네트워크에 할당할 수 있는 호스트 갯수에 대해서 알아보겠습니다. 이부분은 잘 아셔야 합니다. 전산시험에 단골로 출제되거든요 ㅎㅎㅎ....

201.222.5.0 IP를 255.255.255.248 서브넷마스크(기본서브넷마스크가 아닌 사용자가 만든 서브넷마스크)에 씌워볼까요?

 

11001001 11011110 00000101 00000000 = 201.222.5.0 (IP 주소)

11111111 11111111 11111111 11111000 = 255.255.255.248 (서브넷마스크)

11111111 11111111 11111111 (기본 C클래스가 가질 수 있는 네트워크 영역)

11111 (사용자 지정한 네트워크영역)

000 (사용자가 지정한 호스트영역)

 

위와 같이 서브넷마스크를 적용했을 때, 서브넷네크워크는 몇개가 있을까요?

파란색부분이 바로 서브넷네트워크가 가질 수 있는 범위 입니다. 즉 00000 ~ 11111 (2^5) 까지 계속 바꿔 넣으면 32개의 서브넷네트워크로 쪼갤 수 있습니다. 그럼 각 서브넷마스크가 가질 수 있는 호스트 IP 갯수는 몇개일까요? 초록색 부분입니다. 000 ~ 111 (2^3-2) 까지 계쏙 바꿔 넣으면 8개를 가질 수 있습니다. 하지만 네트워크 주소와 브로드캐스트 주소를 써야하기 때문에 -2 를 해줍니다. 이건 지난시간에 배웠습니다. ㅎㅎ 결국 호스트 IP 갯수는 6개 입니다.

서브넷마스크는 하나의 IP에서 사용자의 입맛에 맞게 네트워크 영역과 호스트 영역을 나눠주는 녀석입니다. 기본서브넷네트워크도 물론 네트워크 영역과 호스트 영역을 나눠주기 때문에 서브넷마스크라고도 합니다. 하지만 진정한 의미에 서브넷마스크는 A클래스, B클래스, C클래스의 기본 서브넷마스크에서 가질 수 있는 네트워크영역과 호스트영역을 더 쪼개서 더 효율적으로 서브네팅하는 것입니다. 그렇기 때문에 위에 처럼 C클래스(3옥테드까지만 네트워크로 사용함) 이상으로 4옥테드 영역에 5자리 2진수를 네트워크 영역으로 확대하고! 호스트 영역을 3자리 2진수를 할당함으로써 기본서브넷마스크로 커버할 수 없었던 서브네팅을 구현할 수 있습니다.

 

조금 더 구체적으로 설명을 하겠습니다.

제일 많이 볼 수 있는 서브넷마스크는

255.255.255.0인데 이를 상세히 설명하면

256.256.256.256개의 IP중에서

255.255.255.0으로 마스크로 가려버리면

1.1.1.256개가 남습니다.

즉 1개.1개.1개.256개를 사용하겠다고 정의를 한 것입니다.

만약 IP가 192.168.0.30인 컴퓨터가 있는데 서브넷마스크를 확인해보니 255.255.255.0이라면,

앞의 세자리수는 하나씩 그대로 쓰고 마지막 자리수만 256개를 사용하겟다는 의미입니다.

그러므로 그 네트워크에서 사용하는 ip의 범위는 192.168.0.0~192.168.0,255가 됩니다.

(실지로 사용할 수 있는 ip는 처음과 끝을 뺀 254개를 사용할 수 있습니다)

만약 서브넷마스크가 255.255.255.0이 아닌 255.248.0.0이라면 가용IP 범위(사용할 수 있는 IP의 범위)는 어찌될까요?

256.256.256.256개 중에서 255.255.248.0.0으로 가리면 1개.1개.8개.256개가 되므로

총 할당가능한 IP는 192.168.(0~7).(0~255)가 됩니다.

즉 192.168.0.0~192.168.7.255가 되는데 제일 처음인 192.168.0.0은 네트워크ID로 사용되고,

제일 마지막 192.168.7.255는 브로드캐스팅용으로 사용되므로 처음과 마지막을 제외하면,

192.168.0.1~192.168.7.254까지가 할당해서 사용할 수 있는 가용 IP가 됩니다.

 

또 다른 예로,

500여대의 PC를 사설IP를 사용하는 대역을 만들고 싶을 때 서브넷 마스크를 어떻게 지정을 해야하는지 알아보겠습니다.

(즉 192.168.0.0~192.168.1.255)

255.255.255.0으로 마스크로 가려버리면 1.1.1.256개가 남아서 총 254개의 ip를 사용할 수 있다는 것은 위에서 알았는데

셋째자리수를 두개을 이용해야하므로 1.1.2.256으로 가려야합니다.

그럴려면 반대로 서브넷마스크는 255.255.254.0이 되어야한다는 것을 알 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

출처 :  https://www.itworld.co.kr/howto/191458

 

 

출처 :  https://www.itworld.co.kr/howto/191458

서브넷팅에서는 서브넷 마스크를 사용해 주소의 호스트 부분에서 비트를 훔쳐 네트워크 부분에 추가하는 방법으로 수용할 수 있는 호스트의 수를 조정한다. 서브넷 마스크는 IP 주소와 마찬가지로 32비트 수지만 용도는 호스트 주소 지정이 아니고 네트워크/서브넷 비트 및 호스트 비트에 해당하는 네트워크 주소 부분을 송수신하는 데 있다. 서브넷 마스크는 모든 호스트 비트를 0으로 설정하고 모든 네트워크/서브넷 비트를 1로 설정하는 방법으로 구축한다.

 

이 그림이 제일 이해하기 쉬운 듯

서브넷마스크.. 마음대로 마스킹한다는 것이다. 내가 ip가 10000개를 쓸 수 있는데, 모종의 이유로 이걸 100개씩 효율적으로 분반해서 써야할 수도 있고, 10000개 중 90개만 사용할거라고 모두에게 알리고 싶으면 마스크로 가리는 것 !