IPv4 Addressing

youngwiki
Pinkgo (토론 | 기여)님의 2025년 4월 11일 (금) 17:04 판 (Subnetting)

상위 문서: Internet Protocol

개요

호스트와 물리적 네트워크 링크(physical network link) 간의 접점을 인터페이스(interface)라고 한다. 예를 들어 호스트는 보통 Wi-Fi나 이더넷(Ethernet) 포트을 통해서만 네트워크와 연결될 수 있으므로, Wi-Fi나 이더넷이 호스트의 인터페이스이다. 또한 라우터(router)는 여러개의 링크(네트워크)와 연결되어 있으므로 해당 링크의 개수만큼 인터페이스를 가진다. 이때 각 호스트와 라우터는 IP 데이터그램을 송수신할 수 있기 때문에 IP(Internet Protocol)는 각 호스트와 라우터의 인터페이스마다 고유한 IP 주소를 요구한다. 즉, IP 주소는 호스트나 라우터 자체가 아닌 그 안에 있는 개별 인터페이스에 할당된다. 이는 라우터와 같이 여러 인터페이스를 가지고 있는 장치가 있을 수 있기 때문이다.[1]
각 IP 주소는 32비트(4바이트) 길이이며, 따라서 총 232개, 약 40억 개의 IP 주소가 존재할 수 있다. 이 주소들은 .으로 구분된 10진수 표기로 쓰인다. 즉, 주소의 각 바이트를 10진수로 쓰고, 각 바이트를 마침표(.)로 구분한다. 예를 들어 IP 주소 193.32.216.9는 다음과 같다:

  • 193은 처음 8비트를 10진수로 나타낸 것,
  • 32는 두 번째 8비트,
  • 216은 세 번째,
  • 9는 마지막 8비트에 해당한다.

따라서 193.32.216.9는 2진수로 표현하면 다음과 같다:

11000001 00100000 11011000 00001001

인터넷에 연결된 모든 호스트와 라우터의 각 인터페이스는 전세계에서 유일한 IP 주소를 가져야 한다.[2]

Subnet

Figure 4는 각각의 인터페이스에 IP 주소가 지정이되는 예시를 보여준다. 해당 이미지에서는 세 개의 인터페이스를 가진 하나의 라우터가 일곱 개의 호스트를 연결하고 있는데, 인터페이스에 할당된 IP 주소를 유심히 살펴보면 주목할 점이 존재한다. Figure 4의 왼쪽 상단에 있는 세 개의 호스트와, 이들이 연결된 라우터의 인터페이스는 모두 223.1.1.xxx 형식의 IP 주소를 가지고 있다. 즉, 이 네 개의 인터페이스는 IP 주소의 왼쪽 24비트가 동일하다. 또한 해당 네 개의 인터페이스는 라우터 없이 하나의 네트워크로 연결되어 있다.[3]
이렇게 라우터를 통하지 않고 물리적으로 통신할 수 있는 호스트들 사이의 네트워크subnet이라고 한다. 즉, 네트워크에서 라우터를 뜯어내면 존재하는, 하위 네트워크를 의미한다. 이때 각각의 subnet에는 주소가 할당되며, 해당 예시에서는 223.1.1.0/24에 해당한다. 이때 /24는 subnet mask라고 불리며, 왼쪽부터 24비트가 subnet 주소를 정의한다는 것을 의미한다. 해당 subnet에 추가로 호스트를 연결하기 위해서는 해당 호스트의 IP 주소도 223.1.1.0/24 형식을 따라야 한다.
IP에서 정의하는 subnet은 호스트가 라우터 인터페이스에 연결된 이터넷 세그먼트에만 국한되지 않는다. Figure 5에는 세 개의 라우터가 point-to-point link로 서로 연결되어있으며 각각 세 개의 인터페이스를 가진다. 이때 figure 5에 존재하는 subnet 중 223.1.1.0/24, 223.1.2.0/24, 223.1.3.0/24은 figure 4의 subnet들과 비슷하다. 하지만 이 예시에는 추가로 세 개의 subnet이 존재한다:

  • 라우터 R1과 R2를 연결하는 subnet 223.1.9.0/24
  • 라우터 R2와 R3를 연결하는 subnet 223.1.8.0/24
  • 라우터 R3와 R1을 연결하는 subnet 223.1.7.0/24

따라서 호스트와 라우터 시스템에서 subnet을 정하는 것은 어려운 일이지만, 다행히 아래와 같은 subnet을 식별하는 가이드 라인이 있다.

각 인터페이스를 호스트나 라우터에서 분리(detach)시키면, 인터페이스들이 끝점이 되는 고립된 네트워크들의 집합이 형성된다. 각 고립된 네트워크는 하나의 subnet이다.

따라서 이 가이드라인을 figure 5에 적용하면 총 6개의 subnet을 얻을 수 있다.

CIDR

CIDR(Classless InterDomain Routing)은 subnet 주소 지정 개념을 일반화한 인터넷의 주소 할당 전략이다. Subnet 주소 지정과 같이, 32비트 IP 주소는 두 부분으로 나뉘며, 주소 형식은 a.b.c.d/x이다. 이때 x는 주소 앞부분의 비트 수를 의미한다.
a.b.c.d/x에서 x개의 최상위 비트는 주소의 네트워크 부분이며, prefix라고 불린다. 이때 어떤 조직(enterprise)에 복수의 라우터들이 존재한다고 하더라도, 같은 조직내에 있는 인터페이스들은 동일한 prefix를 공유한다.
조직 외부의 라우터들은 오직 prefix(최상위 x 비트)만 보고 라우팅을 수행한다. 이는 라우팅의 forwarding table 크기를 크게 줄여준다. 나머지 32-x 비트는 조직 내부의 인터페이스들을 구분하는데 사용된다. 조직 내부의 라우터들은 이 하위 비트들을 기반으로 라우팅 결정을 내린다. 예를 들어, a.b.c.d/21과 같은 IP 주소는 조직의 네트워크 prefix가 21 비트라는 뜻이다. 그리고 남은 11비트는 해당 조직 내의 개별 호스트들의 인터페이스들을 구분하는데 사용된다. 또한 이 11비트 중 일부를 다시 subnetting[4]을 하는데 사용할 수 있다. 예를 들어, a.b.c.d/24와 같은 IP 주소는 추가로 8개의 subnet의 IP 주소를 지정할 수 있다.

Classful Addressing

CIDR이 도입되기 전에는 IP 주소의 prefix 길이가 반드시 8, 16, 24비트로 고정되었는데, 이를 Classful Addressing이라고 한다. 이는 figure 6와 같이 prefix의 크기를 class로 나누어 구분한다.

  • Figure 6. Classful Addressing
    Figure 6. Classful Addressing
    A class: 첫 옥텟[5]이 1~126에 해당한다.
    • 첫 옥텟에 0과 127이 포함되지 않는 이유는 첫 옥텟이 0과 127인 IP 주소는 예약이 되어있기 때문이다.[6]
    • 첫 비트는 항상 0이며 첫 8비트를 네트워크 ID로 사용하고, 나머지 24비트를 호스트 ID로 사용한다.
    • 네트워크 ID의 개수는 126개이며, 호스트 ID의 개수는 약 1600만 개이다.
    • A 클래스의 주소 범위는 1.0.0.0~126.255.255.255이다.
  • B class: 첫 옥텟이 128~191에 해당한다.
    • 첫 두비트는 항상 10이며 첫 16비트를 네트워크 ID로 사용하고, 나머지 16비트를 호스트 ID로 사용한다.
    • 네트워크 ID의 개수는 16,328개이며, 호스트 ID의 개수는 약 65534개이다.
    • B 클래스의 주소 범위는 128.0.0.0~191.255.255.255이다.
  • C class: 첫 옥텟이 192~223에 해당한다.
    • 첫 세비트는 항상 110이며 첫 24비트를 네트워크 ID로 사용하고, 나머지 8비트를 호스트 ID로 사용한다.
    • 네트워크 ID의 개수는 209만 7150개이며, 호스트 ID의 개수는 254개이다.
    • B 클래스의 주소 범위는 192.0.0.0~223.255.255.255이다.

위에서 class C의 호스트 ID의 개수는 8비트를 쓰고 있음에도 256개가 아닌 254개이다. 즉, 2개의 IP 주소가 특수한 용도로 사용되어 호스트에 할당 불가하다. 그 중 하나는 '네트워크 주소(network address)로 subnet 자체를 나타내는 주소이다. 즉, subnet 전체를 의미하므로 개별 장치에 할당할 수 없다. 네트워크 주소는 IP 주소에서 호스트 ID 부분을 전부 0으로 만든 값에 해당한다.
또다른 하나는 브로드캐스트 주소(broadcast address)로, subnet 내의 모든 호스트에게 메시지를 전송할 때 사용된다. 즉, 특정 장치가 아닌 전체 호스테에게 전송할 때 사용하므로 개별 장치에 할당할 수 없다. 브로드캐스트 주소는 IP 주소에서 호스트 ID 부분을 전부 1으로 만든 값에 해당한다.

Classful Addressing의 가장 큰 문제는 낭비되는 IP 주소가 많다는 것이다. 예를 들어 class C는 최대 28 − 2 = 254 호스트밖에 수용하지 못하는데, 이는 대부분의 조직에 대해 너무 적은 수치이다. 또한 class B는 최대 65,534 호스트를 수용할 수 있었지만, 이는 너무 크다. 결과적으로는 2000명의 호스트를 가진 조직도 class B 주소를 할당받아야 하며, 나머지 63,000개 이상의 주소는 버려지므로 심각한 IP 주소 낭비이다.

Obtaining a Block of Addresses

어떤 조직의 Subnet 내에서 사용할 IP 주소 블록을 얻기 위해서 네트워크 관리자는 자신의 ISP에 연락할 수 있으며, ISP는 이미 자신에게 할당된 더 큰 주소 블록으로부터 주소를 제공할 수 있다.
예를 들어 ISP가 200.23.16.0/20 주소 블록을 할당받았다고 하자. 이 ISP는 자신의 주소 블록을 서로 인접하고 크기가 같은 8개의 주소 블록으로 나눈 다음, 해당 ISP가 지원하는 최대 8개의 조직 각각에 하나씩 주소 블록을 제공할 수 있다.

ISP의 블록:        200.23.16.0/20      11001000 00010111 00010000 00000000
조직 0 (예시):      200.23.16.0/23      11001000 00010111 00010000 00000000
조직 1:             200.23.18.0/23      11001000 00010111 00010010 00000000
조직 2:             200.23.20.0/23      11001000 00010111 00010100 00000000
...                 ...                 ...
조직 7:             200.23.30.0/23      11001000 00010111 00011110 00000000


각주

  1. 어떤 라우터는 192.168.1.1, 10.0.0.1, 172.16.0.1 같은 여러 주소를 가질 수 있다.
  2. 단, NAT 뒤에 있는 인터페이스는 예외이다.
  3. 해당 인터페이스들은 이더넷 스위치로 연결되어 있거나, 무선 액세스 포인트에 의해서 연결되었을 것이다.
  4. Subnet을 또 다른 subnet으로 나누는 것이다.
  5. 맨 앞의 8비트의 10진수 표기이다.
  6. 0은 미지정 주소, 127은 자기 자신을 가리키는 루프백 주소이다.