IPv4 Addressing

youngwiki
Pinkgo (토론 | 기여)님의 2025년 4월 11일 (금) 16:08 판 (Classful Addressing)

상위 문서: 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] 이때 IP 주소는 아무렇게나 지정되지 않고 ICANN(Internet Corporation for Assigned Names and Numbers)이라고 하는 협회에서 관리한다.

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

Figure 6. Classful Addressing
Figure 6. Classful Addressing

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

  • 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이다.

각주

  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은 자기 자신을 가리키는 루프백 주소이다.