본문 바로가기

Study/Networking

7.4 IPv4 - (1)

728x90

인터넷에서 네트워크층 프로토콜은 여러 버전이 개발되었지만 현재는 IPv4와 IPv6 2개의 버전만 사용되고 있다.

1. IPv4 주소 지정

IPv4 주소는 32비트 주소로 라우터나 호스트의 인터넷 연결을 범용적이고 유일하게 만들어 준다. IPv4 주소는 각 인터넷으로의 연결을 하나씩 유일하게 정의한다. 만약 하나의 장치가 두 네트워크를 통해 인터넷으로 2개의  연결을 가지고 있는 경우, 2개의 IPv4주소를 가지게 된다.

 

- 주소 공간

주소 공간(address space)은 프로토콜에서 사용 가능한 전체 주소의 수 이다. 만약 프로토콜이 주소를 정의하기 위해 b비트를 사용한다면 주소공간은 2^b가 된다. IPv4는 32비트의 주소를 사용하므로 주소 공간은 2^32 혹은 4,294,967,296(약 40억개 이상)이 된다.

 

그러나 이런 IPv4에는 치명적인 문제점이 있다. 전 세계 인구가 약 75억명인 현재 각각의 사람마다 IP주소를 부여해 준다면 주소가 고갈되는 현상이 발생한다. 이러한 해결을 위해 장기적으로는 IPv6가 보급되고 있고 단기적으로는 주소 최적화(Classless Addressing), DHCP(Application Protocol), NAT과 같은 기법을 사용하고 있다.

- 표기법

IPv4 주소를 나타내기 위히 2진수 표기법, 점 10진수 표기법, 16진수 표기법을 사용할 수 있다.

 


  • 10진수 에서 2진수 변환

  • 10진수에서 8진수 변환

이는 10진수를 2진수로 변환 후 8진수로 변환하여야 한다.

예를들어 27을 변환한다고 했을 때

27의 2진수 = 011011

이를 3비트씩 쪼개어주면 011 | 011 = 33 이 8진수가 된다.

  • 10진수에서 16진수 변환

16진수 또한 10진수를 2진수로 변환 후 16진수로 변환하여야 한다.

예를 들어 27을 변환한다고 했을 때

27의 2진수 = 00011011

이를 4비트씩 쪼개어 주면 0001 | 1011 = 1B 가 16진수가 된다.

 

IPv4 주소의 세 가지 서로 다른 표기법


- 주소 지정에서 계층 구조

32비트 IPv4 주소는 단지 두 부분으로 구분되는 계층 구조이다. 주소의 첫 번째 부분은 접두사(Prefix)로 네트워크를 정의하고, 주소의 두 번째 부분은 접미사(Suffix)로 노드를 정의한다.

- 클래스 기반의 주소 지정

전체 주소 공간은 5개의 클래스(클래스 A, B, C, D, E)로 구분된다. 이 기술을 클래스 기반 주소 지정(Classful addressing)이라 한다.

클래스 A에서 네트워크 길이는 8비트 이지만 0으로 고정된 첫 번째 비트가 클래스를 지정하기 때문에 Prefix로 7비트만 사용 가능하다. 이는 전세계에서 오직 2^7 = 128개의 네트워크만 클래스 A의 주소를 가질 수 있음을 의미한다.

 

클래스 B에서 네트워크 길이는 16비트이지만 2비트로 고정된 처음 두 비트가 클래스를 지정하기 때문에 Prefix로 14비트만 사용가능하다.

 

클래스 C는 처음 3비트가 클래스를 지정하므로 Prefix로 21비트만 사용가능하다.

클래스 D는 Prefix와 Suffix로 구분되지 않고 멀티캐스트 주소로 사용된다. 2진수로 1111로 시작하는 모든 주소는 클래스 E에 포함된다. 클래스 E도 D와 마찬가지로 구분되지 않고 예약된 주소이다.

 

하지만 이러한 클래스 기반의 주소가 더 이상 사용되지 않는 이유는 주소 고갈 때문이다.

 

- 클래스 없는 주소 지정(Classless Addressing)

인터넷의 성장에 따라 장기적인 관점에서 해결책으로 더 큰 주소 공간이 필요 했다. 이미 장기적인 관점의 해결책으로 IPv6가 고안되었지만 단기적인 관점에서도 해결책이 고안되었다. 그 첫번째로는 클래스 없는 주소 지정방식 의 IPv4주소가 사용된다. 즉, 주소 고갈을 해결하기 위해 클래스 권한이 제거되었다.

 

클래스 없는 주소 지정에서 전체 주소공간은 가변 길이의 블록으로 나누어 진다. 

 

- 접두사 길이: 슬래시 표기법

클래스 없는 주소 지정에서 접두사의 길이가 주소에 포함되지 않기 때문에 접두사의 길이를 따로 주어야 한다. 이 경우 접두사의 길이 n은 슬래시(/)로 구분하여 주소에 추가된다. 이 표기법은 비공식적으로는 슬래시 표기법이라 불리고 공식적으로는 클래스 없는 인터도메인 라우팅 혹은 CIDR이라 한다.

 

즉 n이 Prefix의 길이가 된다.


167.199.170.82/27이 클래스 없는 주소로 주어졌다. 네트워크 내 주소 수는 2^32-27 = 2^5 = 32이다.

 

첫 번째 주소는 처음 27개의 비트를 유지하고 나머지 비트를 0으로 바꾸어 찾을 수 있다.

마지막 주소는 처음 27개의 비트를 유지하고 나머지 비트를 1로 바꾸어 찾을 수 있다.


- 네트워크 주소(Network address)

네트워크 주소인 첫 번째 주소는 패킷을 목적지로 라우팅하는데 사용되기 때문에 특히 중요하다. 어떤 발신지 호스트에서 라우터로 패킷이 도착하면 어느 인터페이스를 통해 패킷을 전송해야 하는지 라우터는 알아야 한다. 패킷이 네트워크에 도착할 때 나중에 설명한 다른 방법을 통해 패킷은 목적지 호스트에 도착한다.

- 서브네팅(Subnetting)

서브네팅을 사용하여 더 많은 계층을 만들 수 있다. 일정 범위의 주소를 가진 기관(혹은 ISP)은 범위를 부 범위로 나누고, 이를 서브네트워크(혹은 서브넷)에 할당할 수 있다.

예를들어 1024개의 IP를 할당 받았을 때 주소를 알뜰하게 나누어 준다.

 


14.24.74.0/24로 시작하고 14.24.74.255/24로 끝나는 주소 블록을 할당받은 기관이 있다. 기관 3개의 서브넷을 사용하여 주소를 각각 10개, 60개, 120개의 서브블록으로 나누려고 한다.

 

이 블록에는 2^32 - 24 = 2^8 = 256개의 주소가 있다. 첫 번째 주소는 14.24.74.0/24이고 마지막 주소는 14.24.74.255/24이다.

서브블록을 지정할 때 가장 큰 것을 먼저 하고 작은 것을 나중에 한다.

 

1. 가장 큰 서브블록의 주소 수인 120은 2의 거듭제곱이 아니므로 128개의 주소를 할당해야 한다. 이 서브넷의 서브넷 마스크는

32 - 7 = 25로 구할 수 있다. 이 블록의 첫 번째 주소는 14.24.74.0/25이고, 마지막 주소는 14.24.74.127/25이다.

 

2. 두 번째로 큰 서브블록의 주소 수는 60이지만 2의 거듭제곱이 아니므로 64개의 주소를 할당한다. 이 서브넷의 서브넷 마스크는 32 - 6 = 26이므로 이 블록의 첫 번째 주소는 14.24.74.128/26이고, 마지막 주소는 14.24.74.191/26이다.

 

3. 가장 작은 서브블록의 주소 수는 10이지만 2의 거듭제곱이 아니므로 16개의 주소를 할당한다. 이 서브넷의 서브넷 마스크는 32 - 4 = 28이므로 이 블록의 첫 번째 주소는 14.24.74.192/28이고, 마지막 주소는 14.24.74.207/28이다.


- DHCP

주소 블록이 조직에 할당된 후 네트워크 관리자는 개별 호스트 또는 라우터에 주소를 수동으로 할당할 수 있다.

그러나 조직의 주소 할당 DHCP(Dynamic Host Configuration Protocol)를 사용하여 자동으로 수행할 수 있따.

DHCP는 클라이언트-서버 방식을 사용하는 응용프로그램 계층 프로그램으로, 실제로 네트워크 계층에서 TCP/IP를 지원한다.

클라이언트 PC에서 Source Address를 가지고 있지 않다가 DHCP 서버에서 주소를 부여해 클라이언트PC의 IP를 지정해준다.

 

- NAT

대부분의 경우 소규모 네트워크의 일부 컴퓨터만 동시에 인터넷에 액세스할 수 있어야 한다. 프라이빗 주소와 범용 주소간의 매핑을 제공하는 동시에 가상 프라이빗 네트워크를 지원할 수 있는 기술은 NAT(네트워크 주소 변환)이다.

이 기술을 통해 사이트는 내부 통신을 위해 개인 주소 집합을 사용하고 나머지 국가와의 통신을 위해 글로벌 인터넷 주소 집합을 사용할 수 있다.

위의 그림과 같이 내부 인터넷에서는 지정해준 사설IP들이 있지만 내부 인터넷을 나가 외부로 나갈때에는 인정되는 또다른 IP로 변경한다. 이때 라우터가 인터넷들의 출입을 관리한다.

위의 그림에서는 172.18.3.1이 사설IP이여서 안에서만 의미가 잇지만 라우터를 거쳐 밖으로 나가게 되면 200.24.5.8이라는 IP가 부여가 된다. 이는 밖으로 나가는 인터넷에게 외부에서 허용되는 global IP를 부여해준다.

 

이러한 방식의 단점은 global IP가 한개라면 나가는 모든 패킷이 IP하나밖에 가지지 못하여 해당 global IP가 부여되어 있으면 다른 패킷들이 나가질 못한다.

728x90

'Study > Networking' 카테고리의 다른 글

7.4 IPv4 - (3)  (0) 2023.04.14
7.4 IPv4 - (2)  (0) 2023.04.13
7.3 Performance  (0) 2023.04.11
7.2 Packet Switching  (0) 2023.04.11
7.1 Services  (0) 2023.04.11