ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • IP Address
    Tech/Network 2020. 4. 21. 21:23

    What is IP/IP Address


    IP는 Internet Protocol의 약자로, 기기 간 정보를 주고 받기 위한 네트워크 통신을 할 때 사용하는 프로토콜이다. 또한, IP Address는 그러한 통신을 주고 받기 위해 필요한 기기들의 주소를 의미한다. 

     

    예를 들어, 특정 사이트에 접근할 때 HTML/CSS/JS를 비롯한 여러 파일들을 받아와야 하는데. 요청은 어느 주소로 보낼 것이며, 응답은 어느 주소로 받아야할지 알아야하는 것이 아닌가. 따라서 IP Address는 배달지 주소의 역할을 한다고 볼 수 있다.

     

    또한, IP Address는 IPv4와 IPv6로 나누어지는데, IPv4는 3자리 숫자가 4마디로 표기되는 방식으로 총 2^32개 만큼의 IP 주소를 갖게 된다. 2^32개만 해도 충분히 많다고 생각할 수 있지만. 점점 IP 주소 고갈에 대한 문제가 발생하면서 IPv6가 고려되기 시작했다. IPv6는 IP의 주소 길이가 128bit로 늘어난 형태이다. 따라서, 2^128이라는 어마어마한 양의 IP 주소를 사용할 수 있게 한다.

     

    하지만, IPv4와 IPv6는 전혀 다른 체계이기에 호환도 어렵고, 대중적인 인식도 그저 그런 양상이라 잘 쓰이진 않는다. 실제로 구글 사용자의 IPv6 통계를 보면, 전 세계적으로 IPv6의 사용률은 30% 근처를 선회하는 것을 볼 수 있다. 둘을 호환하는 여러 방법들이 나오고는 있지만. 아직까지는 IPv4를 사용 함에 있어서 불편한 점도 없으니 정말로 IPv4가 동나야지만 IPv6를 사용할 것 같다. 언제 올지 궁금하다. 무튼. 이번 포스팅에서는 IPv4에 대해 다루어 보고자 한다.

     

    IP Address


    IP Address는 다음과 같이 구성되어 있다. 4마디로 표기되어 있으며, 각 마디를 옥텟(Octet)이라 부른다. 아래의 주소 체계는 우리가 보는 것과는 달리 내부적으로 32bit로 처리가 된다. 따라서 0.0.0.0(00000000.00000000.00000000.00000000) ~ 255.255.255.255(11111111.11111111.11111111.11111111)의 주소를 가지게 된다.

     

    IPv4

    그렇다면, CMD 창을 통해 내 IP Address를 확인해 보자. 명령 프롬프트 실행  → 커맨드에 'ipconfig' 입력을 통해 확인할 수 있다.

    IP Address는, 192.xxx.xxx.xxx으로 확인된다. 하나의 IP Address는 Network ID와 Host ID로 구분되어 있는데, Network ID란, 하나의 조직 및 그룹으로서 Host들을 더 쉽게 관리하기 위해 Network의 범위를 지정해 만든 것이다. Host ID는 호스트들을 개별적으로 관리하기 위해 사용하게 되었다.

     

    그렇기에, 한 네트워크 안에서는 Network ID가 같아야 통신이 가능하다. 예를 들어, 192.xxx.xxx.xxx와 10.10.10.1은 서로 통신이 불가능하고, 192.xxx.xxx.xxx과 192.yyy.yyy.yyy는 통신이 가능하다. 또, 서로 Network ID와 Host ID가 같을 경우에는 서로 충돌하므로 통신 불가능하다.

     

    *추가적으로, 각 네트워크의 첫 번째 IP Address는 네트워크 이름으로 사용되므로 쓸 수 없고, 가장 마지막 주소는 Broadcast Address로 사용되므로 마찬가지로 사용 불가능하다(Broadcast Address란, 해당 네트워크에서 방송용으로 사용함. 해당 네트워크에 속한 모든 장비에게 메시지를 보낼 때 사용)

     

    그렇다면, IP Address에서 Network ID와 Host ID를 어떻게 알아낼 수 있을까? 바로, IP Class를 사용하여 알 수 있다.

    IP Class


    IP Class는,  A/B/C/D/E Class로 나누어 Network ID와 Host ID를 구분하게 된다.

     

    A 클래스의 경우, 대규모 네트워크 환경에 사용되며, IP Address의 4마디 중 첫 번째 마디의 숫자가 0~127까지 사용된다. B 클래스의 경우, 중규모 네트워크에 사용되며, 128~191까지 사용 가능하고, C 클래스는 소규모 네트워크 환경에 적용되는 것이므로 192~223까지 사용된다. 실제로 사용되는 것은 A/B/C 클래스이며, 나머지 D 클래스는 멀티캐스트용, E는 연구 및 개발용 IP 주소 혹은 미래에 사용하기 위해 남겨 놓은 것으로 일반적인 용도로 사용되진 않는다.

      최상위 bit ~ 다음 클래스 최상위 bit 까지의 숫자 이론적 IP 주소 범위
    A Class 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx Network/Host 0 ~ 127 (0.0.0.0 ~ 127.255.255.255)
    B Class 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx Network/Host 128 ~ 191 (128.0.0.0 ~ 191.255.255.255)
    C Class 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx Network/Host 192 ~ 223 ( 192.0.0.0 ~ 233.255.255.255)
    D Class 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx Network/Host 224 ~ 239 ( 224.0.0.0 ~ 239.255.255.255)
    E Class 11110xxx.xxxxxxxx.xxxxxxxx.xxxxxxxx Network/Host 240 ~ 255 (240.0.0.0 ~ 255.255.255.255)

    자, 그러면 IP Class를 사용해 IP Address를 구분해 보도록 하자.

     

    예를 들어, 192.168.43.179라는 주소를 구분하자면, 클래스는 C 클래스이고, Network ID는 192.168.43.0, Host ID는 192.168.43.179가 된다. 위의 표를 참고하면 쉽게 알아낼 수 있다.

    * 참고로, 네트워크의 범위가 커질 수록 호스트 주소의 범위는 작아지는 반비례 관계를 지닌다.

     

    그러나, IP Class의 경우 고정구간으로 낭비가 많아 비효율적이다. 극단적인 예를 들자면, A 클래스는 하나의 네트워크에 1,600만 개나 되는 Host에 IP를 할당할 수 있다. 그렇기에 굉장히 큰 규모의 국제적인 기업이나 단체여야만 할 것인데, 과연 1,600만 개의 네트워크 장치를 사용하는 단체가 있을지 의문이다. 이처럼, IP Class는 비효율적이기에 네트워크 장치들의 수에 따라 유동적으로 사용하는 서브넷(Subnet)이 고안되었다.

     

    서브넷(Subnet)


    서브넷이란, 한 개의 네트워크를 여러 개의 서브넷으로 분할하는 것을 의미한다. 우선, 서브넷에 대해 알기 위해서는 넷마스크가 무엇인지 알아야 한다.

     

    넷마스크란, Network ID 부분의 bit를 1로 치환한 것을 말한다. 예를 들어, 192.168.43.179에서 Network ID는 192.168.43.0이고, Host ID가 179라면, 넷 마스크는 바로, 255.255.255.0(1111.1111.1111.0000)이다. 즉, IP Address와 AND 연산을 하게되면 Network ID를 얻을 수 있게하는 것이다.

     

    그렇다면, 한 개의 네트워크를 여러 개로 분할해보면서 개념을 익혀보도록 하자.

     

    서브넷의 표기법은 두 가지가 있는데, 여기서는 CIDR 표기법을 사용할 것이다.

    - 192.168.0.1/255.255.255.0(10진수 표기법)

    - 192.168.0.1/24(CIDR : Classless Inter Domain Routing 표기법) * /24 → 2^(32-24)는 서브넷별 할당 가능 호스트 숫자

     

    192.168.10.123/26을 계산해 보면, /26은 서브넷 마스크가 26bit이기에 255.255.255.192(11111111.11111111.11111111.11000000 Network ID/Host)가 된다. 따라서 호스트에 할당 가능한 IP는 64개(2^6)씩이며, 범위는 [0~63], [64~127], [128~191], [192~255]로 가능하다. 여기서 염두해야할 것은, 각 네트워크의 IP 범위 중에서 가장 첫 번째 주소는 Network ID로 사용되고, 마지막 주소는 Broadcast Address로 사용되기에 호스트에 할당 불가능하므로 각 서브넷마다 할당 가능한 호스트는 62개 씩이다.

    * 서브넷 마스크의 형태는 IP Address와 똑같이 32bit의 2진수로 되어 있으며, 8bit 마다 옥텟으로 구분한다. 즉, IP Address와 같은 형태를 지님. 하지만, 역할은 다름. IP Address와 서브넷 마스크를 AND 연산하기 위해 같을 뿐임.

     

    이러한 서브넷팅 방식을 통해, IP Address를 새롭게 그루핑하고, 그룹들을 계층적으로 관리함으로써 기존의 IP Class 방식에 비해 효율적이고 유연하게 IP Address 공간의 운용을 가능케 했다. 그러나 이러한 방법도 본질적인 부족 문제를 해결하는 것은 아니다.

     

     

    참고자료


    - Network 기초 - IP/Netmask/Subnet/CIDR

    - 서브넷 마스크와 서브넷팅 계산법

    - IP주소 A,B,C, 클래스 및 서브넷에 대한 이해

    - CIDR(사이더) 기법에 대한 정리

    - IP, IP 주소, 클래스 분류 확실하게 짚고 넘어가자

    - IP Address

    'Tech > Network' 카테고리의 다른 글

    무선 네트워크에 대해서  (0) 2021.01.21
    인트라넷이란 무엇일까?  (0) 2020.12.27
    인터넷이란 무엇일까(2)  (0) 2020.12.27
    인터넷이란 무엇일까(1)  (0) 2020.12.23
    🏁 네트워크 공부 시작 🏁  (0) 2020.12.21

    댓글 0

Designed by Tistory.