일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 문파문파
- mysql
- 문파문파 공략
- Tizen
- 타이젠
- 해외직구
- 안드로이드
- Git
- NC 다이노스
- Linux
- ubuntu
- arm
- 리뷰
- 애플
- 국정원
- 데이터베이스
- ubuntu 12.04
- 우분투
- 프로야구
- 조세피난처
- python
- 인공지능
- 뉴스타파
- 김경문
- NC다이노스
- 단통법
- 야구
- 블로그
- 태그를 입력해 주세요.
- 손민한
- Today
- Total
꿈꾸는 사람.
[IPv4 주소][주소 공간][클래스 기반 주소지정][클래스 없는 주소지정] 본문
IPv4 주소
IP 주소는 인터넷 상의 장치들의 연결을 식별하기 위해 TCP/IP 프로토콜의 IP 계층에서 사용되는 식별자이다.
IP 주소가 라우터나 호스트의 주소가 아닌 연결의 주소란 것은 장치가 다른 네트워크로 이동하면 변경되기 때문이다. 즉, IP 주소는 이동성을 지원하지 않는다. 이것을 해결하고자 Mobile IP가 도입 된다.
하나의 장치가 두 개의 네트워크에 동시에 연결되어 2개의 연결을 가지고 있으면 2개의 IPv4 주소를 가지게 된다.
최초의 IP 주소는 32비트 주소인 IPv4 주소였으나 인터넷 상의 장치들의 증가로 주소가 부족해져 길이를 늘린 IPv6주소가 등장하였다.
그리고 2011년 2월 4일부터 모든 IPv4 주소가 소진되어 IPv4의 할당이 중지되었다.
주소 공간
프로토콜에서 사용 가능한 전체 주소의 수이다.
IPv4는 32비트의 주소를 사용하므로 전체 주소 공간은 232 (4,294,967,296 = 약 43억 개)이 된다.
IPv4 주소는 2진수, 10진수, 16진수의 세 가지 표기법을 사용하여 나타낼 수 있다.
윈도우 운영체제에서는 IPv4 주소를 점 10진수 표기법(dotted-decimal notation: 바이트를 구분하는 점과 함께 10진수로 표시)을 사용하여 간단하고 읽기 쉽게 나타낸다.
IPv4 주소도 전화망처럼 계층적 구조를 가지며 네트워크를 정의하는 접두사(prefix)와 노드를 정의하는 접미사(suffix)의 두 부분으로 이루어진다.
접두사인 네트워크 주소는 라우팅에 사용되는 중요한 부분으로 실질적인 네트워크 식별자이다.
각 네트워크는 네트워크 식별자로 구분되기 때문이다.
클래스 기반 주소지정 (classful addressing)
IPv4 주소는 접두사가 8, 16, 24비트의 세 가지 길이로 고정되어 설계되었다.
전체 주소 공간은 아래 그림과 같이 5개의 클래스로 구분된다.
CLASS |
구성 |
범위 |
subnet mask |
CIDR notation |
A |
0 xx.xxx.xxx.xxx |
0.0.0.0 ~ 127.255.255.255 |
255.0.0.0 |
71.208.123.121 |
B |
10 xx.xxx.xxx.xxx |
128.0.0.0 ~ 191.255.255.255 |
255.255.0.0 |
177.123.211.33 |
C |
110 xx.xxx.xxx.xxx |
192.0.0.0 ~ 223.255.255.255 |
255.255.255.0 |
212.23.232.102 |
D |
1110 xx.xxx.xxx.xxx |
224.0.0.0 ~ 239.255.255.255 |
not defined |
not defined |
E |
1111 xx.xxx.xxx.xxx |
240.0.0.0 ~ 254.255.255.255 |
not defined |
not defined |
클래스 A는 128개 기관에만 할당이 가능하며 각 기관은 단일 네트워크에 약 1천 6백만개의 주소를 가진다. 많은 주소가 낭비될 수 있다.
클래스 B는 두 번째로 높은 단위의 Class지만 역시 대부분의 주소가 사용되지 않는다.
클래스 C는 사용 가능한 주소가 256개로 너무 적은 것이 문제다.
반면, 접두사의 길이가 주소에 포함되어 있어 접두사 접미사를 찾기 위한 추가적인 정보가 필요없다.
서브네팅(subnetting)
서브네팅은 큰 주소 공간을 작은 것으로 나누는 것이다.
클래스 A나 클래스 B는 여러 개의 서브넷으로 분리된다. 각 서브넷은 원래보다 큰 크기의 접두사를 가진다. 큰 기관이 서브네팅을 통해 여러 기관으로 분배할 수 있다.
수퍼네팅(supernetting)
여러 클래스 C를 하나의 큰 구조로 묶어 사용하는 것이다.
수퍼네팅을 하면 패킷의 라우팅이 복잡해져 사용되지 않았다.
클래스 없는 주소지정(classless addressing)
인터넷에 할당할 주소 고갈 문제의 단기적 해결책으로 클래스 없는 주소지정 방식의 IPv4 주소가 사용된다.
클래스 없는 주소지정에서 전체 주소 공간은 가변 길이의 블록으로 나누어진다.
주소의 블록은 2의 제곱승으로 사용되어야 한다.
접두사 길이: 슬래시 표기법
접두사의 길이는 주소에 포함되지 않으므로 접두사 길이를 슬래시로 구분하여 주소에 추가하여 나타낸다. 이것이 클래스 없는 인터도메인 라우팅(CIDR – classless interdomain routing)이라 하고 비 공식적으로 슬래시 표기법(slash notation)으로도 불린다.
주소에서 정보 추출
접두사의 길이가 n인 블록의 주소가 주어지면 다음 세 가지 정보를 찾을 수 있다.
1. 블록 내의 주소 수 |
N = 232-n |
2. 첫 번째 주소 |
제일 왼쪽의 n 비트는 유지. 제일 오른쪽은 (32-n) 개의 비트는 0으로 설정. |
3. 마지막 주소 |
제일 왼쪽의 n 비트는 유지. 제일 오른쪽은 (32-n) 개의 비트는 1 로 설정. |
예)
192.168.219.107/25 (1100 0000. 1010 1000. 1100 1011. 0110 1011)
블록 내의 주소 수 |
N = 232-25 = 27 = 128 |
|
주어진 주소 |
192.168.219.107/25 |
1100 0000. 1010 1000. 1101 1011. 0110 1011
|
첫 번째 주소 |
192.168.219.0/25 |
1100 0000. 1010 1000. 1101 1011. 0000 0000 |
마지막 주소 |
192.168.219.127/25 |
1100 0000. 1010 1000. 1101 1011. 0111 1111 |
주소 마스크
블록 내의 첫 번째 주소와 마지막 주소를 찾는데 주소 마스크를 사용할 수 있다.
주소 마스크는 prefix인 처음 n개의 비트는 1로, 나머지 (32-n)개의 비트는 0으로 설정한다.
1. 블록 내의 주소 수 |
N = NOT (Mask) + 1 |
2. 첫 번째 주소 |
(블록 내 임의의 주소) AND (mask) |
3. 마지막 주소 |
(블록 내 임의의 주소) OR (NOT (mask)) |
예)
192.168.219.107/25의 mask = 255.255.255.128 (1111 1111. 1111 1111. 1111 1111. 1000 0000)
블록 내의 주소 수 |
N = NOT (mask) + 1 = 0.0.0.127 + 1 = 128 |
|
주어진 주소 |
192.168.219.107/25 |
1100 0000. 1010 1000. 1101 1011. 0110 1011 |
첫 번째 주소 |
address AND (mask) |
192.168.219.0 |
마지막 주소 |
address OR (NOT (mask)) |
address OR (0.0.0.127 = 0.0.0. 0111 1111) 192.168.219.127 |
블록 할당
클래스 없는 주소 지정에서 블록 할당은 중요한 사항이며 ICANN(Internet Corporation for Names and Numbers)이 결정한다.
블록 할당의 두 가지 제약 사항이 있다.
1. 요청된 주소 수 N은 2의 제곱승이어야 한다.
2. 블록 내에는 연속된 주소 공간이 있어야 하며 블록의 첫 번째 주소는 블록 내의 주소로 나누어져야 한다.
서브넷 설계
[가정]
할당된 전체 주소의 수 = N
각 서브넷에 할당된 주소의 수 = Nsub
각 서브넷의 접두사의 길이 = nsub
[서브넷 설계 과정]
각 서브넷 주소의 수는 2의 제곱승
각 서브넷의 접두사의 길이 nsub = 32 - log2 Nsub
각 서브넷의 첫 주소는 서브네트워크의 주소 수로 나눌 수 있어야 한다. 이는 더 큰 서브네트워크에 주소를 먼저 할당한다.
예)
[문제]
주소공간이 192.168.219.0/24 ~ 192.168.219.255/24인 기관이 있다.
연구소에 120개, 영업팀에 60개, 관리팀에 10개의 주소를 할당하려 한다.
서브블록을 설계하라.
[풀이]
전체 주소의 수 = N = 232-24 = 256
서브블록을 지정할 때 가장 큰 부분을 먼저 할당하고 작은 것은 나중에 한다.
1) 연구소가 필요한 120개의 주소가 가장 큰 서브블록이다. 120개 주소를 가지는 2의 제곱승은 128개 이다..
따라서 서브넷 마스크는 n1 = 32 - log2 256 = 25
첫 주소 = 192.168.219.0/25
마지막 주소 = 192.168.219.127/25
2) 영업팀에 할당할 60개의 주소가 두 번째 서브블록으로 64개 주소를 할당하여 2의 제곱승 규칙을 만족 시킨다.
서브넷 마스크는 n2 = 32 - log2 64 = 26
첫 주소 = 192.168.219.128/26
마지막 주소 = 192.168.219.191/26
3) 관리팀에는 10개의 주소만 필요하다. 역시 2의 제곱승이 아니므로 16개의 주소를 할당하면 된다.
서브넷 마스크는 n2 = 32 - log2 16 = 28
첫 주소 = 192.168.219.192/28
마지막 주소 = 192.168.219.207/28
특수 주소
IPv4 주소에서 특별한 목적으로 사용되는 주소들이 있다.
주요한 특수 주소를 아래에 표로 나타낸다.
this-host 주소 |
0.0.0.0/32 |
호스트 주소가 데이터그램을 보낼 때 자신의 주소를 모르는 경우 사용한다. |
제한된 브로드캐스트 주소 |
255.255.255.255/32 |
호스트나 라우터가 네트워크 상의 모든 장치로 데이터그램을 보낼 때 사용된다. |
루프백 주소 (loopback address) |
127.0.0.0/8 |
패킷이 호스트를 벗어나지 않게 한다. SW 테스트 목적으로 사용된다. |
사설 주소 (private address) |
10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 169.254.0.0/16 |
|
멀티 캐스트 주소 |
224.0.0.0/4 |
미래 사용 용도로 예약 |
참고 문헌
- 데이터통신과 네트워킹, Behrouz A. Forouzan 저. MaGraw-Hill 출판.
'Communication' 카테고리의 다른 글
해밍 부호, 해밍 코드(Hamming code) (2) | 2018.02.14 |
---|---|
[디지털 통신] 신호의 구분 (0) | 2017.08.22 |
[통신망][통신망 구성][회선 교환 vs 패킷 교환] (0) | 2016.05.17 |
[전자기파][파장과 주파수] 전자기파 > 전파 > 마이크로파 (0) | 2016.05.09 |
[Data communication] OSI 7 layer vs TCP/IP protocol suite (0) | 2016.05.02 |