IP 주소, CIDR, Subnet, Prefix

suyeon·2023년 1월 15일
1
post-thumbnail

IP

  • OSI 7계층 모델에서 Network(3), TCP/IP 4계층 모델에서 Internet(3)에 위치하는 프로토콜
  • 인터넷 상에서 서로 데이터를 주고받을 때 필요한 규약

IP 주소

  • 모든 컴퓨터들이 논리적으로 갖게 되는 주소이며 호스트에서 호스트까지의 통신을 책임짐
    cf) 물리적인 주소 체계: MAC Address
  • 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소
  • 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호
  • 네트워크 ID + 호스트 ID
    • 네트워크 ID: 모든 호스트를 관리하기 힘들기 때문에 한 네트워크의 범위를 지정한 ID
    • 호스트 ID: 각각의 호스트를 관리하기 위해 사용
  • 192.168.56.51 같이 마침표로 구분된 4개의 숫자가 있는, 점으로 분리된 10진수 형식으로 표시
    -> 2진법(32비트 숫자): 1000000.10101000.01111011.10000100
  • 32bit로 이루어진 주소
    • 2의 32승, 약 43억개의 주소를 가짐
    • 범위: 0.0.0.0 ~ 255.255.255.255
    • 옥텟(octet): 8비트씩 묶은 것, IP 주소는 4개의 옥텟으로 이루어짐

#. 네트워크 ID, 호스트 ID

각각의 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의 범위에 따라 구분된다고도 할 수 있습니다.


#. IP 클래스

class네트워크 ID 비트 수서브넷마스크할당가능한 네트워크 수최대 호스트 수
A8255.0.0.012816,777,214 (2^24 - 2)
B16255.255.0.016,38465,534 (2^16 - 2)
C24255.255.255.02,097,152254 (2^8 - 2)

#. CIDR

Classless Inter-Domain Routing
클래스 없는 도메인간 라우팅 기법으로 클래스가 없이도 IP 주소를 할당할 수 있는 새로운 방식입니다.

만약 B 클래스에 IP를 할당했는데 10,000개만 사용한다면 나머지 오만 여개는 낭비나 다름없습니다. 이러한 문제를 해결하기 위해 IP를 사용하는 네트워크 장치 수에 따라 효율적으로 사용할 수 있는 CIDR 개념이 등장하게 되었습니다.

Network Address + Host Address인 IP 주소를 더 잘게 쪼개 IP주소를 아끼고 관리하기 위한 방법입니다.


#. Subnet

  • 서브넷
  1. 하나의 네트워크가 분할되어 나눠진 작은 네트워크입니다.
  2. 하나의 IP 네트워크 주소를 네트워크 내부에서 적절히 분할하여 다수의 상호 연결된 하부 네트워크로 나누어 사용하는 방법입니다.

  • 서브네팅(cf. 슈퍼네팅: 할당 받은 IP 주소를 합치는 것)
  1. 서브넷을 만들기위해 네트워크를 분할하는 것으로 IP 할당 범위를 더 작은 단위로 쪼갤수 있게 됩니다.
  2. IP주소를 효율적으로 나누어 사용하기 위한 방법으로 네트워크 성능 보장, 자원을 효율적으로 분배하기 위해 네트워크 영역과 호스트 영역을 쪼개는 작업을 합니다.
  3. 자신의 조직에 할당된 네트워크 ID의 IP주소를 사용하여 내부적으로 여러 개의 서브넷을 구성하는 과정 입니다.

예를 들어 호스트를 50개만 사용하는 기업이 192.168.10.0/24 IP 주소를 사용한다면 256을 절반으로 나누고(128) 또 절반으로 나눈(64) 주소를 해당 기업에 할당합니다. 그 후 남은 주소는 다른 기업에게 할당하는 것이 서브네팅의 기본 원리입니다.

이러한 서브네팅은 서브넷 마스크를 통해 계산되어 수행합니다.


  • 서브넷 마스크
    • 마스킹: 특정 자리의 숫자 값만 뽑아내고 싶을때 쓰는 기법, AND 연산

네트워크 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이라고 생각합니다.

#. Prefix

서브넷 마스크를 간소화해서 표현하는 것으로 비트를 이용한 방법입니다. 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만 있으면 해당 정보를 전달할 수 있어 네트워크 리소스를 절약할 수 있습니다.

  • 두 부분으로 나누기(128)

  • 네 부분으로 나누기(64)

만약 서브네팅을 추가로 해야 한다면 /24에서 /25로 증가시키고 슈퍼네팅을 해야한다면 /23으로 감소시킵니다.


#. CIDR 계산법

  • 192.168.10.0/27의 Host ID 범위 구하기
    11000000.10101000.00001010.00000000에서 가장 오른쪽 5비트가 Host ID
    000/00000(0) ~ 000/11111(31)
    따라서 네트워크 범위는 192.168.10.0 ~ 192.168.10.31
  • 192.168.10.0/27의 Host ID 범위 구하기
    32bit(총 bit수) - 27(네트워크 ID bit수) = 5(호스트 ID bit수)
    2^5 = 32
    192.168.56.32 -> 다음 네트워크 주소
    따라서 네트워크 범위는 192.168.10.0 ~ 192.168.10.31
  • 192.168.207.2/22
    11000000.10101000.11001111.00000010에서 가장 오른쪽 10비트가 Host ID
    110011/00.00000000(204.0) ~ 110011/11.11111111(207.255)
    따라서 네트워크 범위는 192.168.204.0 ~ 192.168.207.255

    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

  • 192.168.207.227/25
    11000000.10101000.11001111.11100011에서 가장 오른쪽 7비트가 Host ID
    1/0000000(128) ~ 1/1111111(255)
    따라서 네트워크 범위는 192.168.207.128 ~ 192.168.207.255
  • 192.1.207.2/13
    11000000.00000001.11001111.00000010에서 가장 오른쪽 19비트가 Host ID
    00000/000.00000000.00000000(0.0.0) ~ 00000/111.11111111.11111111(7.255.255)
    따라서 네트워크 범위는 192.0.0.0 ~ 192.7.255.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

0개의 댓글