1) 클래스와 블록
① 클래스 A
- 1바이트만 netid 지정
- 가장 왼쪽 비트 '0'
- 7비트로 나타내는 블록의 수
- 블록에 속한 주소 수 = 16,777,216개
② 클래스 B
- 처음 두 바이트가 클래스 지정
- 처음 두 비트는 '10'
- 14비트로 지정할 수 있는 블록 수
- 각 블록에 속한 주소 수 65,536개
- 클래스 B 주소도 거의 소진
③ 클래스 C
- 처음 세 바이트가 클래스 지정
- 처음 세 비트는 '110'
- 각 블록에 속한 주소 수 256개
2) 네트워크 주소
- 블록의 첫 번째 주소는 네트워크 주소
- 목적지로 패킷을 전송하는데 사용
- 네트워크 주소는 네트워크의 식별자
3) 클래스 기반 주소 지정
- 마스크를 이용하여 네트워크 주소 찾아내기
→ 목적지 주소와 디볼트 마스크를 AND 연산
4) 슈퍼넷팅(supernetting)
- 여러 개의 C 클래스 결합
- 1,000개의 주소가 필요한 기관이 4개의 C 클래스 신청
- 슈퍼넷 마스크는 서브넷 마스크의 반대
- 인터넷의 폭발적 증가로 문제점 발생
- Class A와 Class B 네트워크의 주소 공간이 고갈
- 클래스 C 주소 사용으로 인터넷의 라우팅 테이블 규모의 증대
- 32비트 IPv4 주소의 궁극적인 고갈
- 주소의 고갈을 막기 위해 IPv6가 제안
- IPv4에서 IPv6로 전환까지 과도기적인 사용
5) 클래스 없는 주소 지정
- 클래스 기반 주소 지정에서 서브넷팅과 슈퍼넷팅은 실제로 주소 고갈 문제를 해결하지 못함
- 인터넷이 성장함에 따라, 장기적으로 보다 큰 주소 공간을 확보하는 것이 필요
- 장기적 해결책으로 IPv6가 개발
- 그러나 동일한 주소 공간을 사용하면서 각 기관에 대해 주소를 분배하는 방법이 필요
- 단기 해결책은 IPv4 주소를 사용하면서 클래스 없는 주소지정(classless addressing)이다.
6) 가변길이 블록
- 각 기관은 가변길이 블록으로 2의 32승개의 주소를 갖는 블록을 지정 가능
7) 2단계 주소 체계
- 프리픽스(Prefix) : netid와 동일 기능
- 서픽스(suffix) : hostid와 동일 기능
- 클래스 없는 주소 지정 방식에서 프리픽스의 길이는 0 ~ 32
8) 슬래시 표기법 (Slash notation)
- 프리픽스 길이를 주소에 포함하여 표현
- 클래스 없는 주소 지정 방식에서, 블록 정보를 알기 위해서는 블록 내의 주소와 프리픽스를 알아야 한다.
9) 블록 정보 추출
- 슬래시 표기법 (CIDR, class inter-domain routing)으로 표시된 주소는 첫 번째 주소(네트워크 주소), 주소의 개수, 그리고 마지막 주소 등과 같은 블록에 포함된 모든 정보를 포함
- 블록에 속하는 첫 번째 주소(네트워크 주소)는 블록에 속하는 임의의 주소에 네트워크 마스크를 비트 단위로 AND 연산함으로써 구할 수 있다.
첫번째 주소 = (임의의 주소) AND (네트워크 마스크) |
또는 블록에 속하는 임의의 주소에서 왼쪽에서 연속적으로 n개의 비트는 그대로 두고 나머지 32 - n 비트는 모두 0으로 설정하면 첫번째 주소를 구할 수 있다.
ㆍ블록에 속하는 마지막 주소는 첫 번째 주소와 주소의 개수를 더하거나, 또는 블록에 속하는 임의의 주소에 네트워크 마스크의 보수(NOT 연산) 값을
비트 단위로 OR 연산함으로써 구할 수 있다.
마지막 주소 = (임의의 주소) OR [NOT (네트워크 마스크)] |
또는 블록에 속하는 임의의 주소에서 왼쪽에서 연속적으로 n개의 비트는 그대로 두고 나머지 32 - n개의 비트는 모두 1로 설정하면 마지막 주소를 구할 수 있다.