본문 바로가기

Library/Computer Network

IP Addressing

인터넷 프로토콜은 데이터그램(Datagram)의 형태로 호스트들 사이에 데이터를 옮긴다. 각각의 데이터그램은 헤더의 도착지 주소에 들어있는 줏로 배달된다. 도착지의 주소는 네트워크와 네트워크 사이에서 유일하게 표현되는 32비트 크기를 가지는 주소값이다.

IP 주소는 네트워크 부분과 호스트 부분을 가지지만, 이들 부분의 포맷은 모든 IP 주소에서 동일하지는 않다. 즉, 네트워크를 지정하는데 사용되는 주소 비트와 호스트를 지정하는데 사용되는 수는 주소의 prefix 길이에 따라 변한다.

prefix 길이가 결정되는 데는 2가지 방법이 있다. 주소 클래스를 사용하거나 CIDR 주소 마스크를 사용하는 방법이 있다. 문제가 되는 IP 주소 공간 고갈 문제는, 32비트 주소 체계라는 근본적인 문제 때문에 일어난 일이지만, 클래스 지정에 따른 낭비되는 공간 때문이기도 하다.


IP 주소의 첫번째 비트가 0이면, A 클래스 네트워크의 주소이다. A 클래스 주소의 첫번째 비트는 주소 클래스를 지정한다. 다음 7비트는 네트워크를, 나머지 24비트는 호스트를 나타낸다. A 클래스의 네트워크의 수는 128보다 적지만, 각 A 클래스 네트워크는 수백만의 호스트로 구성될 수 있다.

주소의 처음 2비트가 10이면, B 클래스 네트워크 주소이다. 처음 2비트는 클래스를 결정하며, 다음 14비트는 네트워크를 지정하고, 나머지 16비트는 호스트를 나타낸다. B 클래스 네트워크의 수는 수천 개이며, 각 B 클래스 네트워크를 수천의 호스트를 가질 수 있다.

주소의 첫 3비트가 110이면 C 클래스 네트워크 주소이다. C 클래스 주소에서, 처음 3비트는 클래스 지정자이다. 다음 21비트는 네트워크 주소이고, 마지막 8비트는 호스트를 지정한다. 수백만 개의 C 클래스 네트워크가 존재하지만, 각 C 클래스 네트워크는 254보다 적은 수의 호스트로 구성된다.

주소의 처음 4비트가 1110이면, 멀티 캐스트 주소를 나타낸다. 이 주소들은 때때로 D 클래스 주소라고 불리기도 하지만, 이것들이 실제로 특정 네트워크를 지정하지는 않는다. 멀티캐스트 주소는 컴퓨터들의 그룹들을 한꺼번에 주소 지정할 때 사용된다. 공동의 네트워크를 공유하는 컴푸터들의 그룹과 달리, 멀티캐스트 주소들을은 화상 회의 같은 공동의 애플리케이션을 공유하는 컴퓨터들의 그룹을 지정한다.

주소의 첫 4비트가 1111이면, 특별히 예약된 주소이다. 이 주소들은 때때로 E 클래스 주소라고 불리기도 하지만, 실제로 특정 네트워크를 지정하지는 않는다. 이 범위에서는 현재 지정된 수는 없다.


인터넷에 존재하는 모든 네트워크의 전체 주소를 지원하는 IP 주소는 TCP/IP 프로토콜 스택의 강력한 기능의 하나이다. 그러나 IP 주소의 클래스 구조는 취약점을 가지고 있다. TCP/IP 설계자들은 오늘날의 네트워크의 엄청난 규모를 예견하지 못했다. TCP/IP가 설계되고 있을 때는, 네트워킹은 실제 컴퓨터 시스템을 감당할 수 있는 큰 조직에게만 한정되어 있었다. 모든 데스크탑의 강력한 UNIX 시스템에 대한 생각은 존재하지도 않았다. 그때는, 주소를 클래스로 나누는 것이 실제로 사용할 수 있는 호스트 주소를 줄이는 것임에도 불구하고, 32비트 주소가 너무나도 커 보여서 라우터에 걸리는 처리 부하를 줄이기 위해 클래스로 나누었다. 예를 들어, 큰 네트워크에 6개의 C 클래스 주소 대신에 B 클래스 주소를 할당하는 것이 라우터에 걸리는 부하를 줄여주었다. 왜냐하면 라우터는 전체 기관을 위해 하나의 경로만 가지고 있으면 되었기 때문이다. 그러나 B 클래스 주소를 받은 기관은 64,000 대의 컴퓨터를 가지고 있지 않았다. 그러므로 기관에서 사용 가능한 호스트 주소의 대부분은 전혀 사용되지 않는다.

클래스 구조의 주소 설계는 인터넷의 급속한 성장에 의해 결정적으로 주춤했다. 모든 B 클래스 주소를 금방 다 써버릴 것 같았다. 이를 방지하기 위해 클래스 구조 없이 IP 주소를 보는 새로운 방법이 개발되었다.

클래스 규칙에 따라 주소를 평가하는 것은 네트워크 번호의 길이를 8, 16, 혹은 24비트(1, 2, 혹은 3바이트)로 제한하게 된다. 그러나 IP 주소는 실제로 바이트 중심은 아니다. 그것은 32개의 연속된 비트들이다. 주소의 네트워크 부분과 호스트 부분을 해석하는 더 탄력적인 방법은 비트 마스크를 가지고 하는 것이다. 주소 비튼 마스크는 다음과 같은 방법으로 동작한다. 마스크의 비트가 켜져 있으면, 주소의 동일한 비트는 네트워크 비트로 해석된다. 그리고 만약 마스크의 비트가 꺼져 있으면, 그 비트는 주소의 호스트 부분에 속한다. 예를 들어, 195.4.12.0이란 주소가 C 클래스 주소로 해석된다면, 처음 24비트는 네트워크 번호이고 다음 8비트는 호스트 주소이다. 이를 나타내는 네트워크 마스크는 255.255.255.0으로 24비트는 켜져 있고 8비트는 꺼져 있다. 전통적인 클래스 구조로로부터 나온 비트 마스크를 default mask 또는 natural mask라고 부른다. 그러나 비트 마스크를 사용하면 더 이상 주소 클래스 구조에 제한 받지 않는다. 255.255.0.0이란 마스크는 195.4.0.0에서부터 195.4.255.255까지의 모든 주소를 포함한다. 실제로, C 클래스 주소 공간에서 B 클래스 네트워크만큼 큰 네트워크 번호를 생성한다. natural 마스크보다 더 큰 네트워크를 만들기 위해 비트 마스크를 사용하는 것을 supernetting이라 부르고, 목적지 네트워크를 결정하기 위해 주소 클래스 대신에 마스크를 사용하는 것은 CIDR(Classless Inter-Domain Routing)라고 부른다.


Quotes from TCP/IP Network Administraion 2nd, Craig Hunt