본문 바로가기
STUDY/Network

[네트워크] 네트워크 계층 IPv4주소

by 건강한 노동자 2020. 4. 21.

1. IPv4 주소란?

전 세계 인터넷 상에서 유일한, 32bit(4byte) 논리 주소. 일반적으로 IP주소라고 부르며, v4는 버전에 대한 것. IP주소의 부족으로 IPv6로 넘어가고자 하는 논의가 계속되고 있으나 아직까지는 IPv4가 주로 사용됨.

 

주소 공간(Address Space)

2^32 = 4,294,967,296개의 주소

 

표기

Binary: 내부적으로 쓰이는 주소.

Dotted Decimal(점 십진 표기법): 보기 쉽게 표현한 주소.    

※ 총 4byte로 구성되며 각각은 1byte로 0~255의 범위를 넘지 않음.

// Hexadecimal

 

2. 계층적 주소

IP주소는 크게 두 부분으로 나뉨. 라우팅 테이블이 작아지고, 주소 배정이 편리해짐.

- Prefix(네트워크 ID): 공인된 기관에서 블록 단위로 할당 받음.

- Suffix(호스트 ID): 기관 내부에서 자율적으로 배정함.

 

IPv4 주소의 계층적 구조

- 모든 IP 주소에 대한 라우팅 정보를 저장할 필요 없이, 네트워크 주소 정보만 저장함.

- 위치 기반(Location-based) 주소. 

- Ethernet MAC 주소는 물리 주소이자 평면(Flat-address) 주소.

 학교→집 이동: IP 주소 변동 O, ehernet MAC 주소 변동 X

 

2.1 클래스 주소 지정

Class Prefix(First Byte) Suffix
Class A (n=8)  0 Prefix (0~127) Suffix
Class B (n=16) 10 Prefix (128~191)
Class C (n=24) 110 Prefix (192~223)
Class D 1110 Prefix(224~239)  Multicast Addresses
Class E 1111 Prefix(240~255)  Reseved for future use

클래스 A~C: 유니캐스트 주소. 기관의 규모에 따라 A~C 클래스 중 한 주소를 할당해줌. 

클래스 D: 멀티캐스트 주소. 동적 할당. 특정 방송을 보고 싶은 사람만 동적으로 접속해서 보는 방식. 100% 지원되고 있지 않음. 앞으로 쓸 일은 없을 것 같음.

클래스 E: 사용하지 않음.

 

※마지막 255는 보통 Bradcast용으로 사용함. 실제로 할당 가능한 주소는 0~254의 255개. 

 

Mask(마스크): 라우터 등에서 IP주소 중에서 네트워크 주소만 추출하기 위해 사용함. IP 주소를 마스크 값과 함께 Bit-AND 연산을 수행함. 

Class Binary Dotted-Decimal CIDR
Class A 11111111 00000000 00000000 00000000 255.0.0.0 /8
Class B 11111111 11111111 00000000 00000000  255.255.0.0 /16
Class C 11111111 11111111 11111111 00000000 255.255.255.0 /24

 

클래스 주소 지정의 문제점

클래스 A~C에 대해 8bit 단위로 적당히 나눈 감이 없지 않아 있음. 클래스 A, B는 필요 이상으로 많은 주소를 낭비함. 반면 클래스 C는 대부분의 기관에서 주소가 부족함. 때문에 주소 고갈 문제가 대두되었고, 이를 해결하기 위한 방안으로 비클래스형(Classless, CIDR) 주소 배정이 등장함.

 

2.2 비클래스형(Classless, CIDR) 주소 지정

주소 고갈 문제를 해결하기 위한 주소 할당 기법. 기존의 고정 주소 블록 제한을 해제하고, 기관이 필요로 하는 주소 개수에 맞추어 블록을 할당함. 하지만 이미 클래스 기반 주소를 할당받은 기관들의 비협조로 인해 문제를 완전히 해결하지는 못했음.

 

CIDR(Classsless Interdomain Routing) 표기법

슬래시 표기법이라고도 불리며, 네트워크 주소 길이를 숫자로 표시함

 

네트워크 주소

라우터는 IP 패킷의 목적지 주소 전체가 아닌, 네트워크 주소만 보고 라우팅을 수행함. 그래서 네트워크 마스크를 사용하고, 이로써 라우팅 테이블의 엔트리 개수를 크게 줄일 수 있음.

IP 주소 라우팅 엔트리 매핑
205.16.37.40 205.16.37.32/28 205.16.37.32

 

비클래스형 주소지정 계산 예제

IP주소 첫 주소(Binary) 주소 범위(Dotted Decimal)
167.199.170.82/27 10100111 11000111 10101010 01000000 167.199.170.64/27 ~ 167.199.170.95/27(32개)
205.16.37.32/28 11001101 00010000 00100101 00100000 205.16.37.32/28 ~ 205.16.37.47/28(16개)
23.14.67.92/12 00010111 00000000 00000000 00000000  23.0.0.0/12 ~ 23.15.255.255/12(2^20개)
220.8.24.255/25 11011100 00001000 00011000 10000000 220.8.24.128/25 ~ 220.8.24.255/25(128개)

주소 블록 크기: 2^(32-n)

 

2.3 서브네팅(Subnetting)

호스트 ID의 일부 영역을 사용하여 기관 내에서 그룹핑을 하는 것. 기관 외부에서는 고려되지 않음.

 

서브네팅 예제 1

17.12.14.0/26을 할당받은 기관이 3개의 사무실에 대해 각각 32, 16, 16개의 크기 블록의 서브네트로 분할함.

Subnet 첫 주소(Binary) 주소 범위(Dotted Decimal)
All(64개)  00010001 00001100 00001110 00000000 17.12.14.0/26 ~ 17.12.14.255/26
Group 1(32개) 00010001 00001100 00001110 00000000 17.12.14.0/27 ~ 17.12.14.31/27
Group 2(16개) 00010001 00001100 00001110 00100000 17.12.14.32/28 ~ 17.12.14.47/28
Group 3(16개) 00010001 00001100 00001110 00110000 17.12.14.48/28 ~ 17.12.14.63/28

 

※ 여기서도 마찬가지로 주소 범위의 첫번째 주소: 네트워크 주소, 마지막 주소: 브로드캐스트 주소임을 기억할 것. 

※ 기본 게이트웨이 주소는 주소 범위 내 아무거나 선택 가능.

 

서브네팅 예제 2

14.24.74.0/24을 할당받은 기관이 3개의 사무실에 대해 각각 10, 60, 120개의 크기 블록의 서브네트로 분할함.

→ 2의 제곱수로 넉넉하게 16, 64, 128개를 할당한다고 생각하면 됨. 크기가 많은 것부터 할당.

Subnet 첫 주소(Binary) 주소 범위(Dotted Decimal)
All(254개)  00001110 00011000 01001010 00000000 14.24.74.0/24 ~ 14.24.74.255/24
Group 1(128개) 00001110 00011000 01001010 00000000 14.24.74.0/25 ~ 14.24.74.127/25
Group 2(64개) 00001110 00011000 01001010 10000000 14.24.74.128/26 ~ 14.24.74.191/26
Group 3(16개) 00001110 00011000 01001010 11000000 14.24.74.192/28 ~ 14.24.74.208/28

※ Group 3에서 1100대신, 1101, 1110, 1111도 사용할 수 있지만 순서대로 사용하려면 1100이 좋음. 다시 말해 16개의 크기 블록을 갖는 서브넷을 3개 더 만들 수 있음. 

 

서브네팅 마스크

서브네팅을 사용하면 클래스 마스크 값으로는 세브넷 주서를 알 수 없음. 따라서 서브네팅 마스크 필요. 

 

2.4 슈퍼네팅(Supernetting)

연속적인 C 클래스 주소 블록을 한 기관에 할당하여 하나의 주소 블록처럼 라우팅 가능하게 하는 기법. 

- 서브네팅과 반대되는 개념.

- 라우팅 테이블 목록을 줄임.

- 라우팅 속도가 빨라질 수 있음.

- 비클래스형 주소 할당 기법에서 사용.

 

슈퍼네팅 예제

4개의 연속적인 C 클래스 주소 200.1.64.0/24 ~ 200.1.67.0/24를 할당 받음.

IP 주소 3th Byte Binary
200.1.64.0/24 01000000
200.1.65.0/24 01000001
200.1.66.0/24 01000010
200.1.67.0/24 01000011

→ 200.1.64.0/22

 

3. 기타 주소 기법 및 관련 기구

3.1 특수 주소

Special Address Network ID Host ID Source or Destination
Network address Specific All 0s None
Direct brodacast address Specific All 1s Destination
Limited broadcast address All 1 All 1s Destination
Loopback address 127 Any Destination

Network address: 일반 호스트에는 붙일 수 없는 네트워크 주소.

Direct brodacast address: 특정 네트워크 내 모든 호스트에게 전달.

Limited broadcast address: 255.255.255.255로 인터넷 모든 호스트에게 전달. 많은 문제가 생길 수 있으므로 사용 불가능함. 대신 송신자가 속한 네트워크의 모든 호스트에게 전송한다는 의미로는 쓰일 수 있음.

Loopback address: 자기 자신의 주소로 보통 테스트에 쓰임.

 

따라서 실제 사용 가능한 주소는 항상 {할당 받은 주소 개수 - 2}

 

3.2 인터넷 주소 할당 기구

ISOC IETF IRTF ICANN IANA KRNIC

초기 인터넷 개발

인터넷 네트워크 관련 엔지니어 또는 교수들의 자발적 모임.

인터넷 프로토콜 표준화 기구

IP, TCP, HTTP 등

인터넷의 실질적인 사용을 위한 연구.

미래 산업(IoT 등)

 

전송 계층의 포트값이나 주소의 표준화 및 분배.

산하기구: IANA

전세계 모든 IP 주소 배분 총괄.

대륙별 주소 할당 기구 존재

 

우리나라의 경우

: APNIC의 KRNIC

국내 IP 주소 할당.

한국전산원 담당이었으나 이전됨.

 

현재 주소 고갈로 인해 할당 어려움.

 

3.3 DHCP(동적 호스트 구성)

- Dynamic Host Configuration Protocol

- 동적으로 호스트의 네트워크 정보를 구성함.

- IP주소, 마스크, 라우터 주소, DNS 서버 주소 등

- 응용 계층(Application)에서 동작함.(UDP/IP)

- 기능적으로는 네트워크 계층에 속함.

 

DNS 서버

- https://~와 같은 DNS 주소의 실제 IP주소를 알려주는 서버. 

- 주소 풀을 가지고 있음.

- 클라이언트 요청에 따라 적절하게 IP주소 할당.

- 더이상 사용하지 않으면 반환. 

 

DHCP 사용 목적 

- 효율적인 네트워크 설정 및 관리

- 주소를 공유함으로써 NAT 기능 연동.

 

DHCP 동작 관련 내용 링크 추가 예정

3.4 NAT(네트워크 주소 변환)

하나의 공인 주소를 여러 호스트가 나누어 사용하는 기법. 내부 망 호스트들에게는 사설 주소를 할당함. 내부 망의 호스트들이 외부 시스템에 접속할 경우에는 NAT 서버(라우터)가 사설 주소를 공인 주소로 변환시켜 줌. 

 

- Natwork Address Translation.

- 주소 고갈 문제를 해결하기 위함.

 

사설 주소(private address)

- 내부 네트워크에서만 사용.

- 사설 주소는 보안성이 좋음.

- 예를 들어 ATM은 인터넷 접속이 필요없고 보안이 중요한 예 중 하나.

비클래스 종류 주소 범위
A Class 10.0.0.0 ~ 10.255.255.255(2^24개)
B Class 172.16.0.0 ~ 172.31.255.255(2^20개)
C Class 192.168.0.0 ~ 192.168.255.255(2^16개)

 

NAT 테이블

NAT 서버에서 사설주소와 외부 공인주소의 변경 작업(Port Forwarding)에 필요함. 

 

※ IP: 호스트를 구별하기 위한 네트워크 계층의 논리 주소

※ Port: 프로세스 구별을 위한 전송 계층의 주소(일반적으로 16bit 정수)

댓글