웹사이트 검색

네트워킹을 위한 IP 주소, 서브넷 및 CIDR 표기법 이해


소개

네트워킹을 이해하는 것은 인터넷에서 복잡한 환경을 구성하는 기본적인 부분입니다. 이는 서버 간에 효율적으로 통신하고 보안 네트워크 정책을 개발하고 노드를 체계적으로 유지하려고 할 때 의미가 있습니다.

이전 가이드에서 몇 가지 기본 네트워킹 용어를 살펴보았습니다. 해당 가이드를 살펴보고 여기에 제시된 개념에 대해 잘 알고 있는지 확인해야 합니다.

이 기사에서는 네트워크로 연결된 컴퓨터의 설계 또는 상호 작용과 관련된 몇 가지 보다 구체적인 개념에 대해 설명합니다. 특히 IP 주소를 그룹화하기 위한 네트워크 클래스, 서브넷 및 CIDR 표기법을 다룰 것입니다.

IP 주소 이해

네트워크의 모든 위치 또는 장치는 주소 지정 가능해야 합니다. 즉, 미리 정의된 주소 시스템에서 해당 지정을 참조하여 도달할 수 있습니다. 네트워크 계층화의 일반적인 TCP/IP 모델에서는 몇 가지 다른 계층에서 처리되지만 일반적으로 네트워크의 주소를 참조할 때 우리는 IP 주소에 대해 이야기합니다.

IP 주소를 사용하면 네트워크 인터페이스를 통해 네트워크 리소스에 도달할 수 있습니다. 한 컴퓨터가 다른 컴퓨터와 통신하려는 경우 정보를 원격 컴퓨터의 IP 주소로 지정할 수 있습니다. 두 컴퓨터가 동일한 네트워크에 있거나 그 사이에 있는 서로 다른 컴퓨터와 장치가 네트워크를 통해 요청을 변환할 수 있다고 가정하면 컴퓨터는 서로 도달하고 정보를 보낼 수 있어야 합니다.

각 IP 주소는 자체 네트워크에서 고유해야 합니다. 네트워크는 서로 격리될 수 있으며 서로 다른 네트워크 간에 액세스를 제공하기 위해 브리지 및 변환될 수 있습니다. 네트워크 주소 변환(Network Address Translation)이라는 시스템은 패킷이 네트워크 경계를 통과할 때 올바른 목적지로 계속 이동할 수 있도록 주소를 다시 쓸 수 있도록 합니다. 이를 통해 동일한 IP 주소를 여러 개의 격리된 네트워크에서 사용할 수 있으며 올바르게 구성된 경우 서로 통신할 수 있습니다.

IPv4와 IPv6의 차이점

오늘날 시스템에서 널리 구현되는 IP 프로토콜에는 IPv4와 IPv6의 두 가지 개정판이 있습니다. IPv6는 프로토콜의 개선과 IPv4 주소 공간의 제한으로 인해 서서히 IPv4를 대체하고 있습니다. 간단히 말해, 현재 세상에는 IPv4를 통해 사용할 수 있는 주소의 양에 비해 너무 많은 인터넷 연결 장치가 있습니다.

IPv4 주소는 32비트 주소입니다. 주소의 각 바이트 또는 8비트 세그먼트는 마침표로 나뉘며 일반적으로 0~255의 숫자로 표시됩니다. 이러한 숫자는 일반적으로 사람의 이해를 돕기 위해 10진수로 표시되지만 각 세그먼트는 일반적으로 8비트 표현이라는 사실을 표현하기 위해 옥텟이라고 합니다.

일반적인 IPv4 주소는 다음과 같습니다.

192.168.0.5

각 옥텟에서 가장 낮은 값은 0이고 가장 높은 값은 255입니다.

4개의 옥텟이 어떻게 보이는지 더 잘 이해하기 위해 이것을 이진법으로 표현할 수도 있습니다. 가독성을 위해 각 4비트를 공백으로 구분하고 점을 대시로 바꿉니다.

1100 0000 - 1010 1000 - 0000 0000 - 0000 0101

이 두 형식이 같은 숫자를 나타낸다는 것을 인식하는 것은 나중에 개념을 이해하는 데 중요합니다.

IPv4와 IPv6의 프로토콜 및 백그라운드 기능에는 몇 가지 다른 차이점이 있지만 가장 눈에 띄는 차이점은 주소 공간입니다. IPv6는 주소를 128비트 숫자로 표현합니다. 즉, IPv6에는 IPv4 주소의 7.9×1028배 이상의 공간이 있습니다.

이 확장된 주소 범위를 표현하기 위해 IPv6는 일반적으로 4개의 16진수로 구성된 8개의 세그먼트로 작성됩니다. 16진수는 숫자 0~9를 사용하여 숫자 0~15를 나타내고 숫자 a~f는 더 높은 값을 나타냅니다. 일반적인 IPv6 주소는 다음과 같습니다.

1203:8fe0:fe80:b897:8990:8a7c:99bf:323d

압축 형식으로 작성된 이러한 주소를 볼 수도 있습니다. IPv6의 규칙을 사용하면 각 옥텟에서 선행 0을 제거하고 0으로 묶인 그룹의 단일 범위를 이중 콜론(::)으로 바꿀 수 있습니다.

예를 들어 IPv6 주소에 다음과 같은 그룹이 하나 있는 경우:

...:00bc:...

대신 다음을 입력할 수 있습니다.

...:bc:...

두 번째 사례를 보여주기 위해 다음과 같이 여러 그룹이 0인 IPv6 주소에 범위가 있는 경우:

...:18bc:0000:0000:0000:00ff:...

다음과 같이 압축할 수 있습니다(위에서 수행한 것처럼 그룹의 선행 0도 제거).

...:18bc::ff...

주소당 한 번만 이 작업을 수행할 수 있습니다. 그렇지 않으면 전체 주소를 재구성할 수 없습니다.

IPv6이 매일 더 보편화되고 있지만 이 가이드에서는 더 작은 주소 공간으로 논의하기가 더 쉽기 때문에 IPv4 주소를 사용하여 나머지 개념을 탐색할 것입니다.

IPv4 주소 클래스 및 예약 범위

IP 주소는 일반적으로 두 개의 개별 구성 요소로 구성됩니다. 주소의 첫 번째 부분은 주소가 속한 네트워크를 식별하는 데 사용됩니다. 뒤에 오는 부분은 해당 네트워크 내의 특정 호스트를 지정하는 데 사용됩니다.

네트워크 사양이 끝나고 호스트 사양이 시작되는 위치는 네트워크 구성 방식에 따라 다릅니다. 이에 대해서는 잠시 후에 더 자세히 논의하겠습니다.

IPv4 주소는 전통적으로 사용 가능한 IPv4 공간의 세그먼트를 구분하기 위해 A에서 E까지 이름이 지정된 5개의 \클래스\로 나뉩니다. 이들은 각 주소의 처음 4비트로 정의됩니다. IP 주소가 속한 클래스를 식별할 수 있습니다. 이 비트를 보면.

다음은 선행 비트를 기반으로 주소를 정의하는 변환 테이블입니다.

  • 클래스 A
    • 0--- : IPv4 주소의 첫 번째 비트가 "0”이면 주소가 클래스 A의 일부임을 의미합니다. 이는 0.0의 모든 주소를 의미합니다. .0.0에서 127.255.255.255는 클래스 A에 속합니다.

    클래스 B

    • 10-- : 클래스 B에는 128.0.0.0에서 191.255.255.255까지의 모든 주소가 포함됩니다. 이것은 첫 번째 비트에 \1이 있지만 두 번째 비트에 \1이 없는 주소를 나타냅니다.

    클래스 C

    • 110- : 클래스 C는 192.0.0.0에서 223.255.255.255 범위의 주소로 정의됩니다. 이것은 처음 두 비트에 \1이 있지만 세 번째 비트에 \1이 없는 모든 주소를 나타냅니다.

    클래스 D

    • 1110 : 이 클래스는 처음 3비트가 \111\이고 다음 비트가 \0\인 주소를 포함합니다. 이 주소 범위에는 224.0.0.0에서 239.255.255.255까지의 주소가 포함됩니다.

    클래스 E

    • 1111 : 이 클래스는 240.0.0.0255.255.255.255 사이의 주소를 정의합니다. 4개의 "1\ 비트로 시작하는 모든 주소가 이 클래스에 포함됩니다.

    클래스 D 주소는 한 번의 이동으로 패킷을 호스트 그룹에 보낼 수 있는 멀티캐스팅 프로토콜용으로 예약되어 있습니다. 클래스 E 주소는 향후 및 실험용으로 예약되어 있으며 거의 사용되지 않습니다.

    전통적으로 각 일반 클래스(A–C)는 주소의 네트워킹 및 호스트 부분을 다르게 나누어 다양한 크기의 네트워크를 수용했습니다. 클래스 A 주소는 네트워크를 나타내는 첫 번째 옥텟의 나머지 부분과 호스트를 정의하는 나머지 주소를 사용했습니다. 이것은 각각 많은 호스트가 있는 몇 개의 네트워크를 정의하는 데 유용했습니다.

    클래스 B 주소는 네트워크를 정의하기 위해 처음 두 옥텟(첫 번째의 나머지 부분과 두 번째 전체)을 사용했고 나머지는 각 네트워크의 호스트를 정의했습니다. 클래스 C 주소는 처음 세 옥텟을 사용하여 네트워크를 정의하고 마지막 옥텟을 사용하여 해당 네트워크 내의 호스트를 정의했습니다.

    IP 공간의 많은 부분을 클래스로 나누는 것은 이제 거의 레거시 개념입니다. 원래 이것은 IPv4 주소가 빠르게 고갈되는 문제에 대한 임시방편으로 구현되었습니다(여러 컴퓨터가 별도의 네트워크에 있는 경우 동일한 호스트에 여러 컴퓨터가 있을 수 있음). 이것은 우리가 아래에서 논의할 나중의 계획으로 대부분 대체되었습니다.

    예약된 사설 범위

    특정 용도로 예약된 IPv4 공간의 일부도 있습니다.

    가장 유용한 예약 범위 중 하나는 127.0.0.0에서 127.255.255.255까지의 주소로 지정된 루프백 범위입니다. 이 범위는 각 호스트에서 자체 네트워킹을 테스트하는 데 사용됩니다. 일반적으로 이는 이 범위의 첫 번째 주소인 127.0.0.1로 표현됩니다.

    각 일반 클래스에는 개인 네트워크 주소를 지정하는 데 사용되는 범위도 있습니다. 예를 들어 클래스 A 주소의 경우 10.0.0.0에서 10.255.255.255까지의 주소는 사설 네트워크 할당용으로 예약되어 있습니다. 클래스 B의 경우 이 범위는 172.16.0.0에서 172.31.255.255입니다. 클래스 C의 경우 192.168.0.0에서 192.168.255.255 범위는 개인용으로 예약되어 있습니다.

    인터넷에 직접 연결되지 않은 모든 컴퓨터(라우터 또는 기타 NAT 시스템을 통과하는 모든 컴퓨터)는 이 주소를 마음대로 사용할 수 있습니다.

    특정 사용 사례를 위해 예약된 추가 주소 범위가 있습니다. 여기에서 예약된 주소의 요약을 찾을 수 있습니다.

    넷마스크 및 서브넷

    네트워크를 더 작은 네트워크 섹션으로 나누는 프로세스를 서브넷팅이라고 합니다. 이는 다양한 목적에 유용할 수 있으며 호스트 그룹을 서로 격리하여 더 쉽게 처리할 수 있도록 도와줍니다.

    위에서 설명한 것처럼 각 주소 공간은 네트워크 부분과 호스트 부분으로 나뉩니다. 이들 각각이 차지하는 주소의 양은 주소가 속한 클래스에 따라 다릅니다. 예를 들어 클래스 C 주소의 경우 처음 3개의 옥텟이 네트워크를 설명하는 데 사용됩니다. 주소 192.168.0.15의 경우 192.168.0 부분은 네트워크를 설명하고 15는 호스트를 설명합니다.

    기본적으로 각 네트워크에는 정의된 모든 호스트 주소를 포함하는 하나의 서브넷만 있습니다. 넷마스크는 기본적으로 네트워크 부분에 사용되는 주소 비트 양의 사양입니다. 서브넷 마스크는 네트워크를 더 분할하는 데 사용되는 또 다른 넷마스크입니다.

    네트워크를 설명하는 데 중요한 것으로 간주되는 주소의 각 비트는 넷마스크에서 "1\로 표시되어야 합니다.

    예를 들어 위에서 논의한 주소인 192.168.0.15는 이진법으로 다음과 같이 표현할 수 있습니다.

    1100 0000 - 1010 1000 - 0000 0000 - 0000 1111
    

    위에서 설명한 것처럼 클래스 C 주소의 네트워크 부분은 처음 3옥텟 또는 처음 24비트입니다. 이것이 우리가 보존하려는 중요한 비트이므로 넷마스크는 다음과 같습니다.

    1111 1111 - 1111 1111 - 1111 1111 - 0000 0000
    

    일반 IPv4 형식으로 255.255.255.0로 작성할 수 있습니다. 넷마스크의 이진 표현에서 "0\인 모든 비트는 주소의 호스트 부분의 일부로 간주되며 가변적일 수 있습니다. 그러나 "1\인 비트는 정적입니다. 논의 중입니다.

    주소와 넷마스크 사이에 비트 AND 연산을 적용하여 주소의 네트워크 부분을 결정합니다. 비트 AND 연산은 주소의 네트워킹 부분을 저장하고 호스트 부분을 버립니다. 네트워크를 나타내는 위의 예에서 결과는 다음과 같습니다.

    1100 0000 - 1010 1000 - 0000 0000 - 0000 0000
    

    이것은 192.168.0.0로 표현될 수 있습니다. 그러면 호스트 사양은 이러한 원래 값과 호스트 부분 간의 차이입니다. 이 경우 호스트는 0000 1111 또는 15입니다.

    서브넷의 아이디어는 주소의 호스트 공간의 일부를 가져와 주소 공간을 다시 나누는 추가 네트워킹 사양으로 사용하는 것입니다.

    예를 들어 위에서 본 것처럼 255.255.255.0의 넷마스크는 네트워크에 254개의 호스트를 남깁니다(예약되어 있으므로 0 또는 255로 끝날 수 없음). 이것을 두 개의 하위 네트워크로 나누고 싶다면 주소의 기존 호스트 부분 중 한 비트를 서브넷 마스크로 사용할 수 있습니다.

    따라서 예제를 계속 진행하면 네트워킹 부분은 다음과 같습니다.

    1100 0000 - 1010 1000 - 0000 0000
    

    호스트 부분은 다음과 같습니다.

    0000 1111
    

    호스트의 첫 번째 비트를 사용하여 하위 네트워크를 지정할 수 있습니다. 다음에서 서브넷 마스크를 조정하여 이를 수행할 수 있습니다.

    1111 1111 - 1111 1111 - 1111 1111 - 0000 0000
    

    이에:

    1111 1111 - 1111 1111 - 1111 1111 - 1000 0000
    

    전통적인 IPv4 표기법에서는 192.168.0.128로 표현됩니다. 여기서 우리가 한 것은 마지막 옥텟의 첫 번째 비트를 네트워크 주소 지정에 중요한 것으로 지정하는 것입니다. 이것은 효과적으로 두 개의 하위 네트워크를 생성합니다. 첫 번째 하위 네트워크는 192.168.0.1에서 192.168.0.127까지입니다. 두 번째 하위 네트워크에는 호스트 192.168.0.129에서 192.168.0.255가 포함됩니다. 전통적으로 서브넷 자체는 주소로 사용되어서는 안 됩니다.

    네트워킹을 위해 호스트 공간에서 더 많은 비트를 사용하면 점점 더 많은 하위 네트워크를 얻을 수 있습니다.

    CIDR 표기법

    CIDR(Classless Inter-Domain Routing)이라는 시스템이 기존 서브넷의 대안으로 개발되었습니다. 아이디어는 라우팅 또는 네트워킹 부분을 구성하는 중요한 비트 수에 대해 IP 주소 자체에 사양을 추가할 수 있다는 것입니다.

    예를 들어, 192.168.0.15/의 CIDR 표기법을 사용하여 IP 주소 192.168.0.15가 넷마스크 255.255.255.0과 연결되어 있다는 생각을 표현할 수 있습니다. 24. 이는 주어진 IP 주소의 처음 24비트가 네트워크 라우팅에 중요한 것으로 간주됨을 의미합니다.

    이것은 우리에게 몇 가지 흥미로운 가능성을 허용합니다. 이를 사용하여 "슈퍼넷\을 참조할 수 있습니다. 이 경우 기존 서브넷 마스크로는 불가능한 보다 포괄적인 주소 범위를 의미합니다. 예를 들어 위와 같은 클래스 C 네트워크에서는 주소를 결합할 수 없습니다. 클래스 C 주소의 넷마스크가 255.255.255.0이기 때문에 네트워크 192.168.0.0192.168.1.0에서.

    그러나 CIDR 표기법을 사용하면 이 청크를 192.168.0.0/23로 참조하여 이러한 블록을 결합할 수 있습니다. 이것은 우리가 참조하는 네트워크 부분에 사용되는 23비트가 있음을 지정합니다.

    따라서 첫 번째 네트워크(192.168.0.0)는 이진법으로 다음과 같이 나타낼 수 있습니다.

    1100 0000 - 1010 1000 - 0000 0000 - 0000 0000
    

    두 번째 네트워크(192.168.1.0)는 다음과 같습니다.

    1100 0000 - 1010 1000 - 0000 0001 - 0000 0000
    

    지정한 CIDR 주소는 처음 23비트가 참조하는 네트워크 블록에 사용됨을 나타냅니다. 이는 255.255.254.0의 넷마스크 또는 다음과 같습니다.

    1111 1111 - 1111 1111 - 1111 1110 - 0000 0000
    

    보시다시피 이 블록에서 24번째 비트는 0 또는 1일 수 있으며 네트워크 블록은 처음 23자리에만 관심이 있기 때문에 여전히 일치합니다.

    CIDR을 사용하면 연속 IP 주소 블록 주소를 더 잘 제어할 수 있습니다. 이것은 우리가 원래 이야기했던 서브넷팅보다 훨씬 더 유용합니다.

    결론

    바라건대 지금쯤이면 IP 프로토콜의 네트워킹 의미 중 일부에 대해 제대로 이해하고 있어야 합니다. 이러한 유형의 네트워킹을 처리하는 것이 항상 직관적인 것은 아니며 때때로 작업하기 어려울 수 있지만 소프트웨어 및 구성 요소를 올바르게 구성하려면 진행 상황을 이해하는 것이 중요합니다.

    이러한 개념 중 일부를 이해하고 특정 정보를 입력하여 필요한 올바른 주소와 범위를 얻는 데 도움이 되는 다양한 계산기와 도구가 온라인에 있습니다. CIDR.xyz는 10진수 기반 IP 주소에서 8진수로의 변환을 제공하며 다양한 CIDR 넷마스크를 시각화할 수 있습니다.