Classful Addressing
클래스 기반 주소 지정
- IP 주소를 5개의 Class (A - E)로 나누어서 배분하는 방식이다.
- TCP/IP 체계 도입 초반에 제안된 주소지정 개념이다.
- Class A-E는 상위 Bit의 주소 시작값을 보고 판별할 수 있다.
- 오른쪽 그림은 최상위 Byte의 값의 범위를 십진수로 판별하는 방법을 알려준다.
- Net-id 필드에는 한 Byte당 한 Bit가 Parity Bit로 지정된다.
- Class A : 0으로 시작 (1개의 Parity Bit)
- Class B : 10으로 시작 (2개의 Parity Bit)
- Class C : 110으로 시작 (3개의 Parity Bit)
- Class D : 1110으로 시작
- Class E : 1111으로 시작
- Class를 구분하는 Flow는 위 그림과 같다.
- 클래스 기반 주소지정에서는 각 클래스가 정해진 수의 블록으로 나뉘고, 각 블록의 크기는 고정되어 있다.
- 기본적으로 Class A, B, C의 주소는 Unicast* 방식의 주소이다.
- Broadcast 주소는 Class A, B, C, E의 Host-id에 특별한 패턴**을 입력하여 만든다.
(즉, Unicast 주소 중 Broadcast 주소가 숨어있는 형태이다.)
- Class A, B, C에서 Host-id가 모두 0인 주소는 해당 네트워크를 대표하는 Network Address(Network Identifier)***이다.
- 주소를 네트워크의 ID와 호스트의 ID 부분을 구분해놓음으로써, 장거리/광범위 통신에서 대형 네트워크들을 구분할 때, 네트워크의 내부 호스트 구성 형태는 신경쓰지 않고 빠르게 구분해 나갈 수 있게 되었다.
(여기에서도 또한 추상화 개념이 녹아들어가 있다. 호스트 레벨까지는 신경 쓰지 않음으로써 목적지 노드가 있는 네트워크를 빠르게 찾을 수 있게 된다.)
* Link 주소 개념 참조 (Uni-Multi-Any-Broadcast Address)
** A, B, C Class의 Broadcast Address : Host-id 필드의 Bit가 모두 1인 주솟값이다. (Dotted-Decimal 표기에서는 255)
** E Class의 Broadcast Address : 32Bit 전체가 1인 주솟값이다.
- A, B, C Class의 Broadcast 주소와 E Class의 Broadcast 주소는 서로 다른 용도로 만들어졌다.
*** Network Identifier를 통해 Routing Table을 만든다.
Classification between Net-id and Host-id (네트워크 필드와 호스트 필드의 경계를 구분하는 법)
- 온전한 형태의 Class A, B, C에 속하는 주소들은 Byte Boundary(바이트 단위 주소)의 주소 체계를 가진다.
- SuperNet(병합된 네트워크) 혹은 SubNet(분할된 네트워크)의 경우, 주소 체계가 Byte Boundary를 갖는다 보장할 수 없으며, Bit Boundary 체계를 가질 확률이 높다.
- 위와 같은 상황에서 IP주소의 Net-id와 Host-id를 구분짓는 방법으로 아래와 같은 두 가지 방법이 있다.
1. Slash Notation (x.x.x.x / n)
Class | Prefix Length |
A | /8 |
B | /16 |
C | /24 |
D | /4 |
E | /4 |
- 임의의 IP주솟값(x.x.x.x)뒤에 슬래쉬 기호와 Net-id 필드에 해당하는 Bit 수(/n)를 표시하는 방법이다.
- 해당 IP주소 중 앞의 n자리가 네트워크 필드임을 명시적으로 알리는 방법이다.
ex) 135.200.75.4/16 : 앞의 16비트(135.200.) 필드가 네트워크 필드인 IP주소
2. Network Mask
- Net-id는 1로, Host-id는 0으로 초기화 된 특정 주솟값이다.
- 주어진 IP주소와 해당 네트워크의 Network Mask 값을 AND 연산시켜, 해당 IP주소의 Net-id만 추출해서 네트워크 주소를 판별하는 방식이다.
- Class A, B, C에는 각각의 Default Mask 값이 정해져 있다.
ex) Class A의 Default Mask : 255.0.0.0 = 11111111 00000000 00000000 00000000
ex) Class B의 Default Mask : 255.255.0.0 = 11111111 11111111 00000000 00000000
ex) Class C의 Default Mask : 255.255.255.0 = 11111111 11111111 11111111 00000000
Example 5.13 (TCP/IP Protocol Suite p.131) - Routing Process 관련 예제
A router receives a packet with the destination address 201.24.67.32. Show how the router finds
the network address of the packet.
Sol) IP주소의 첫 번째 필드값 201을 통해 Class C(192 ~ 223)에 속하는 IP주소임을 확인할 수 있다.
IP주소와 Class C의 Default Mask(255.255.255.0)에 대한 AND 연산을 수행하면 IP주소의 네트워크 필드(201.24.67.0)만을 추출할 수 있다.
이 네트워크 필드를 통해 라우터는 라우팅 테이블을 참고하여 해당 네트워크 주소가 현재 네트워크 주소와 일치하지 않는다면, 적절한 경로에 있는 다른 라우터에 전송하게 된다.
만약, 현재 네트워크의 주소와 일치하는 경우, 해당 네트워크 주소에 매칭되는 Interface 주소를 계산하고, NHA(Next-Hop Address)는 Direct(라우터가 스위치로 직접 전송할 수 있는 경우)값으로 설정한다.
- 그림의 Routing Table에는 NHA가 누락되었다.
Network Class (네트워크 클래스)
1. Class A (0.0.0.0 ~ 127.255.255.255)
- 주로 규모가 매우 큰 기관에서 Class A 타입으로 주소를 지정받는다.
- Net-id에는 1Byte가 할당되는데, Parity Bit를 위한 1Bit를 제외하고, 7Bit(128) 개의 블록으로 나뉠 수 있다.
(Net-id의 범위 : 0.x.x.x ~ 127.x.x.x)
- Host-id에는 3Byte가 할당되는데, 이를 통해 약 1,700만개의 호스트 노드에 주소를 부여할 수 있다.
- 즉, 이론적으로 최대 128개의 초 거대 기관에 Class A 타입으로 주소를 배분할 수 있다.
(하지만, 이 중 몇개의 블록은 이미 예약되어 있는 주소로 활용되기 때문에 실제는 그 보다 적다.)
- 낭비되는 주소의 양이 가장 많은 Class이다.
※ Class A에서는 아래와 같은 예약 주소들이 있다. (예약된 주소들은 일반적인 사용이 불가능하다.)
- Net-id = 0 or 10 -> Private Address로 예약된 주소이기 때문에 사용하지 못한다.
- Net-id = 127 -> Special Address로 예약된 주소이기 때문에 사용하지 못한다.
- Host-id = 0.0.0 -> 호스트 ID가 전부 0인 주소는 해당 Network-IP(네트워크의 이름이 되는 주소)로 예약되어 있다.
ex) 1.0.0.0 : 1번 네트워크 IP주소
- Host-id = 255.255.255 -> 해당 네트워크의 모든 노드에 메세지를 전송시키는 Broadcast 주소이다.
ex) 13.255.255.255 : 13번 네트워크의 모든 호스트에게 메세지를 보낼 때 사용하는 주소
Example 5.13 (TCP/IP Protocol Suite p.127)
An address in a block is given as 73.22.17.25. Find the number of addresses in the block, the first address, and the last address.
Sol) 첫 번째 필드의 주솟값이 73인 것으로 보아, A Class(0 ~ 127)에 속하는 IP주소임을 알 수 있다.
따라서, 주어진 주소의 네트워크 필드를 명확히 하는 차원에서, 73.22.17.25/8으로 다시 쓸 수 있다.
A Class에 속하는 IP주소는 두 번째 필드에서 네 번째 필드의 주솟값이 Host-id에 해당된다.
주어진 IP주소가 속한 네트워크에서 쓰이는 가장 첫 번째 주솟값은 73.0.0.0이며,
마지막 주솟값은 73.255.255.255이다.
여기서 첫 번째 주소 73.0.0.0은 해당 네트워크를 대표하는 Network Address이며,
마지막 주소 73.255.255.255는 73번 네트워크에 연결된 모든 노드에게 메세지를 전송하게 하는 Broadcast주소이다.
2. Class B (128.0.0.0 ~ 191.255.255.255)
- 주로 대학교 수준의 대형 기관에서 Class B 타입으로 주소를 지정받는다.
- Net-id에는 2Byte가 할당되는데, Parity Bit를 위한 2Bit를 제외하고, 14Bit(16,384) 개의 블록으로 나뉠 수 있다.
(Net-id의 범위 : 128.0.x.x ~ 191.255.x.x)
- Host-id에는 2Byte가 할당되는데, 이를 통해 약 65,536개의 호스트 노드에 주소를 부여할 수 있다.
- Class B에서도 또한, 몇몇 블록은 특수 목적을 위해 예약되어 있으며, Class A보다는 적지만, 꽤나 많은 주솟값들이 낭비되고 있다.
Example 5.14 (TCP/IP Protocol Suite p.128)
An address in a block is given as 180.8.17.9. Find the number of addresses in the block, the first
address, and the last address.
Sol) 첫 번째 필드의 주솟값이 180인 것으로 보아, B Class (128 ~ 191)에 속하는 IP주소임을 알 수 있다.
따라서, 주어진 주소의 네트워크 필드를 명확히 하는 차원에서, 180.8.17.9./16으로 다시 쓸 수 있다.
B Class에 속하는 IP주소는 세 번째 필드에서 네 번째 필드의 주솟값이 Host-id에 해당된다.
주어진 IP주소가 속한 네트워크에서 쓰이는 가장 첫 번째 주솟값은 180.8.0.0. 이며,
마지막 주솟값은 180.8.255.255.이다.
여기서 첫 번째 주소 180.8.0.0.은 해당 네트워크를 대표하는 Network Address이며,
마지막 주소 180.8.255.255.는 73번 네트워크에 연결된 모든 노드에게 메세지를 전송하게 하는 Broadcast주소이다.
3. Class C (192.0.0.0 ~ 223.255.255.255)
- 주로 작은 중소기업체 수준의 기관에서 Class C 타입으로 주소를 지정받는다.
- Net-id에는 3Byte가 할당되는데, Parity Bit를 위한 3Bit를 제외하고, 21Bit(2,097,152) 개의 블록으로 나뉠 수 있다.
- Host-id에는 1Byte가 할당되는데, 이를 통해 약 256개의 호스트 노드에 주소를 부여할 수 있다.
- 하나의 클래스 C 블록이 충분할 만큼 작은 기관은 많지 않으므로, 한 기관에서 다수의 C 클래스 주소 블럭을 할당받아 사용하는 경우가 흔하다.
4. Class D (224.0.0.0 ~ 239.255.255.255)
- 하나의 블록으로 구성되어 있다. (Net-id와 Host-id의 구분이 없다.)
- Multicasting을 위한 클래스이다.
- 32비트 중, 앞의 4Bit는 \(\texttt{1110}\)로 고정되며, 나머지 28비트의 가변 비트로 구성된다.
- Class D의 각 주소는 인터넷상에서 호스트들의 한 그룹을 정의하는 데 사용된다.
(특정 그룹에 Class D 타입의 주소가 할당되면, 그룹 내 모든 호스트는 자신들의 주소(Unicast 주소)에 추가적으로 Multicast 주소를 갖게 된다.)
5. Class E (240.0.0.0 ~ 255.255.255.255)
- 하나의 블록으로 구성되어 있다. (Net-id와 Host-id의 구분이 없다.)
- 예약된 주소로 사용하기 위해 설계되었다.
- Multicasting을 위해 쓰이는 주소들 이외의 나머지 주소들은 쓰이지 않는다.
- 32비트 중, 앞의 4Bit는 \(\texttt{1111}\)로 고정되며, 나머지 28비트의 가변 비트로 구성된다.
- E 클래스에서의 Broadcast Address : 255.255.255.255 (모든 Bit가 1)
Router Interface (라우터 인터페이스에 할당되는 주소)
- Class A, B, C중 한 클래스의 주소 체계를 사용하는 물리 네트워크에서 인터넷에 연결되기 위해서는 Router가 적어도 하나 이상 존재할 것이다.
- 해당 라우터와 물리 네트워크의 노드들이 연결되기 위해서는, 해당 물리 네트워크에서 라우터와 연결된 인터페이스에도 주소를 할당해야 한다.
- 일반적으로, 네트워크 관리자들은 노드에 할당될 수 있는 주소들 중 가장 큰 주솟값을 라우터의 인터페이스 주소로 할당하는 관례가 있다. (표준에 해당되는 개념은 아니다.)
Ex. 141.14.0.0/16 (B Class Net) 네트워크 내부의 라우터 인터페이스의 주소를 일반적으로 141.14.255.254로 할당한다.
141.14.255.254는 노드에 할당 가능한 주소 중 가장 큰 주솟값이다.
Reference: TCP/IP Protocol Suite 4th Edition
(Behrouz A. Forouzan 저, McGraw-Hill, 2010)
Reference: Data Communications and Networking 5th Edition
(Behrouz A. Forouzan 저, McGraw-Hill, 2012)