본문 바로가기
프로그래밍/네트워크

IP 주소체계

by 완소루피 2017. 10. 28.
728x90
반응형

IP가 무엇인가요 ?

 IP주소의 사용이유는 각각의 Host들을 구분하기위해 사용되며, 부여받은 IP는 자기 고유의 IP가 되기에 다른 사람이 사용하면 안됩니다. 하지만 현재 사용되는 IPv4방식의 IP 수는 한정되어 있기에 모든 Host에게 고유의 IP를 할당하지 못합니다. 그렇다고 하여서 하나의 호스트에 하나의 IP만 사용되는건 아닙니다. 이는 한 컴퓨터에 여러 개의 NIC(Network Interface Card / 흔히 랜카드라 불리는 장치)를 장착하여 여러 개의 IP를 사용하는 형태를 생각하시면 쉽겠습니다. 대표적인 네트워크 장비로 라우터를 생각하셔도 되겠습니다.

 일반 가정같은 경우에는 PC의 '네트워크 설정'에서 확인하실 수 있는  TCP/IP Protocol을 보시면 아시겠지만 고정 IP가 아닌 유동 IP로 설정이 되어 있는데, 이는 평범한 가정에서 사용하는 PC의 경우 전원이 Off되어 IP 주소가 필요없는 경우가 대부분이기에 모든 기기에 IP를 부여하게 되면 심각한 IP 부족현상이 나타나기 때문입니다. 그래서 DHCP Server를 이용하여 전원이 켜져있는 컴퓨터에게만 IP를 할당하며, 컴퓨터가 Off되면 IP를 회수하게 됩니다.
Windows TCP/IPv4 설정 창
< Windows TCP/IPv4 설정 창 >


IP 구조

 IP Address는 32bit(4byte) 길이로 구성된 논리적인 주소체계로서 형태는 OOO.OOO.OOO.OOO (ex. 184.51.65.127)로 표기합니다. 여기서 '.(dot)'으로 구분된 Octet(8bit / 1byte) 4개가 조합되어 IP주소를 나타나게 됩니다. 그런데 실제 IP는 2진수로 표기되어 00000000.00000000.00000000.00000000 이와같은 형태로 구분되어 사람이 이해하고 외우기 어렵기에 10진수로 나타내는 표기법을 사용하는 것입니다. IP주소의 이러한 표기법은 dot-decimal notice 또는 dotted-quad sequence 라고 부릅니다.



 만약 2진수를 계산하실 줄 아신다면, 8bit가 전부 '1'이라고 가정하였을 때 255라는 숫자가 나온다는 것을 알 수 있으실 겁니다. 따라서 각 옥탯 별로 IP는 0~255까지의 범위를 가지게 되며, 부여할 수 있는 IP의 개수는 256개가 되는 것입니다. 그리고 전체 IP의 수는 4,294,967,296개로 약 42억개 정도로 한정되어 있습니다.

물리적인 주소 체계

 앞서 IP Address가 논리적 주소체계라고 설명드렸습니다. 반대로 물리적 주소체계도 존재하며, 흔히 MAC (Media Access Control) 주소라고 말합니다. 다른 이름으로는 Physical Address라고도 합니다. 

 이러한 MAC address는 LAN(Local Area Network) 또는 Ethernet 이라 불리는 망에서 통신을 하기 위하여 사용됩니다. LAN이라는 이름에서 알 수 있듯이 MAC은 자신이 속한 네트워크 안에서만 통신이 됩니다. 이후 네트워크를 빠져나가는 장치인 Router를 지나게 되면 IP를 이용하여 통신하게 됩니다. 


IP 주소의 NetworkID와 HostID

 하나의 IP주소에는 Network ID와 Host ID가 존재하고 있습니다. 먼저 Network ID는 인터넷 상에서 모든 Host들을 전부 관리하기 힘들기에 한 Network의 범위를 지정하여 관리하기 쉽게 만들어 낸 것입니다. 그리고 Host ID는 호스트들을 개별적으로 관리하기 위해 사용하게 된 것입니다. 따라서 우리가 인터넷을 사용할 때 Routing으로 목적지를 알아내고 찾아가는 등의 역할을 할 때에는 NetworkID와 HostID가 합쳐진 IP주소를 보게 됩니다. 서브넷 마스크에 대해 알고자 하실 때에는 이 부분이 매우 중요합니다.

 Subnet mask를 활용하여 Network ID를 올리거나 낮출 수 있게 됩니다. 반대로 Host ID는 줄어들거나 늘어날 수 있게 됩니다. 라우터끼리의 통신에서는 IP를 사용하기에 Network ID와 Host ID보고 목적지가 어떤 네트워크에 속하는지 알 수 있게 됩니다.

 쉬운 예를 들어보겠습니다. 홍대리는 집에 장롱이 필요하여 가구회사에 주문을 하였습니다. 장롱을 가져다 주는 배달원은 주소를 보고 홍대리의 집이 '부산광역시 해운대구 우동 792번지'라는걸 확인하고 도착하였습니다. 그런데 배달원은 집까지 가져왔지만 어느 곳에 두어야 할 지 모릅니다. 이 때 홍대리가 작은 방의 한쪽 구석을 가리키며 정확한 위치를 알려주었습니다. 이 예시를 보면 배달원의 역할은 최종 목적지가 속한 지역(집)까지 전달하는 Network ID에 해당합니다. 그리고 홍대리는 자신의 지역(집)에서 최종적으로 장롱을 두어야 하는 위치를 안내하여 주기에 Host ID의 역할로 보시면 되겠습니다. 나름 생각하고 만들었는데 적절한 비유인지는 모르겠으나 이 예시를 통해 이해에 도움이 되었으면 좋겠습니다.

IP Class 개념

 Network ID와 Host ID를 설명드린 이유는 바로 IP Class의 개념을 알기 이전에 필요한 내용입니다. IP Class의 경우 A, B, C, D, E Class로 나누어 Network ID와 Host ID를 구분하게 됩니다. 

 A Class의 경우 처음 8bit(1byte)가 Network ID이며, 나머지 24bit(3byte)가 Host ID로 사용됩니다. 비트가 0으로 시작하기에 네트워크 할당은 0~127입니다 . 즉, 128 곳에 가능하며, 최대 호스트 수는 16,777,214개입니다. 

 B Class의 경우 처음 16bit(2byte)가 Network ID이며, 나머지 16bit(2byte)가 Host ID로 사용됩니다. 비트가 10으로 시작하기에 네트워크 할당은 16,384 곳에 가능하며, 최대 호스트 수는 65,534개입니다. 

 C Class의 경우 처음 24bit(3byte)가 Network ID이며, 나머지 8bit(1byte)가 Host ID로 사용됩니다. 비트가 110으로 시작하기에 네트워크 할당은 2,097,152 곳에 가능하며, 최대 호스트 수는 254개입니다.

아래의 표를 보시면 더 빠르게 이해하실 수 있습니다.



 그럼 D Class와 E Class에 대해 설명드리도록 하겠습니다. 실제 Network에서 사용되는 Class는 A, B, C Class이며, D Class는 Multicast(멀티캐스트), E Class는 미래에 사용하기 위해 남겨둔 것으로 예약되어 있습니다. 그리고 D와 E Class의 경우 실제 사용되는 경우가 거의 없습니다.

Class 구분하는 방법

 각각의 Class를 구분하는 방법은 의외로 간단하게 제일 첫 번째 옥텟(Octet)으로 구분하실 수 있습니다. Octet은 위에서도 잠깐 언급이 된 내용으로 2진수 8개(8bit)를 묶음으로 표현하는 것을 Octet이라고 합니다. 만약 IP가 164.58.94.125라고 할 때 첫 번째 Octet은 164가 되는 것입니다. 

 IP 주소에서 쓸  수 있는 숫자의 범위는 0~255로 되어 있기에 첫 번째 Octet에서 0~255까지의 숫자를 5개로 나누어서 A, B, C, D, E Class로 구분 되는 것입니다.
  • A Class : 0 ~ 127 (0.0.0.0 ~ 127.255.255.255)
  • B Class : 128 ~ 191 (128.0.0.0 ~ 191.255.255.255)
  • C Class : 192 ~ 223 (192.0.0.0 ~ 233.255.255.255)
  • D Class : 224 ~ 239 (224.0.0.0 ~ 239.255.255.255)
  • E Class : 240 ~ 255 (240.0.0.0. ~ 255.255.255.255)

 숫자로 이루어진 클래스 범위를 무작정 외우기에는 쉽지 않습니다. 그래서 쉬운 방법을 생각해 보았는데 의외로 정말 간단한 방법으로 외우게 되었습니다. 먼저 특징을 말씀드리자면 "주소체계 범위의 각 클래스 시작이 짝수이고 끝이 홀수"라는 것과, "범위가 반으로 나누어지게 된다는 것(n / 2)"입니다.
  1. IP에 입력하는 범위가 256개가 존재한다 (0 ~ 255)
  2. 256부터 2씩 나눈다.
  3. 256 / 2 = 128 - 1 = 127 (A Class 범위 : 0 ~ 127)
  4. 128 / 2 = 64 + 127 = 191 (B Class 범위 : 128 ~ 191)
  5. 64 / 2 = 32 + 191 = 223 (C Class 범위 : 192 ~ 223)
  6. 남은 32의 수는 16씩 나누어서 D Class와 E Class가 가진다.
 또 다른 방법으로는 첫 번째 bit를 알면 됩니다. B클래스를 보신다면 Network ID와 Host ID 둘 다 16bit(2byte) 씩 나눠서 가지고 있습니다. 그런데 할당 가능한 수가 Network ID는 16,384개이고 Host ID는 65,534개로 차이가 납니다. 이는 위에서 잠깐 언급되었는데 각 클래스를 구분하기 위해서 bit를 사용하기 때문입니다. A클래스는 0으로 시작하고, B클래스는 10으로 시작하고, C클래스는 110으로 시작하기에 사용되는 비트만큼 Network ID로 할당 가능한 수가 줄어들게 됩니다.


추가 내용

 마지막으로 특정 IP들은 어떠한 목적에 의해 사용될 수 없습니다. 예를 들어 사설 IP대역이나 Loop Back Address, Network Address, Broadcast Address 등은 어떠한 목적으로 사용되는 IP들이기에 일반적으로 할당하여 사용하실 수 없다는 점을 유의하여 주시면 되겠습니다.



<출처 - http://korean-daeddo.blogspot.kr/2015/12/blog-post_14.html>

728x90
반응형

'프로그래밍 > 네트워크' 카테고리의 다른 글

서브넷 마스크와 서브넷팅 계산  (0) 2017.10.28