[Computer network] Chapter 1, 2 - Network layer : IPv4, part 1

이한량·2024년 10월 8일

Computer Network

목록 보기
3/11

1. IPv4 Address

  • IPv4 Address : IPv4 주소는 IP 주소라고도 불리우며, 이는 TCP/IP 프로토콜의 IP 계층에서 식별자로 사용된다. IP는 32비트 주소이며, 인터넷에 연결된 호스트 또는 라우터의 연결을 고유하게 식별한다. 이때, IP 주소는 장치 자체의 주소가 아닌, 그 장치가 연결된 주소이다.

    • Logical address (IPv4) : 각 장치가 부여받는 논리적 주소는 보통 라우터나 서버에 의해 할당되며, 이 논리적 주소는 필요에 따라 변경될 수 있다.

      • 네트워크 설정이나 연결 상황 등에 따라 동적으로 할당된다.
    • Physical address (MAC) : 물리적 주소는 장치 내부에 존재하는 고유 식별자로, 각 장치가 제조될 때 고유하게 할당된다. 따라서 일반적으로는 변경되지 않는 영구적인 주소이다.

    • MAC 주소는 로컬 네트워크 내에서 식별자로 활용된다.

      • 로컬 네트워크 상의 데이터 링크 계층에서 장치를 구분하는 역할로 사용된다.
  • Address Spaece (주소 공간) : 주소 공간은 네트워크가 가질 수 있는 전체 주소의 수를 의미한다. 즉, IP 주소를 정의하는 데 bb 비트를 사용한다면, 주소 공간은 2b2^b이다.

    • IPv4의 주소 공간 : 32비트 주소를 사용하므로, 주소 공간은 2322^{32}이다.

      • 이는 약 43억 개의 고유한 IPv4 주소가 존재할 수 있다는 의미이다.
    • IPv4의 주소 범위 : 0.0.0.0 ~ 255.255.255.255

    00000000 00000000 00000000 0000000011111111 11111111 11111111 1111111100000000 \ 00000000 \ 00000000 \ 00000000 \sim 11111111 \ 11111111 \ 11111111 \ 11111111

  • IPv4의 표현 방법 예시

2. Hierarchy in Addressing

  • Hierarchy in Addressing (계층 구조 주소) : IPv4 프로토콜은 효율적인 네트워크 관리를 위해 IP 주소의 계층 구조를 채택하였다.

    • IPv4 주소는 총 32비트로 구성되어 있다.

    • Prefix (n bits) : 네트워크의 주소를 정의하는 부분으로, 같은 네트워크에 속한 장치는 모두 같은 Prefix를 갖는다.

      • 프리픽스는 네트워크의 주소이며, 프리픽스의 길이는 네트워크에 따라 달라질 수 있다.
    • Suffix (32-n bits) : 네트워크 내에 존재하는 각 장치(호스트)를 고유하게 식별하는 데 사용되는 부분이다.

      • 즉, 서픽스는 호스트의 주소이다.

      • 네트워크 주소의 길이(프리픽스)가 길어질수록 서픽스의 길이는 줄어든다.

2-1. Classful Addressing

  • Classful Addressing (클래스 기반 주소 지정) : IPv4 주소 체계 초창기에 사용된 방법으로, 네트워크의 필요에 따라 프리픽스의 길이가 고정된 네트워크를 나눠놓았다.

    • IPv4 주소 공간을 5개의 클래스 (A, B, C, D, E)로 나누어 여러 규모의 네트워크를 지원하였다.

      • 클래스 A (8bits prefix) : 대규모 네트워크에 사용된 클래스

        1). 네트워크 수 : 282^8

        2). 호스트 수 : 2242^{24}

      • 클래스 B (16bits prefix) : 중간 규모 네트워크에 사용된 클래스

        1). 네트워크 수 : 2162^{16}

        2). 호스트 수 : 2162^{16}

      • 클래스 C (24bits prefix) : 소규모 네트워크에 사용된 클래스

        1). 네트워크 수 : 2242^{24}

        2). 호스트 수 : 282^8

2-2. Classless Addressing

  • Classless Addressing : 인터넷의 성장에 따라 더 많은 주소 공간과 더 효율적인 주소 배분을 위해 도입된 방식이다. 이 방식은 프리픽스의 크기가 동적으로 할당되므로 클래스 기반 주소 지정 방식에 비해 유연한 주소 할당이 가능하다.

    • 각 네트워크 환경과 목적을 고려하여 프리픽스의 크기를 조절할 수 있기 때문에 주소 할당이 효율적이고, 유연하다.

    • CIDR 기법이 주로 사용된다.

  • Classless Inter-Domain Routing (CIDR) : CIDR에서는 IP주소 뒤에 "/"와 프리픽스 길이를 붙여 네트워크의 길이를 나타낸다.

    • 위를 예시로 보면, 12.24.76.8/812.24.76.8/8에서 "/8"이 프리픽스의 길이를 표기한 부분이다.

      • Subnet Mask 방식으로도 표현할 수 있는데, 1111111111111111 0000000000000000 0000000000000000 0000000000000000와 같이 나타낸다면 앞에 8비트가 프리픽스 비트인 것이다.
    • 서브넷 마스크네트워크 주소 부분을 1로, 호스트 주소 부분을 0으로 나타낸다.

  • 예시 : 프리픽스가 24비트, 서픽스가 8비트인 주소를 살펴보자.

  • Prefix = 24bits, Suffix = 8bits

    • 네트워크 주소의 범위 : 0000000000000000 0000000000000000 0000000000000000 ~ 1111111111111111 1111111111111111 1111111111111111 == 0.0.0.x0.0.0.x ~ 255.255.255.x255.255.255.x

    • 호스트 주소의 범위 : 0000000000000000 ~ 1111111111111111 = x.0x.0 ~ x.255x.255

3. Subnetted network

CIDR 방식으로 서브 네트워크를 만드는 과정을 살펴보자.

3-1. 예시 1

  • 17.12.14.0/2617.12.14.0/26이라는 주소가 주어져 있다. 이를 서브넷 마스크로 나타내 보면 다음과 같다.

    11111111 11111111 11111111 1100000011111111 \ 11111111 \ 11111111 \ 11000000
    • 앞 26비트는 네트워크 주소를 나타내고, 뒤의 6비트가 호스트의 주소이다. 따라서 해당 네트워크에 존재할 수 있는 호스트의 수는 262^6이다.
  • 호스트의 주소 범위는 다음과 같다.

    17.12.14.017.12.14.63Starting Address:00010001 00001100 00001110 00000000Ending Address:00010001 00001100 00001110 0011111117.12.14.0 \sim 17.12.14.63 \\ Starting \ Address: 00010001 \ 00001100 \ 00001110 \ 00000000 \\ Ending \ Address : 00010001 \ 00001100 \ 00001110 \ 00111111
  • 네트워크 주소 부분을 추출하는 방법은 다음과 같다.

    17.12.14.5=00010001 00001100 00001110 0000010117.12.14.5 = \textcolor{red}{00010001 \ 00001100 \ 00001110 \ 00}000101 \\
00010001 00001100 00001110 00000101&11111111 11111111 11111111 11000000\textcolor{red}{00010001 \ 00001100 \ 00001110 \ 00}000101 \\ \& \\ \textcolor{red}{11111111 \ 11111111 \ 11111111 \ 11}000000 \\
Network address=00010001 00001100 00001110 00000000Network \ address= \textcolor{red}{00010001 \ 00001100 \ 00001110 \ 00}000000

서브넷 마스크와 IPv4 주소의 & 연산을 통해 네트워크 주소를 추출할 수 있다.

3-2. 예시 2

이번 예시는 17.12.14.0/2617.12.14.0/26이라는 주소가 주어지고, 이 하나의 네트워크를 여러 개의 서브 네트워크로 나누는 방법이다.

  • 위 네트워크의 서브넷 마스크는 255.255.255.192255.255.255.192이다.

  • One networks : 17.12.14.017.12.14.6317.12.14.0 \sim 17.12.14.63

  • Two networks : 이 네트워크를 두 개의 서브 네트워크로 나누면, 다음과 같이 구성된다.

    17.12.14.0/2717.12.14.32/2717.12.14.0/27 \\ 17.12.14.32/27
    • 주소의 범위

      17.12.14.0.017.12.14.0.3117.12.14.0.3217.12.14.0.6317.12.14.0.0 \sim 17.12.14.0.31 \\ 17.12.14.0.32 \sim 17.12.14.0.63
    • Subnet mask

      11111111 11111111 11111111 11100000255.255.255.224\textcolor{red}{11111111 \ 11111111 \ 11111111 \ 111}00000 \\ 255.255.255.224
    • 네트워크 당 호스트의 수 : 32

    • 네트워크의 수 : 2

    • 총 호스트의 수 : 64

  • Four networks : 네 개의 서브 네트워크로 나누면, 다음과 같이 구성된다.

    17.12.14.0/2817.12.14.16/2817.12.14.32/2817.12.14.48/2817.12.14.0/28 \\ 17.12.14.16/28 \\ 17.12.14.32/28 \\ 17.12.14.48/28
    • 주소의 범위

      17.12.14.017.12.14.1517.12.14.1617.12.14.3117.12.14.3217.12.14.4717.12.14.4817.12.14.6317.12.14.0 \sim 17.12.14.15 \\ 17.12.14.16 \sim 17.12.14.31 \\ 17.12.14.32 \sim 17.12.14.47 \\ 17.12.14.48 \sim 17.12.14.63
    • Subnet mask

      11111111 11111111 11111111 11110000255.255.255.240\textcolor{red}{11111111 \ 11111111 \ 11111111 \ 1111}0000 \\ 255.255.255.240
    • 한 네트워크 당 호스트 수 : 16

    • 네트워크의 개수 : 4

    • 총 호스트의 수 : 64

그렇다면, 서브 네트워크는 짝수개만 가질 수 있을까? 다음 예시를 살펴보자.

  • Three networks : 위 네트워크를 3개의 네트워크로 나눈다면, 다음과 같이 나눌 수 있다.

    17.12.14.0/2717.12.14.32/2817.12.14.48/2817.12.14.0/27 \\ 17.12.14.32/28 \\ 17.12.14.48/28
    • 주소의 범위
      17.12.14.017.12.14.3117.12.14.3217.12.14.4717.12.14.4817.12.14.6317.12.14.0 \sim 17.12.14.31 \\ 17.12.14.32 \sim 17.12.14.47 \\ 17.12.14.48 \sim 17.12.14.63
  • 위의 예시처럼, 서브 네트워크를 홀수 개로 나누고 싶다면 먼저 네트워크를 나누고, 형성된 서브 네트워크를 다시 한번 나눠 서브 네트워크를 생성하는 방법을 사용한다.

  • 위와 같은 방식은 3단계 계층 구조로도 볼 수 있다.

    • 서브넷 프리픽스 비트가 추가적으로 포함된 구조로도 생각해볼 수 있다.

    • 결론적으로, 다음과 같은 구조를 가진 네트워크가 형성된다.

네트워크를 나눈다는 것은 결국 한 네트워크에 존재할 수 있는 호스트의 수를 줄이는 것이다. 이를 통해 Collision 예방 효과를 기대할 수 있고, 충돌 발생 시 보다 효과적으로 처리할 수 있으며, 도메인을 효율적으로 할당할 수 있다는 이점이 있다.

4. 예제

4-1. ISP 예제

한 인터넷 서비스 제공 업체(ISP)가 190.100.0.0/16190.100.0.0/16 주소 블록을 할당 받았고, 이 주소를 세 그룹의 고객에게 분배해야 한다.

a. 첫 번째 그룹은 64명의 고객이 있고, 각 고객 당 256개의 주소가 필요하다.

  • 필요한 네트워크 수 : 64

  • Suffix : log2256=8bitslog_2{256} = 8bits

  • Prefix : 328=24bits32 - 8 = 24bits

  • 결과

b. 두 번째 그룹은 128명의 고객이 있고, 각 고객당 128개의 주소가 필요하다.

  • 필요한 네트워크 수 : 128

  • Suffix : log2128=7bitslog_2{128} = 7bits

  • Prefix : 327=25bits32 - 7 = 25bits

  • 결과

c. 세 번째 그룹은 128명의 고객이 있고, 각 고객당 64개의 주소가 필요하다.

  • 필요한 네트워크 수 : 128

  • Suffix : log264=6bitslog_2{64} = 6bits

  • Prefix : 326=26bits32 - 6 = 26bits

  • 결과

위와 같이 네트워크 분배 결과, ISP가 할당받은 주소의 총 개수는 216=65,5362^{16} = 65,536개 이지만, 실제로 사용한 주소의 수는 40,96040,960개이다.

4-2. 주소 범위 찾기 예제

한 CIDR 주소가 다음과 같이 주어진다.

167.199.170.82/27167.199.170.82/27

위 네트워크의 시작 주소와 마지막 주소를 찾아보도록 하자.

  • Subnet mask

    11111111 11111111 11111111 1110000011111111 \ 11111111 \ 11111111 \ 11100000
  • 167.199.170.82를 2진수로 나타내면

    10100111 11000111 10101010 0101001010100111 \ 11000111 \ 10101010 \ 01010010
  • 서브넷 마스크와 &연산을 진행하면

    10100111 11000111 10101010 01000000\textcolor{red}{10100111 \ 11000111 \ 10101010 \ 010}00000
  • First address

    10100111 11000111 10101010 01000000167.199.170.64/2710100111 \ 11000111 \ 10101010 \ 010\textcolor{turquoise}{00000} \\ 167.199.170.64/27
  • Last address

    10100111 11000111 10101010 01011111167.199.170.95/2710100111 \ 11000111 \ 10101010 \ 010\textcolor{turquoise}{11111} \\ 167.199.170.95/27

4-3. IP 주소가 속하는 블록

다음과 같은 IP주소가 주어진다고 가정해보자.

230.8.24.56230.8.24.56

위 주소를 포함하는 네트워크 주소 블록은 다음과 같이 매우 많을 것이다.위와 같은 경우, 프리픽스의 길이가 가장 긴 블록이 해당 주소가 속한 네트워크라고 간주하는 것이 가장 올바르다.

프리픽스가 길어질수록 해당 IP 주소가 속하는 블록의 범위가 더욱 작아지며, 이는 구체적이고 명확한 범위를 나타낸다는 의미이다.

4-4. 주소 할당 예제

한 기업이 시작 주소가 14.24.74.0/2414.24.74.0/24인 주소 블록을 할당받았다. 이 기업은 3개의 subblocks가 필요한데, 각 서브블록의 요구 사항은 다음과 같다.

a. 10개의 주소가 필요한 서브넷

b. 60개의 주소가 필요한 서브넷

c. 120개의 주소가 필요한 서브넷

  • Solution : 주소가 많이 필요한 서브넷부터 시작하여 점점 하위 서브넷으로 내려가면서 분할하는 것이 일반적이다.

    • c

      • Suffix : log2128=7log_2{128} = 7

      • c 서브 블록은 다음과 같다.

        14.24.74.0/2514.24.74.127/2514.24.74.0/25 \sim 14.24.74.127/25
    • b

      • Suffix : log264=6log_2{64} = 6

      • b 서브 블록은 다음과 같다.

        14.24.74.128/2614.24.74.191/2614.24.74.128/26 \sim 14.24.74.191/26
    • a

      • Suffix : log216=4log_2{16} = 4

      • a 서브 블록은 다음과 같다.

        14.24.74.192/2814.24.74.207/2814.24.74.192/28 \sim 14.24.74.207/28
    • 208개의 Address를 할당하였으므로, 나머지 48개의 주소는 14.24.72.20814.24.74.25514.24.72.208 \sim 14.24.74.255에 할당된다.

      • 나머지 14.24.72.20814.24.74.25514.24.72.208 \sim 14.24.74.255의 범위에 해당하는 주소들은 아직 할당되지 않았으므로 prefix가 지정되지 않았다. 추후 네트워크 할당이 필요할 때 조정될 것이다.

5. Address Aggregation

  • Address Aggregation (주소 집합) : 여러 서브 네트워크로 구성된 ISP는 하나의 큰 네트워크로 결합하여 외부 네트워크와 통신한다.

    라우팅 테이블의 Size를 줄이는 효과가 있다.

  • Flow of activities at Sender : 한 호스트가 외부 네트워크의 호스트와 통신을 하고자 할 때, 네트워크 주소를 보고 판단하여야 한다.

    • 같은 네트워크에 속해있는지 아닌지는 네트워크 주소(prefix)를 확인하면 알 수 있다.

    • 만약 같은 네트워크 주소에 속해있지 않다면, 같은 네트워크에 속해있는 라우터에 ARP를 날린다.

    • 해당 라우터는 자신과 연결되어 있는 외부 네트워크(목적지)의 라우터에 ARP를 날린다.

    • 목적지 네트워크의 라우터는 같은 네트워크에 속해있는 목적지 호스트에게 ARP를 날린다.

    • 통신 과정은 다음과 같다.

profile
한량 극복 프로젝트

0개의 댓글