** B 클래스의 주소 범위는 <code>192.0.0.0</code>~<code>223.255.255.255</code>이다.
** B 클래스의 주소 범위는 <code>192.0.0.0</code>~<code>223.255.255.255</code>이다.
위에서 class C의 호스트 ID의 개수는 8비트를 쓰고 있음에도 256개가 아닌 254개이다. 즉, 2개의 IP 주소가 특수한 용도로 사용되어 호스트에 할당 불가하다. 그 중 하나는 ''''네트워크 주소(network address)'''로 subnet 자체를 나타내는 주소이다. 즉, subnet 전체를 의미하므로 개별 장치에 할당할 수 없다. 네트워크 주소는 IP 주소에서 호스트 ID 부분을 전부 0으로 만든 값에 해당한다.<br>
위에서 class C의 호스트 ID의 개수는 8비트를 쓰고 있음에도 256개가 아닌 254개이다. 즉, 2개의 IP 주소가 특수한 용도로 사용되어 호스트에 할당 불가하다. 그 중 하나는 ''''네트워크 주소(network address)'''로 subnet 자체를 나타내는 주소이다. 즉, subnet 전체를 의미하므로 개별 장치에 할당할 수 없다. 네트워크 주소는 IP 주소에서 '''호스트 ID 부분을 전부 0으로 만든 값'''에 해당한다.<br>
또다른 하나는 '''브로드캐스트 주소(broadcast address)'''로, subnet 내의 모든 호스트에게 메시지를 전송할 때 사용된다. 즉, 특정 장치가 아닌 전체 호스테에게 전송할 때 사용하므로 개별 장치에 할당할 수 없다. 브로드캐스트 주소는 IP 주소에서 '''호스트 ID 부분을 전부 1으로 만든 값'''에 해당한다.
또다른 하나는 '''브로드캐스트 주소(broadcast address)'''로, subnet 내의 모든 호스트에게 메시지를 전송할 때 사용된다. 즉, 특정 장치가 아닌 전체 호스테에게 전송할 때 사용하므로 개별 장치에 할당할 수 없다. 브로드캐스트 주소는 IP 주소에서 '''호스트 ID 부분을 전부 1으로 만든 값'''에 해당한다.
호스트와 물리적 네트워크 링크(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
CIDR이 도입되기 전에는 IP 주소의 prefix 길이가 반드시 8, 16, 24비트로 고정되었는데, 이를 Classful Addressing이라고 한다. 이는 figure 6와 같이 prefix의 크기를 class로 나누어 구분한다.
Figure 6. Classful AddressingA 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으로 만든 값에 해당한다.
Subnetting
Classful Addressing의 가장 큰 문제는 낭비되는 IP 주소가 많다는 것이다. 예를 들어 class C는 최대
각주
↑어떤 라우터는 192.168.1.1, 10.0.0.1, 172.16.0.1 같은 여러 주소를 가질 수 있다.