본문 바로가기
ITinIT

[TCP/IP 기본 개념 잡기] IP주소 효율적으로 사용하기

by itinit 2023. 7. 7.

 

이 블로그의 [TCP/IP 기본 개념 잡기] 시리즈

  1...... [TCP/IP 기본 개념 잡기] OSI 모델/TCP IP 모델

  2..... [TCP/IP 기본 개념 잡기] OSI 7 layer 상세

  3..... [TCP/IP 기본 개념 잡기] TCP/IP 주소 종류

  4..... [TCP/IP 기본 개념 잡기] IP 주소의 구조(IP version 4)

  5..... [TCP/IP 기본 개념 잡기] IP주소 표기

  6..... [TCP/IP 기본 개념 잡기] IP주소 효율적으로 사용하기

 

[TCP/IP 기본 개념 잡기] IP주소 효율적으로 사용하기

TCP/IP에 대한 기본개념을 잡기 위한 기획입니다. TCP/IP는 인터넷, 클라우드, 사내망, 사설망 등의 통신을 이해하는데 필수적인 요소입니다. 통신을 이해하기 위한 모델(여기서는 기능별(Layer)로 여러 조각으로 나누는 것으로 이해)이나, 이 자체를 이해하는데도 어려움이 있는 것이 사실입니다. 짧고 간결하게하여 이해하기 쉽도록 하였습니다. 조금 딱딱한 얘기 일 수 있어 TIP 부분으로 보완해봤습니다. 

 

... 목 차 ...

     

    클래스 없는 기반 주소 지정(Classless Addressing)

    IP 주소의 낭비가 심한 클래스 주소 지정 방식(Classful Addresssing)을 대체하기 위해 나온 방법이며, 현재 인터넷 주소의 기본 체계입니다. 오히려 클래스 주소 지정 방식이 무엇인지 궁금할 수도 있을 것 같습니다. 

    우선, 클래스가 없는 기반 주소 지정을 이해하기 위해서는 마스크의 개념을 알 필요가 있습니다. 해당 개념이 생소하다면 "[TCP/IP 기본 개념 잡기] IP주소 표기"를 먼저 읽는 것을 추천합니다.

     

    클래스 없는 기반 주소를 사용하기 위해서는 서브넷팅과 슈퍼넷팅의 개념이 적용됩니다. 

     

    서브넷팅(Subnetting)

    • 할당받은 network 주소를 효율적으로 관리/사용하기 위해서 netid의 수를 늘리고 netid당 hostid의 수를 줄이는 것을 의미
    • hostid가 사용하는 비트를 netid가 사용하도록 hostid의 맨 왼쪽부터 netid로 바꾸는 것

    서브넷팅 예시

    예로 192.168.60.0/24(192.168.60.0 255.255.255.0) 네트워크 주소를 2개의 네트워크 주소로 나누는(서브넷팅) 경우를 비교해 보겠습니다.

    • 서브넷팅 전: netid가 1개(192.168.60)이며 hostid는 ". 0~. 255"까지 256개임
      • 192.168.60.0/24 ~ 192.168.60.255/24
    • 서브넷팅 후: netid가 2개(192.168.60.0, 192.168.60.128)이며 hostid는 ". 0~127", ". 128~255"로 각 128개임
      • 192.168.60.0/25 ~ 192.168.60.127/25
      • 192.168.60.128/25 ~ 192.168.60.255/25
    • 서브넷팅 후 달라진 점
      • 네트워크 대역은 2개로 늘어남.
      • 서브넷팅 후 나뉘어진 네트워크는 서로 다른 네트워크 임.
      • 서브넷팅 전 한 네트워크 대역에서 할당가능한 IP주소 개수는 256개이며 이는 총 개수임
      • 서브넷팅 후 각 네트워크 대역에서 할당가능한 IP주소 개수는 128개이며 두 네트워크로 분할되었기에 전체 256개는 변함없음

     

    서브넷팅 방법

    • network주소의 hostid의 맨 왼쪽(netid와 경계가 되는 비트)의 첫 번째 비트를 netid로 사용 전환
      • TIP: 서브넷팅이므로 netid가 더 많은 비트를 가져온다/사용한다라고 생각하면 됩니다.
    • 192.168.60.0/24 부분에서 마지막 옥텟 "0"을 이진수로 나타낸 0000 0000 중 맨 왼쪽 비트를 netid로 전환
    • 비트 하나당 표현 가능한 경우의 수는 0과 1, netid가 0일 경우와 netid가 1일 경우 2가지가 있음
      • 192.168.60.0의 ".192.168.60.0"의 ".0 (2진수 0000 0000)" 부분의 맨 왼쪽 비트가 0인 경우 (0000 0000)
        • 192.168.60.0/25
      • 192.168.60.0의 ". 192.168.60.0"의 ".0 (2진수 0000 0000)" 부분의  왼쪽 비트가 1인 경우 (1000 0000)
        • 192.168.60.128/25
    • hostid는 8비트를 사용하다가 7비트 만을 사용
      • TIP: 서브넷팅이므로 netid가 더 많은 비트를 가져온다/사용하기 때문에 hostid는 1자리를 덜 사용한다라고 생각하면 됩니다.
    • hostid는 7자리 모두가 0인 경우( _000 0000)에서 모두 1인 경우( _111 1111)로 총 128개가 있음
      • 네트워크 주소와 직접 브로드캐스트 주소 2개는 할당하여 사용할 수 없으므로 실제 호스트에 할당 가능한 IP의 수는 126개
      • ( _000 0001) ~ ( _111 1110)
        • 0000 0001 ~ 0111 1110 >> 1 ~ 126
        • 1000 0001 ~ 1111 1110 >> 129 ~ 254
      • 192.168.60.0/25에 대해
        • 네트워크 주소: 192.168.60.0/25
        • 직접 브로드캐스트 주소: 192.168.60.127/25
        • 할당 가능한 IP 주소: 192.168.60.1/25~192.168.60.126/25
      • 192.168.60.128/25에 대해
        • 네트워크 주소: 192.168.60.128/25
        • 직접 브로드캐스트 주소: 192.168.60.255/25
        • 할당 가능한 IP 주소: 192.168.60.129/25~192.168.60.254/25

     

    서브넷팅 결과 정리

    • 192.168.60.0/24(netid 부분 8+8+8)를 2개의 네트워크로 서브넷팅하면
      • 192.168.60.0/25, 192.168.60.128/25
      • netid 부분은 "8+8+8+1"로 25비트
    • 192.168.60.0/24(netid 부분 8+8+8)를 2개의 네트워크로 서브넷팅하면 hostid는
      • 192.168.60.0~192.168.60.127
      • 192.168.60.128~192.168.60.255
      • 실제 할당 가능한 IP주소는
        • 192.168.60.1 ~ 192.168.60.126
        • 192.168.60.129~192.168.60.254
      • hostid 부분은 7비트
    • 서브넷 마스크
      • 255.255.255.128 (1111 1111.1111 1111.1111 1111.1000 0000, 10000000 => 128)
      • /25 
    • 네트워크 주소(hostid가 모두 0)
      • 192.168.60.0/25
      • 192.168.60.128/25

     

    서브넷팅 규칙 

    Class C 네트워크 기준으로 hostid가 있는 옥텟의 왼쪽에서부터 비트를 hostid에서 netid로 변환하면, 전체 IP개수는 아래와 같습니다.

    • 1개 비트 변환 시(/25)
      • _000 0000 ~ _111 1111, 2의 7승(128)개
      • 네트워크는 2개
      • 각 네트워크 별 할당가능한 IP는 126(128-2)
    • 2개 비트 변환 시(/26)
      • __00 0000 ~ __11 1111, 2의 6승(64)개
      • 네트워크는 4개
      • 각 네트워크 별 할당 가능한 IP는 14(16-2)
    • 3개 비트 변환 시(/27)
      • ___0 0000 ~ ___1 1111, 2의 5승(32)개
      • 네트워크는 8개
      • 각 네트워크 별  할당 가능한 IP는 30(32-2)
    • 4개 비트 변환 시(/28)
      • ____ 0000 ~ ____ 1111, 2의 4승(16)개
      • 네트워크는 16개
      • 각 네트워크 별 할당 가능한 IP는 14(16-2)
    • 5개 비트 변환 시(/29)
      • ____ _000 ~ ____ _111, 2의 3승(8)개
      • 네트워크는 32개
      • 각 네트워크 별 할당 가능한 IP는 6(8-2)
    • 6개 비트 변환 시(/30)
      • ____ __00 ~ ____ __11, 2의 2승(4)개
      • 네트워크는 64개
      • 각 네트워크 별 할당 가능한 IP는 2(4-2)
    • 7개 비트 변환 시(/31)
      • ____ ___0 ~ ____ ___1, 2의 1승(2)개
      • 네트워크는 128개
      • 각 네트워크 별 할당 가능한 IP는 0(2-2), 의미 없음
    • 8개는 비트 변환시 (/32)
      • ____ ____ ~ ____ ____, 2의 0승(1)개
      • 네트워크는 256개
      • host route에 사용하는 host 하나를 나타내는 network

     

     

    슈퍼넷팅

    • 서브넷과는 반대로 두 개 이상의 네트워크 주소를 합쳐서 하나로 만드는 것
    • netid가 사용하는 비트를 hostid가 사용하도록 오른쪽부터 host id로 바꾸는 것

    슈퍼넷팅 예시

    첫 번째 예로 192.168.32.0/24와 192.168.33.0/24를 할당받았지만 하나의 네트워크 주소를 사용하여 더 많은 호스트 id가 필요한 경우를 보겠습니다.

    • 192.168.32.0/24의 3번째 옥텟의 마지막 비트를 hostid로 사용하기로 함
    • 32를 2진수로 표기하면 0010 0000
    • netid는 0010 000_이며 hostid는 _부분임
    • hostid는 0.0000 0000으로 되며 netid에서 전환된 부분은 1비트이며, 비트 하나당 표현 가능한 경우의 수는 0과 1
      • 0.0000 0000 ~ 1.1111 1111까지 사용할 수 있음
    • netid와 hostid를 합한 IP주소
      • 3번째 옥텟의 사용 범위: 0010 0000 ~ 0010 0001 
      • 점 10진수 표기법: 192.168.32.0 ~ 192.168.33.255
      • 서브넷 마스크로 표기: 192.168.32.0/23

    두 번째 예로  192.168.64.0/24, 192.168.65.0/24, 192.168.66.0/24 192.168.67.0/24를 할당받았지만 하나의 네트워크 주소를 사용하여 더 많은 호스트 id가 필요한 경우를 보겠습니다.

    • 192.168.64.0/24의 3번째 옥텟의 마지막 2비트를 hostid로 사용하기로 함
    • 64를 2진수로 표기하면 0100 0000
    • netid는 0100 00__ hostid는 __부분임
    • hostid는 00.0000 0000으로 되며 netid에서 전환된 부분은 2비트이며, 비트 두 개로 표현 가능한 경우의 수는 00,01,10,11
      • 00.0000 0000 ~ 11.1111 1111까지 사용할 수 있음
    • netid와 hostid를 합한 IP주소
      • 3번째 옥텟의 사용 범위: 0010 0000 ~ 0010 0011 
      • 점 10진수 표기법: 192.168.64.0 ~ 192.168.67.255
      • 서브넷 마스크로 표기: 192.168.32.0/23

    슈퍼넷팅 규칙 

    Class C 네트워크 기준으로 netid가 있는 옥텟의 오른쪽에서부터 비트를 netid에서 hostid로 변환하면 됩니다. 

    • 1개 비트 변환 시(/23)
      • hostid는 0.0000 0000 ~ 1.1111 1111, 2의 9승(512)개
      • 2개의 연속된 네트워크를 1개로 통합(2의 1승, 2개)
      • 네트워크 별 할당 가능한 IP는 510(512-2)
    • 2개 비트 변환 시(/22)
      • hostid는00.0000 0000 ~ 11.1111 1111, 2의 10승(1024)개
      • 4개의 연속된 네트워크를 1개로 통합(2의 2승, 4개)
      • 네트워크 별 할당 가능한 IP는 1022(1024-2)
    • 3개 비트 변환 시(/21)
      • hostid는 000.0000 0000 ~ 111.1111 1111, 2의 11승(2048)개
      • 8개의 연속된 네트워크를 1개로 통합(2의 3승, 8개)
      • 네트워크 별 할당 가능한 IP는 1046(1048-2)
    • 4개 비트 변환 시(/20)
      • hostid는 0000.0000 0000 ~ 1111.1111 1111, 2의 12승(4096)개
      • 16개의 연속된 네트워크를 1개로 통합(2의 4승, 16개)
      • 네트워크 별 할당 가능한 IP는 4094(4096-2)
    • 5개 비트 변환 시(/19)
      • hostid는 0 0000.0000 0000 ~ 1 1111.1111 1111, 2의 13승(8192)개
      • 32개의 연속된 네트워크를 1개로 통합(2의 5승, 32개)
      • 네트워크 별 할당 가능한 IP는 8190(8192-2)
    • 6개 비트 변환 시(/18)
      • hostid는 00 0000.0000 0000 ~ 11 1111.1111 1111, 2의 14승(16384)개
      • 64개의 연속된 네트워크를 1개로 통합(2의 6승, 64개)
      • 네트워크 별 할당 가능한 IP는 16382(16384-2)
    • 7개 비트 변환 시(/17) 128개
      • hostid는 000 0000.0000 0000 ~ 111 1111.1111 1111, 2의 15승(32768)개
      • 128개의 연속된 네트워크를 1개로 통합(2의 7승, 128개)
      • 네트워크 별 할당 가능한 IP는 32766(32768-2)
    • 8개 비트 변환 시(/16) 256개
      • Class B 네트워크와 동일함

    규칙을 보면 오른쪽 비트부터 netid가 hostid로 변경되므로 반드시 연속되는 네트워크 주소가 필요하다는 것을 알 수 있습니다.

     

    정리

    IP주소는 TCP/IP 환경에서 통신의 기본이므로 개념정도는 이해해 두면 개발, 네트워크, 클라우드 등 IT관련 대부분에서 활용가능합니다. 대부분은 할당받은 네트워크 대역(네트워크 주소)을 세분하여 사용하기 위한 목적으로 서브넷팅을 많이 사용하고, 라우팅의 메모리를 절약하고 속도를 높이기 위해 라우팅 처리를 많이 하는 곳(ISP(SKBB, KT, SKT, U+ 등)이나 DataCenter 등)에서 많이 사용합니다. subnetting 계산기도 있으나, 기본 개념을 이해하면 할당이 되지 않는 IP주소를 할당하여 겪을 수 있는 문제를 피할 수 있기 때문에 꼭, 숙지할 필요가 있습니다.  

     

    참조

    댓글