IPv4 서브네팅은 어떻게 작동합니까?


439

이것은 IPv4 서브넷에 대한 정식 질문 입니다.

관련 :

Subnetting은 어떻게 작동 하며 손으로 또는 머리로 어떻게 수행 합니까? 누군가 개념적으로나 여러 가지 예를 통해 설명 할 수 있습니까? 서버 폴트는 많은 서브넷 과제 숙제 질문을 얻으므로 답변을 사용하여 서버 폴트 자체를 지적 할 수 있습니다.

  • 네트워크가 있다면 어떻게 분리 할 수 ​​있는지 어떻게 알 수 있습니까?
  • 넷 마스크가 주어지면 네트워크 범위가 무엇인지 어떻게 알 수 있습니까?
  • 슬래시 다음에 숫자가 나오는 경우가 있습니다. 그 숫자는 무엇입니까?
  • 때로는 서브넷 마스크가 있지만 와일드 카드 마스크도 같은 것처럼 보이지만 다른가요?
  • 누군가 이것에 대해 바이너리를 아는 것에 대해 언급 했습니까?

이 두 부분으로 된 답변 은 IPv4 주소 계산 등에 대해 알고 자하는 모든 것을 설명합니다.
Ron Maupin

답변:


648

라우터가 패킷에 적합한 대상을 선택할 수 있도록 IP 서브넷이 있습니다. IP 서브넷을 사용하여 논리적 이유로 (방화벽 등) 물리적 필요 (소규모 브로드 캐스트 도메인 등)로 더 큰 네트워크를 분리 할 수 ​​있습니다.

간단히 말해 IP 라우터는 IP 서브넷을 사용하여 라우팅 결정을 내립니다. 이러한 결정이 어떻게 작동하는지 이해하고 IP 서브넷을 계획하는 방법을 이해할 수 있습니다.

1까지 세기

이진법 (기본 2)에 이미 능숙하다면이 섹션을 건너 뛸 수 있습니다.

남겨진 당신을 위해 : 이진 표기법에 유창하지 않은 당신에게 부끄러운!

그래-조금 가혹할 수도 있습니다. 이진법으로 계산하는 법과 이진법을 십진법으로 바꾸는 법을 배우는 것은 정말 쉽습니다. 실제로 어떻게해야하는지 알아야합니다.

이진수로 계산하는 것은 매우 간단합니다. 1로 계산하는 방법 만 알아야하기 때문입니다!

기존의 주행 거리계와 달리 각 숫자는 0에서 1까지만 계산할 수 있다는 점을 제외하고는 자동차의 "주행 거리계"를 생각해보십시오.

첫 마일을 주행하면 주행 거리계에 "00000001"이 표시됩니다. 여태까지는 그런대로 잘됐다.

2 마일을 주행하면 주행 거리계의 첫 번째 숫자가 "0"으로 롤오버되고 (최대 값이 "1"이므로 주행 거리계의 두 번째 숫자가 "1"로 롤오버되어 주행 거리계가 " 00000010 "입니다. 이것은 십진수 표기법으로 숫자 10처럼 보이지만 실제로는 이진 표기법으로 2 (지금까지 자동차를 운전 한 마일 수)입니다.

3 마일을 주행하면 주행 거리계의 첫 번째 숫자가 다시 바뀌기 때문에 주행 거리계에 "00000011"이 표시됩니다. 이진수 표기법에서 숫자 "11"은 10 진수 3과 같습니다.

마지막으로, 네 번째 마일을 운전했을 때 두 번째 숫자 (세 번째 마일 끝에서 "1"을 읽음)가 0 위치로 롤백되고 세 번째 숫자가 "1"위치로 롤업되어 " 00000100 ". 이것이 십진수 4의 이진 표현입니다.

원한다면이 모든 것을 기억할 수 있지만 , 작은 주행 거리계가 계산하는 숫자가 커짐에 따라 작은 주행 거리계가 어떻게 롤오버 되는지 이해 하면됩니다. 가상의 "이진 주행 거리계"에서 각 숫자가 "0"또는 "1"만 될 수 있다는 점을 제외하면 기존 십진 주행 거리계의 동작과 정확히 동일합니다.

십진수를 이진수로 변환하려면 주행 거리계를 앞으로 굴리고 틱으로 틱하고 이진수로 변환하려는 십진수와 같은 횟수만큼 롤백 할 때까지 큰 소리로 계산합니다. 모든 couting 및 rolling 후 주행 거리계에 표시되는 것은 계산 한 십진수의 이진 표현입니다.

주행 거리계가 어떻게 롤 포워드되는지 이해하기 때문에 또한 주행 거리가 어떻게 롤백되는지 이해합니다. 주행 거리계에 표시된 이진수를 십진수로 다시 변환하려면 주행 거리계가 "00000000"을 읽을 때까지 소리내어 세어 한 번에 한 눈금 씩 롤백 할 수 있습니다. 모든 계산 및 롤링이 완료되면 마지막으로 큰 소리로 말하면 주행 거리계가 시작한 이진수의 십진수 표현입니다.

이 방법으로 이진수와 십진수 사이의 값을 변환하는 것은 매우 지루합니다. 당신은 그것을 할 수는 있지만 그렇게 효율적이지 않을 것입니다. 더 빠른 알고리즘을 배우는 것이 더 쉽습니다.

요약 : 이진수의 각 숫자를 "비트"라고합니다. "이진"의 "b"와 "숫자"의 "it"입니다. 비트는 이진수입니다.

"1101011"과 같은 이진수를 10 진수로 변환하는 것은 편리한 작은 알고리즘으로 간단한 프로세스입니다.

이진수의 비트 수를 세면서 시작하십시오. 이 경우에는 7 가지가 있습니다. 종이에 (마음으로, 텍스트 파일 등으로) 7 개의 구분을 만들고 오른쪽에서 왼쪽으로 채 웁니다. 가장 오른쪽 슬롯에는 항상 "1"로 시작하므로 숫자 "1"을 입력하십시오. 왼쪽의 다음 슬롯에서 오른쪽의 슬롯 값을 두 배로 입력하고 (다음 슬롯의 "2", 다음 슬롯의 "4") 모든 슬롯이 가득 찰 때까지 계속하십시오. (당신은 이것을 점점 더 많이할수록 2의 거듭 제곱 인이 숫자를 암기하게됩니다. 나는 머리에 131,072까지 괜찮지 만 보통 그 후에 계산기 나 종이가 필요합니다).

따라서 작은 슬롯에 종이에 다음 내용이 있어야합니다.

 64    |    32    |    16    |    8    |    4    |    2    |    1    |

슬롯 아래의 이진수에서 비트를 다음과 같이 기록하십시오.

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
  1          1          0         1         0         1         1

이제 몇 가지 기호를 추가하고 문제에 대한 답을 계산하십시오.

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
       +          +          +         +         +         +         =

모든 수학을 수행하면 다음을 수행해야합니다.

 64    |    32    |    16    |    8    |    4    |    2    |    1    |
x 1        x 1        x 0       x 1       x 0       x 1       x 1
---        ---        ---       ---       ---       ---       ---
 64    +    32    +     0    +    8    +    0    +    2    +    1    =   107

알았습니다. 십진수 "1101011"은 107입니다. 간단한 단계와 쉬운 수학입니다.

십진수를 이진수로 변환하는 것은 간단하고 같은 기본 알고리즘이며 반대로 실행됩니다.

숫자 218을 이진수로 변환한다고 가정 해보십시오. 용지 오른쪽에서 시작하여 숫자 "1"을 쓰십시오. 왼쪽으로 해당 값을 두 배로 늘리면 ( "2") 마지막 값을 두 배로 늘리는 용지 왼쪽으로 계속 이동합니다. 쓰려는 숫자가 변환중인 숫자보다 큰 경우 쓰기를 중지하십시오. 그렇지 않으면 이전 숫자를 계속 두 배로 쓰고 쓰십시오. (이 알고리즘을 사용하여 34,157,216,092와 같은 큰 숫자를 이진수로 변환하는 것은 약간 지루할 수 있지만 확실히 가능합니다.)

그래서, 당신은 당신의 종이에 있어야합니다 :

 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |

256을 제공하는 128을 두 배로 늘리면 변환되는 숫자 (218)보다 크기 때문에 128에서 숫자 쓰기를 중지했습니다.

가장 왼쪽 숫자부터 시작하여 그 위에 "218"을 쓰고 (128) "218이 128보다 크거나 같습니까?" 대답이 예이면 "128"아래의 "1"을 긁으십시오. "64"위에 218에서 128 (90)을 뺀 결과를 씁니다.

"64"를 보면서 "90이 64보다 크거나 같은가요?" 따라서 "64"아래에 "1"을 쓴 다음 90에서 64를 빼고 "32"(26)보다 위에 씁니다.

그러나 "32"에 도달하면 32가 26보다 크거나 같지 않다는 것을 알 수 있습니다.이 경우 "32"아래에 "0"을 쓰고 숫자 (26)를 32보다 위에 "" 16 "다음에 나머지 숫자들과 동일한 질문을 계속하십시오.

모두 완료되면 다음을 수행해야합니다.

 218         90         26         26        10         2         2         0
 128    |    64    |    32    |    16    |    8    |    4    |    2    |    1    |
   1          1          0          1         1         0         1         0

맨 위에있는 숫자는 계산에 사용 된 메모 일 뿐이며 우리에게 큰 의미는 없습니다. 그러나 맨 아래에는 이진수 "11011010"이 표시됩니다. 물론, 이진수로 변환 된 218은 "11011010"입니다.

이 매우 간단한 절차에 따라 이진수를 10 진수로 변환하고 다시 계산기없이 다시 변환 할 수 있습니다. 수학은 매우 간단하며 약간의 연습만으로 규칙을 기억할 수 있습니다.

주소 분할

피자 배달과 같은 IP 라우팅을 생각하십시오.

피자를 "123 Main Street"에 배달하라는 요청을 받으면 "Main Street"라는 거리에있는 "123"번 빌딩으로 가고 싶다는 것은 인간에게 매우 분명합니다. 건물 수는 100에서 199 사이이고 대부분의 도시 블록은 수백 개이기 때문에 Main Street의 100 블록으로 가야한다는 것을 쉽게 알 수 있습니다. 주소를 나누는 방법을 "그냥 알고"있습니다.

라우터는 피자가 아닌 패킷을 전달합니다. 그들의 임무는 피자 운전사와 동일합니다 :화물 (포장)을 목적지에 최대한 가깝게하는 것. 라우터가 둘 이상의 IP 서브넷에 연결되어 있습니다 (모두 유용함). 라우터는 패킷의 대상 IP 주소를 검사하고 배달 대상을 결정하기 위해 피자 드라이버와 마찬가지로 대상 주소를 "거리 이름"및 "건물 번호"구성 요소로 분리해야합니다.

IP 네트워크의 각 컴퓨터 (또는 "호스트")는 고유 한 IP 주소와 서브넷 마스크로 구성됩니다. 이 IP 주소는 "호스트 ID"라는 "빌딩 번호"구성 요소 (위의 예에서는 "123")와 "호스트 ID"라는 "거리 이름"구성 요소 (위의 예에서는 "메인 스트리트")로 나눌 수 있습니다. "네트워크 ID". 사람의 눈으로는 건물 번호와 거리 이름이 "123 Main Street"에있는 위치를 쉽게 확인할 수 있지만 서브넷 마스크가 255.255.192.0 인 "10.13.216.41"로 구분하기가 더 어렵습니다.

IP 라우터는 라우팅 구성을 결정하기 위해 IP 주소를 이러한 구성 요소로 분리하는 방법을 "알고 있습니다". IP 패킷이 라우팅되는 방법을 이해하면이 프로세스를 이해하는 데 달려 있으므로 IP 주소를 분리하는 방법도 알아야합니다. 다행히 IP 주소와 서브넷 마스크에서 호스트 ID와 네트워크 ID를 추출하는 것은 실제로 매우 쉽습니다.

IP 주소를 이진수로 작성하여 시작하십시오 (아직 머리 에이 작업을 배우지 않은 경우 계산기를 사용하십시오).하지만 그것을 수행하는 방법을 배우십시오 메모는 실제로 쉽고 쉽습니다. 당사자) :

      10.      13.     216.      41
00001010.00001101.11011000.00101001

서브넷 마스크도 바이너리로 작성하십시오.

     255.     255.     192.       0
11111111.11111111.11000000.00000000

나란히 작성하면 서브넷 마스크에서 "1"이 중지 된 지점이 IP 주소의 지점에 "일렬로"있는 것을 볼 수 있습니다. 이것이 네트워크 ID와 호스트 ID가 분리되는 지점입니다. 따라서이 경우

      10.      13.     216.      41
00001010.00001101.11011000.00101001 - IP address
11111111.11111111.11000000.00000000 - subnet mask
00001010.00001101.11000000.00000000 - Portion of IP address covered by 1's in subnet mask, remaining bits set to 0
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

라우터는 서브넷 마스크를 사용하여 IP 주소에서 1로 덮여있는 비트를 "마스크 아웃"하여 ( "마스크 아웃되지 않은 비트를 0으로 대체") 네트워크 ID를 추출합니다.

      10.      13.     192.       0
00001010.00001101.11000000.00000000 - Network ID

마찬가지로, 서브넷 마스크를 사용하여 IP 주소에서 0으로 덮여있는 비트를 "마스크 아웃"하여 (마스크되지 않은 비트를 다시 0으로 대체) 라우터는 호스트 ID를 추출 할 수 있습니다.

       0.       0.      24.      41
00000000.00000000.00011000.00101001 - Portion of IP address covered by 0's in subnet mask, remaining bits set to 0

피자 배달 중에 실제 주소의 "건물 번호"와 "거리 이름"사이의 네트워크 ID와 호스트 ID 사이의 "중단"을 사람의 눈으로 보는 것은 쉽지 않지만 궁극적 인 효과는 같은.

이제 IP 주소와 서브넷 마스크를 호스트 ID와 네트워크 ID로 분할 할 수 있으므로 라우터처럼 IP를 라우팅 할 수 있습니다.

더 많은 용어

인터넷 전체와이 답변의 나머지 부분에서 (IP / 번호)로 작성된 서브넷 마스크가 표시됩니다. 이 표기법을 "클래스리스 도메인 간 라우팅"(CIDR) 표기법이라고합니다. "255.255.255.0"은 처음에 24 비트 1로 구성되며 "255.255.255.0"보다 "/ 24"로 쓰는 것이 더 빠릅니다. CIDR 번호 (예 : "/ 16")를 점으로 구분 된 10 진수 서브넷 마스크로 변환하려면 해당 번호를 1로 쓰고 8 비트 그룹으로 나누고 10 진수로 변환하면됩니다. 예를 들어 "/ 16"은 "255.255.0.0"입니다.

"이전 시대"로 돌아가서 서브넷 마스크는 지정되지 않았지만 IP 주소의 특정 비트를보고 파생되었습니다. 예를 들어, 0-127로 시작하는 IP 주소는 255.0.0.0 ( "클래스 A"IP 주소)의 암시 적 서브넷 마스크를가집니다.

이러한 암시 적 서브넷 마스크는 오늘날 사용되지 않으며 클래스리스 IP 주소 지정을 지원하지 않는 매우 오래된 장비 또는 RIPv1과 같은 오래된 프로토콜을 처리하는 데 불편을 겪지 않는 한 더 이상 배우지 않는 것이 좋습니다. 이 주소의 "클래스"에 대해서는 더 이상 언급하지 않겠습니다. 오늘날 적용 할 수없고 혼동 될 수 있기 때문입니다.

일부 장치는 "와일드 카드 마스크"라는 표기법을 사용합니다. "와일드 카드 마스크"는 1이있는 곳에 0이 있고 0이있는 곳에 1이있는 서브넷 마스크에 지나지 않습니다. / 26의 "와일드 카드 마스크"는 다음과 같습니다.

 11111111.11111111.11111111.11000000 - /26 subnet mask
 00000000.00000000.00000000.00111111 - /26 "wildcard mask"

일반적으로 액세스 제어 목록 또는 방화벽 규칙에서 호스트 ID를 일치시키는 데 사용되는 "와일드 카드 마스크"가 표시됩니다. 더 이상 여기서 논의하지 않을 것입니다.

라우터 작동 방식

앞에서 말했듯이 IP 라우터는 피자 배달원과 비슷한 직무를 수행하여화물 (패킷)을 목적지로 가져와야합니다. 주소 192.168.10.2에 대해 바인딩 된 패킷이 표시되면 IP 라우터는 해당 네트워크 인터페이스 중 어떤 패킷이 목적지에 가장 근접한지를 결정해야합니다.

IP 라우터이고 인터페이스가 연결되어 있다고 가정 해 보겠습니다.

  • 이더넷 0-192.168.20.1, 서브넷 마스크 / 24
  • 이더넷 1-192.168.10.1, 서브넷 마스크 / 24

대상 주소가 "192.168.10.2"로 전달할 패킷을 수신하면 Ethernet1 인터페이스 주소가 패킷의 대상과 일치하기 때문에 사람의 눈으로 패킷을 Ethernet1 인터페이스로 보내야한다는 것을 쉽게 알 수 있습니다. 주소. Ethernet1 인터페이스에 연결된 모든 컴퓨터의 IP 주소는 "192.168.10"으로 시작합니다. Ethernet1 인터페이스에 할당 된 IP 주소의 네트워크 ID는 "192.168.10.0"이기 때문입니다.

라우터의 경우이 라우팅 선택 프로세스는 라우팅 테이블을 작성하고 패킷이 전달 될 때마다 테이블을 참조하여 수행됩니다. 라우팅 테이블에는 네트워크 ID 및 대상 인터페이스 이름이 포함됩니다. 이미 IP 주소와 서브넷 마스크에서 네트워크 ID를 얻는 방법을 알고 있으므로 라우팅 테이블을 작성하는 중입니다. 이 라우터의 라우팅 테이블은 다음과 같습니다.

  • 네트워크 ID : 192.168.20.0 (11000000.10101000.00010100.00000000)-24 비트 서브넷 마스크-인터페이스 Ethernet0
  • 네트워크 ID : 192.168.10.0 (11000000.10101000.00001010.00000000)-24 비트 서브넷 마스크-인터페이스 이더넷 1

"192.168.10.2"에 대한 수신 패킷 바운드의 경우 해당 패킷의 주소를 이진으로 변환하기 만하면됩니다 (사람은 라우터가 처음부터 이진으로 가져옵니다). 라우팅의 각 주소와 일치 시키려고합니다. 항목과 일치 할 때까지 표 (서브넷 마스크의 비트 수까지).

  • 수신 패킷 대상 : 11000000.10101000.00001010.00000010

라우팅 테이블의 항목과 비교 :

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00010100.00000000 - Interface Ethernet0
!!!!!!!!.!!!!!!!!.!!!????!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

11000000.10101000.00001010.00000010 - Destination address for packet
11000000.10101000.00001010.00000000 - Interface Ethernet1, 24 bit subnet mask
!!!!!!!!.!!!!!!!!.!!!!!!!!.xxxxxxxx - ! indicates matched digits, ? indicates no match, x indicates not checked (beyond subnet mask)

Ethernet0에 대한 항목은 처음 19 비트와 잘 일치하지만 일치를 중지합니다. 이는 올바른 대상 인터페이스가 아님을 의미합니다. Ethernet1 인터페이스가 대상 주소의 24 비트와 일치 함을 알 수 있습니다. 아하! 패킷은 Ethernet1 인터페이스에 바인딩됩니다.

실제 라우터에서 라우팅 테이블은 가장 긴 서브넷 마스크가 먼저 일치하는지 (즉, 가장 구체적인 경로) 확인되고, 일치하는 것이 발견되는 즉시 패킷이 라우팅 될 수 있도록 수치 적으로 정렬됩니다. 더 이상 일치하는 시도가 필요하지 않습니다 (192.168.10.0이 먼저 나열되고 192.168.20.0이 확인되지 않았 음을 의미). 여기, 우리는 그것을 조금 단순화하고 있습니다. 멋진 데이터 구조와 알고리즘은 더 빠른 IP 라우터를 만들지 만 간단한 알고리즘은 동일한 결과를 생성합니다.

정적 경로

지금까지는 가상 라우터가 네트워크에 직접 연결되어 있다고 가정했습니다. 그것은 분명히 세상이 실제로 작동하는 방식이 아닙니다. 피자 운전 비유에서 때로는 운전자가 프론트 데스크보다 건물에 더 이상 출입 할 수 없으며 최종 수령인에게 배달하기 위해 다른 사람에게 피자를 넘겨 줘야합니다 (불신을 중단하고 나에게 견디십시오. 비유를 늘려주세요).

이전 예제 "라우터 A"에서 라우터를 호출하여 시작하겠습니다. 이미 RouterA의 라우팅 테이블을 다음과 같이 알고 있습니다.

  • 네트워크 ID : 192.168.20.0 (11000000.10101000.00010100.00000000)-서브넷 마스크 / 24-인터페이스 라우터 A-Ethernet0
  • 네트워크 ID : 192.168.10.0 (11000000.10101000.00001010.00000000)-서브넷 마스크 / 24-인터페이스 라우터 A-Ethernet1

IP 주소 192.168.10.254/24 및 192.168.30.1/24가 Ethernet0 및 Ethernet1 인터페이스에 할당 된 다른 라우터 "라우터 B"가 있다고 가정하십시오. 다음과 같은 라우팅 테이블이 있습니다.

  • 네트워크 ID : 192.168.10.0 (11000000.10101000.00001010.00000000)-서브넷 마스크 / 24-인터페이스 라우터 B-Ethernet0
  • 네트워크 ID : 192.168.30.0 (11000000.10101000.00011110.00000000)-서브넷 마스크 / 24-인터페이스 라우터 B-Ethernet1

예쁜 ASCII 기술에서 네트워크는 다음과 같습니다.

               Interface                      Interface
               Ethernet1                      Ethernet1
               192.168.10.1/24                192.168.30.254/24
     __________  V                  __________  V
    |          | V                 |          | V
----| ROUTER A |------- /// -------| ROUTER B |----
  ^ |__________|                 ^ |__________|
  ^                              ^
Interface                      Interface
Ethernet0                      Ethernet0
192.168.20.1/24                192.168.10.254/24

라우터 B는 라우터 A가 알지 못하는 192.168.30.0/24 네트워크를 얻는 방법을 알고 있음을 알 수 있습니다.

라우터 A의 Ethernet0 인터페이스에 연결된 네트워크에 연결된 IP 주소가 192.168.20.13 인 PC가 라우터 A로 패킷을 전송하여 전송한다고 가정합니다. 우리의 가상 패킷은 라우터 B의 Ethernet1 인터페이스에 연결된 네트워크에 연결된 장치 인 IP 주소 192.168.30.46을 대상으로합니다.

위에 표시된 라우팅 테이블을 사용하면 라우터 A의 라우팅 테이블에있는 어느 항목도 대상 192.168.30.46과 일치하지 않으므로 라우터 A는 "목적지 네트워크에 연결할 수 없음"이라는 메시지와 함께 패킷을 전송 PC로 반환합니다.

라우터 A가 192.168.30.0/24 네트워크의 존재를 "인식"하게하기 위해 라우터 A의 라우팅 테이블에 다음 항목을 추가합니다.

  • 네트워크 ID : 192.168.30.0 (11000000.10101000.00011110.00000000)-서브넷 마스크 / 24-192.168.10.254를 통해 액세스 가능

이런 식으로 라우터 A에는 예제 패킷의 192.168.30.46 대상과 일치하는 라우팅 테이블 항목이 있습니다. 이 라우팅 테이블 항목에는 "192.168.30.0/24에 대한 패킷 바인딩이 있으면이를 처리하는 방법을 알고 있기 때문에 192.168.10.254로 보내십시오."라고 효과적으로 말합니다. 이것은 앞에서 언급 한 유사한 "프론트 데스크에서 피자를 나눠주는"행동입니다. 목적지에 가까워지는 방법을 알고있는 다른 사람에게 패킷을 전달합니다.

라우팅 테이블에 "손으로"항목을 추가하는 것을 "정적 경로"추가라고합니다.

라우터 B가 192.168.20.0 서브넷 마스크 255.255.255.0 네트워크에 패킷을 전달하려면 라우팅 테이블에도 항목이 필요합니다.

  • 네트워크 ID : 192.168.20.0 (11000000.10101000.00010100.00000000)-서브넷 마스크 / 24-다음을 통해 액세스 가능 : 192.168.10.1 (192.168.10.0 네트워크에서 라우터 A의 IP 주소)

이 라우터 사이의 192.168.10.0/24 네트워크를 통해 192.168.30.0/24 네트워크와 192.168.20.0/24 네트워크 사이에 전달할 경로가 작성됩니다.

이러한 "삽입 네트워크"의 양쪽에있는 라우터에 "파 엔드"네트워크에 대한 라우팅 테이블 항목이 있는지 항상 확인하려고합니다. 이 예에서 라우터 B는 192.168.20.13에있는 PC에서 가상의 패킷을 라우터에 부착 된 "맨 끝에"네트워크 192.168.20.0/24에 대한 라우팅 테이블 항목이하지 않은 경우 192.168.30.46에서 대상 장치에 도착를, 그러나 192.168.30.46이 다시 보내려고 한 회신은 라우터 B에서 "대상 네트워크에 연결할 수 없음"으로 반환됩니다. 단방향 통신은 일반적으로 바람직하지 않습니다. 컴퓨터 네트워크의 통신에 대해 생각할 때는 항상 양방향 으로 흐르는 트래픽에 대해 생각하십시오 .

정적 경로에서 많은 마일리지를 얻을 수 있습니다. EIGRP, RIP 등과 같은 동적 라우팅 프로토콜은 실제로 라우터가 라우팅 정보를 서로 교환하여 실제로 고정 경로로 구성 할 수있는 방법 일뿐입니다. 정적 경로보다 동적 라우팅 프로토콜을 사용 하는 것의 한 가지 큰 장점은 동적 라우팅 프로토콜이 네트워크 조건 (대역폭 사용률, 인터페이스 "내림"등)에 따라 동적으로 라우팅 테이블을 동적으로 변경할 수 있다는 것입니다. 라우팅 프로토콜로 인해 네트워크 인프라에서 "라우팅"오류 또는 병목 현상이 발생할 수 있습니다. (동적 라우팅 프로토콜은 WAY 하지만,이 답변의 범위를 벗어난다.)

여기서 갈 수 없어

예제 라우터 A의 경우 "172.16.31.92"에 대해 바인딩 된 패킷이 들어 오면 어떻게됩니까?

라우터 라우팅 테이블을 보면 대상 인터페이스 나 고정 경로가 172.18.31.92의 첫 24 비트 (10101100.00010000.00011111.01011100, BTW)와 일치하지 않습니다.

우리가 이미 알고 있듯이 라우터 A는 "대상 네트워크에 연결할 수 없음"메시지를 통해 패킷을 보낸 사람에게 반환합니다.

주소 "192.168.20.254"에 다른 라우터 (라우터 C)가 있다고 가정하십시오. 라우터 C는 인터넷에 연결되어 있습니다!

                              Interface                      Interface                      Interface
                              Ethernet1                      Ethernet1                      Ethernet1
                              192.168.20.254/24              192.168.10.1/24                192.168.30.254/24
                    __________  V                  __________  V                  __________  V
((  heap o  ))     |          | V                 |          | V                 |          | V
(( internet )) ----| ROUTER C |------- /// -------| ROUTER A |------- /// -------| ROUTER B |----
((   w00t!  ))   ^ |__________|                 ^ |__________|                 ^ |__________|
                 ^                              ^                              ^
               Interface                      Interface                      Interface
               Ethernet0                      Ethernet0                      Ethernet0
               10.35.1.1/30                   192.168.20.1/24                192.168.10.254/24

라우터 A가 라우터 C가 로컬 인터페이스와 일치하지 않는 패킷을 라우터 C까지 라우팅하여 라우터 C가 인터넷으로 전송할 수 있다면 좋을 것입니다. "기본 게이트웨이"경로를 입력하십시오.

라우팅 테이블 끝에 다음과 같이 항목을 추가하십시오.

  • 네트워크 ID : 0.0.0.0 (00000000.00000000.00000000.00000000)-서브넷 마스크 / 0-대상 라우터 : 192.168.20.254

라우팅 테이블의 각 항목에 "172.16.31.92"를 일치 시키려고하면이 새 항목에 도달합니다. 처음에는 조금 당황 스럽습니다. 우리는 목적지 주소의 0 비트를 ... 대기 ... 무엇과 일치 시키려고합니다. 제로 비트 매칭? 따라서 우리는 전혀 일치하는 것을 찾지 않습니다. 이 라우팅 테이블 항목은 기본적으로 "배달을 포기하지 않고 도착하면 패킷을 라우터로 192.168.20.254로 보내서 처리하게하십시오"라고 말합니다.

192.168.20.254 우리가 목적지 DO 로 패킷을 전달하는 방법을 알고있다. 특정 라우팅 테이블 항목이없는 대상에 대해 바인딩 된 패킷에 직면 할 때이 "기본 게이트웨이"항목은 항상 일치합니다 (대상 주소의 0 비트와 일치하기 때문에) "마지막 수단"위치를 제공합니다. 배달을 위해 패킷을 보냅니다. 때때로 "마지막 게이트웨이"라는 기본 게이트웨이가 들립니다.

기본 게이트웨이 라우트를 적용하려면 라우팅 테이블의 다른 항목을 사용하여 도달 할 수있는 라우터를 참조해야합니다. 예를 들어 라우터 A에서 기본 게이트웨이 192.168.50.254를 지정하려고하면 이러한 기본 게이트웨이로의 배달이 실패합니다. 192.168.50.254는 라우터 A가 라우팅 테이블의 다른 경로를 사용하여 패킷을 전달하는 방법을 알고있는 주소가 아니므로 이러한 주소는 기본 게이트웨이로 비효율적입니다. 이것은 간결하게 설명 할 수 있습니다. 기본 게이트웨이는 라우팅 테이블의 다른 경로를 사용하여 이미 도달 가능한 주소로 설정해야합니다.

실제 라우터는 일반적으로 기본 게이트웨이를 라우팅 테이블에 마지막 경로로 저장하여 테이블의 다른 모든 항목과 일치하지 않은 패킷과 일치하도록합니다.

도시 계획 및 IP 라우팅

IP 서브넷을 더 작은 IP 서브넷으로 나누는 것은 도시 계획과 같습니다. 도시 계획에서 구역 설정은 조경의 자연적인 특징 (강, 호수 등)에 적응하고 도시의 다른 부분들 사이의 교통 흐름에 영향을 미치며 다른 유형의 토지 이용 (산업, 주거 등)을 분리하는 데 사용됩니다. . IP 서브넷은 거의 동일합니다.

네트워크를 서브넷으로 만드는 데는 세 가지 주요 이유가 있습니다.

  • 다른 통신 매체와 다른 통신을 원할 수 있습니다. 두 건물 사이에 T1 WAN 연결이있는 경우이 연결의 끝에 IP 라우터를 배치하여 T1을 통한 통신을 용이하게 할 수 있습니다. 각 끝의 네트워크 (및 T1 자체의 "삽입"네트워크)는 고유 한 IP 서브넷에 할당되므로 라우터는 T1 회선을 통해 어떤 트래픽을 전송해야하는지 결정할 수 있습니다.

  • 이더넷 네트워크에서 서브넷을 사용하여 특정 네트워크 부분의 브로드 캐스트 트래픽 양을 제한 할 수 있습니다. 응용 프로그램 계층 프로토콜은 매우 유용한 목적으로 이더넷의 브로드 캐스트 기능을 사용합니다. 그러나 점점 더 많은 호스트를 동일한 이더넷 네트워크에 패키징하면 유선 (또는 무선 이더넷에서 무선)의 브로드 캐스트 트래픽 비율이 비 브로드 캐스트 트래픽 전달 문제를 야기 할 정도로 증가 할 수 있습니다. 예전에는 브로드 캐스트 트래픽이 각 브로드 캐스트 패킷을 검사하도록하여 호스트의 CPU를 압도 할 수있었습니다. 오늘날에는 그 가능성이 적습니다. 스위치 이더넷의 과도한 트래픽도 "알 수없는 대상에 프레임을 플로팅"하는 형태로 나타날 수 있습니다. 이 상태는 이더넷 스위치가 네트워크의 모든 대상을 추적 할 수 없기 때문에 발생하며 스위치 된 이더넷 네트워크가 무한대의 호스트로 확장 될 수없는 이유입니다. 알 수없는 대상으로 프레임을 넘치게하는 효과는 서브넷을 목적으로 과도한 브로드 캐스트 트래픽의 효과와 유사합니다.

  • 서로 다른 호스트 그룹간에 흐르는 트래픽 유형을 "경고"할 수 있습니다. 인쇄 서버 장치가 있고 인증 된 인쇄 큐 서버 컴퓨터 만 작업을 보내려고 할 수 있습니다. 프린트 서버 장치 서브넷으로 흐르는 트래픽을 제한함으로써 사용자는 자신의 PC가 프린트 계정을 우회하도록 프린트 서버 장치와 직접 통신하도록 구성 할 수 없습니다. 프린트 서버 장치를 모두 서브넷에 넣고 해당 서브넷에 연결된 라우터 나 방화벽에 규칙을 생성하여 프린트 서버 장치로 트래픽을 전송하도록 허용 된 호스트 목록을 제어 할 수 있습니다. 라우터와 방화벽 모두 일반적으로 패킷의 소스 및 대상 주소를 기반으로 패킷을 전달할지 여부를 결정할 수 있습니다. 방화벽은 일반적으로 강박적인 성격을 가진 라우터의 하위 종입니다. 라우터는 일반적으로 페이로드를 무시하고 패킷을 전달하는 반면 패킷의 페이로드에 대해 매우 우려 할 수 있습니다.)

도시를 계획 할 때 거리가 서로 교차하는 방식을 계획하고 회전 전용, 일방 통행 및 막 다른 길을 사용하여 교통 흐름에 영향을 줄 수 있습니다. 메인 스트리트의 길이는 30 블록, 각 블록에는 최대 99 개의 건물이 있어야합니다. 메인 스트리트의 각 블록이 각 블록에 대해 100 씩 증가하는 거리 번호를 갖도록 거리 번호 매기기를 계획하는 것은 매우 쉽습니다. 각 후속 블록의 "시작 번호"가 무엇인지 알기가 매우 쉽습니다.

IP 서브넷을 계획 할 때는 사용 가능한 호스트 ID 수 (빌드 번호)가 올바른 서브넷 수 (거리)를 구축하고 라우터를 사용하여 서브넷을 서로 연결 (교차로)해야합니다. 라우터에 지정된 허용 된 소스 및 대상 주소에 대한 규칙은 트래픽 흐름을 추가로 제어 할 수 있습니다. 방화벽은 강박 관념처럼 행동 할 수 있습니다.

이 답변의 목적으로 서브넷을 구축하는 것이 유일한 주요 관심사입니다. 도시 계획에서와 같이 십진수로 작업하는 대신 각 서브넷의 경계를 설명하기 위해 이진법으로 작업합니다.

계속 : IPv4 서브네팅은 어떻게 작동합니까?

(예 ... 최대 답변 크기 (30000 자)에 도달했습니다.)


13
@Joseph : 강의는 제 자신을 위해 너무 많은 시간을 전달했습니다. > smile <바이너리 섹션을 볼게요. 나는 수학에 대해 가르치기를 싫어한다.
에반 앤더슨

2
대답을 깨는 유일한 문제 는 IP 네트워크를 서브넷으로 효과적으로 분리하는 방법을 이해하기 전에 왜 서브넷 이 존재 하는지 (IP 라우팅) 이해해야한다는 것입니다. 한 주제를 다른 주제와 분리하여 논의 할 수있는 좋은 방법을 찾지 못했습니다. (실제로 VLSM을 사용하여 IP 네트워크를 설계하면 IP 라우팅을 이해 한 후에 자연스럽게 "이해됩니다"...
Evan Anderson

28
분해하지 마십시오.
Joseph Kern

3
serverfault에서 가장 포괄적 인 게시물에 +1
Scott Lundberg

3
주행 거리계 비유에만 해당됩니다. 이제 바이너리가 사람들에게 어떻게 작동하는지 설명하는 방법을 알고 있습니다.
phuzion

142

다음에서 계속 : IPv4 서브네팅은 어떻게 작동합니까?

ISP는 네트워크 ID 192.168.40.0/24(11000000.10101000.00101000.00000000)의 범위를 제공합니다. 방화벽 / 라우터 장치를 사용하여 네트워크의 다른 부분 (서버, 클라이언트 컴퓨터, 네트워크 장비) 간의 통신을 제한하고 네트워크의 여러 부분을 분리하고 싶습니다. IP 서브넷 (방화벽 / 라우터 장치 사이에서 라우팅 할 수 있음)으로

당신은 :

  • 서버 컴퓨터 12 대이지만 최대 50 % 더 얻을 수 있음
  • 스위치 9 개
  • 97 대의 클라이언트 컴퓨터이지만 더 많은 것을 얻을 수 있습니다

이 조각들로 192.168.40.0/24를 나누는 좋은 방법은 무엇입니까?

2의 힘을 생각하고 가능한 많은 장치를 사용하면 다음과 같은 결과를 얻을 수 있습니다.

  • 18 대의 서버 컴퓨터-2의 다음 최대 전력은 32입니다
  • 9 개 스위치-2의 다음 최대 전력은 16
  • 97 대의 클라이언트 컴퓨터-2의 다음 최대 전력은 128입니다

지정된 IP 서브넷에는 유효한 장치 IP 주소로 사용할 수없는 예약 된 두 개의 주소 (호스트 ID 부분에 0이있는 주소와 호스트 ID 부분에 모두 1이있는 주소)가 있습니다. 따라서 주어진 IP 서브넷의 경우 사용 가능한 호스트 주소 수는 32에서 서브넷 마스크의 비트 수에서 2를 뺀 2의 제곱에 2를 곱한 값입니다. 따라서 192.168.40.0/24의 경우 서브넷 마스크에 24 비트가 있음을 알 수 있습니다. 호스트 ID에 8 비트를 사용할 수 있습니다. 우리는 2에서 8의 거듭 제곱이 256이라는 것을 알고 있습니다. 256 개의 가능한 비트 조합이 8 비트 폭의 슬롯에 적합하다는 것을 의미합니다. 8 비트의 "11111111"및 "00000000"조합은 호스트 ID에 허용되지 않으므로 192.168.40.0/24 네트워크에 할당 할 수있는 254 개의 호스트가 남습니다.

254 개의 호스트 중에서 클라이언트 컴퓨터, 스위치 및 서버 컴퓨터를 해당 공간에 맞출 수있는 것 같습니다. 해보자.

"재생"할 8 비트의 서브넷 마스크가 있습니다 (IP 주소 192.168.40.0/24의 나머지 8 비트는 ISP가 제공 한 서브넷 마스크에 포함되지 않습니다). 8 비트를 사용하여 위의 장치를 수용 할 수있는 고유 한 네트워크 ID를 만드는 방법을 찾아야합니다.

가장 큰 네트워크 인 클라이언트 컴퓨터로 시작하십시오. 가능한 장치 수에서 다음으로 큰 2의 거듭 제곱은 128이라는 것을 알고 있습니다. 이진수로 표시되는 숫자 128은 "10000000"입니다. 다행스럽게도, 우리가 사용 가능한 8 비트 슬롯에 맞습니다 (그렇지 않은 경우 시작 서브넷이 너무 작아서 모든 장치를 수용 할 수 없음을 나타냅니다).

ISP가 제공 한대로 네트워크 ID를 가져 와서 단일 비트의 서브넷 마스크를 추가하여 두 개의 네트워크로 나눕니다.

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.00000000 - Old subnet mask (/24)

11000000.10101000.00101000.00000000 - 192.168.40.0 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - New subnet mask (/25)

말이 될 때까지 살펴보십시오. 서브넷 마스크의 길이를 1 비트 늘려서 네트워크 ID가 호스트 ID에 사용 된 1 비트를 차지하게했습니다. 1 비트는 0 또는 1 일 수 있으므로 192.168.40.0 네트워크를 두 개의 네트워크로 효과적으로 분할했습니다. 192.168.40.0/25 네트워크의 첫 번째 유효한 IP 주소는 맨 오른쪽 비트에 "1"이있는 첫 번째 호스트 ID입니다.

11000000.10101000.00101000.00000001 - 192.168.40.1 - First valid host in the 192.168.40.0/25 network

192.168.40.128 네트워크의 첫 번째 유효한 호스트도 마찬가지로 맨 오른쪽 비트에 "1"이있는 첫 번째 호스트 ID가됩니다.

11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid host in the 192.168.40.128/25 network

각 네트워크의 마지막 유효한 호스트는 모든 비트가 호스트 ID가됩니다 제외 를 "1"로 설정 가장 오른쪽 비트 :

11000000.10101000.00101000.01111110 - 192.168.40.126 - Last valid host in the 192.168.40.0/25 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid host in the 192.168.40.128/25 network

따라서이 방법으로 클라이언트 컴퓨터를 수용 할 수있을 정도로 큰 네트워크와 동일한 원리를 적용하여 더 작은 네트워크로 분류 할 수있는 두 번째 네트워크를 만들었습니다. 메모 해 봅시다 :

  • 클라이언트 컴퓨터-192.168.40.0/25-유효한 IP : 192.168.40.1-192.168.40.126

이제 서버와 스위치의 두 번째 네트워크를 분리하기 위해 동일한 작업을 수행합니다.

서버 컴퓨터는 12 대이지만 최대 6 대를 더 구입할 수 있습니다. 18에 대한 계획을 세워 보자. 2의 32를 32로하자. 바이너리에서 32는 "100000"이며 6 비트 길이이다. 192.168.40.128/25에는 7 비트의 서브넷 마스크가 남아 있으므로 "재생"을 계속하기에 충분한 비트가 있습니다. 서브넷 마스크 비트를 하나 더 추가하면 네트워크가 두 개 더 늘어납니다.

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.10000000 - Old subnet mask (/25)

11000000.10101000.00101000.10000000 - 192.168.40.128 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.10000001 - 192.168.40.129 - First valid host in the 192.168.40.128/26 network
11000000.10101000.00101000.10111110 - 192.168.40.190 - Last valid host in the 192.168.40.128/26 network

11000000.10101000.00101000.11000000 - 192.168.40.192 network ID
11111111.11111111.11111111.11000000 - New subnet mask (/26)
11000000.10101000.00101000.11000001 - 192.168.40.193 - First valid host in the 192.168.40.192/26 network
11000000.10101000.00101000.11111110 - 192.168.40.254 - Last valid host in the 192.168.40.192/26 network

이제 우리는 192.168.40.128/25를 두 개의 네트워크로 더 나누었습니다. 각 네트워크에는 26 비트의 서브넷 마스크 또는 총 62 개의 가능한 호스트 ID (2 ^ (32-26)-2)가 있습니다.

이는 두 네트워크 모두 서버와 스위치에 충분한 주소를 가지고 있음을 의미합니다! 메모 해 봅시다 :

  • 서버-192.168.40.128/26-유효한 IP : 192.168.40.129-192.168.40.190
  • 스위치-192.168.40.192/26-유효한 IP : 192.168.40.193-192.168.40.254

이 기술을 VLSM (가변 길이 서브넷 마스킹)이라고하며, 적절하게 적용하면 "핵심 라우터"의 라우팅 테이블이 더 작아집니다 ( "라우트 요약"이라는 프로세스를 통해). 이 예제의 ISP의 경우, 우리가 192.168.40.0/24를 어떻게 서브넷 화했는지 전혀 알 수 없습니다. 라우터에 192.168.40.206 (우리 스위치 중 하나)에 대한 패킷 바인딩이있는 경우 라우터의 라우팅 테이블에서 192.168.40.206이 네트워크 ID 및 서브넷 마스크 192.168.40.0/24와 일치하므로 라우터로 전달해야합니다. )와 라우터가 목적지로 이동합니다. 이렇게하면 서브넷 경로가 라우팅 테이블에서 벗어날 수 있습니다. (여기서 단순화하고 있지만 아이디어를 얻습니다.)

같은 방식으로 지리적으로 큰 네트워크를 계획 할 수 있습니다. 올바른 "도시 계획"을 미리 (각각의 하위 네트워크에있는 호스트의 수와 약간의 정확성과 미래를 예상하여) 예상하는 한 핵심 라우터에서 "요약을 요약하는"대규모 라우팅 계층 구조를 만들 수 있습니다 아주 적은 수의 경로로 위에서 보았 듯이 라우터의 라우팅 테이블에있는 경로가 많을수록 작업 수행 속도가 느려집니다. VLSM으로 IP 네트워크를 설계하고 라우팅 테이블을 작게 유지하는 것이 좋습니다.

예의 비 현실성

이 답변에서 허구의 세계는 허구입니다. 일반적으로 254 개 이상의 호스트 (트래픽 프로필에 따라 다름)를 사용하여 최신 스위치 이더넷에서 서브넷을 만들 수 있습니다. 의견에서 지적했듯이 라우터간에 / 24 네트워크를 사용하는 것은 Real Life (tm)와 일치하지 않습니다. 귀여운 예를 만들지 만 주소 공간을 낭비합니다. 일반적으로 / 30 또는 / 31 ( / 31의 작동 방식에 대한 자세한 내용 은 http://www.faqs.org/rfcs/rfc3021.html 을 참조 하십시오 . 두 라우터 사이의 지점 간 링크입니다.


작은 오류 : "마지막으로 유효한 호스트 ..."바로 뒤에있는 코드는 "첫 번째 유효한 호스트"로 되돌아갑니다. 나는 아직도 "마지막"이라고 말해야한다고 생각합니다.
JoeCool1986

@ JoeCool1986-잘 잡았습니다.
Evan Anderson

2
두 답변이 순서대로 유지되도록이 답변을 찬성하겠습니다.
l46kok

192.168.40.128에서 두 개의 서브넷을 만들고 192.168.40.192의 네트워크 ID를 만드는 부분에서 192는 어디에서 왔습니까?
user6607

@ user6607 서브넷은 간격없이 거꾸로 계산됩니다. 예를 들어 첫 번째 서브넷 0은로 표시됩니다 00000000. 두 번째 서브넷은 128그렇고 10000000세 번째 서브넷 19211000000등으로 표시됩니다 . 새 서브넷을 찾으려면 뒤로 거꾸로 세십시오.
Joseph Kern

76

서브네팅

서브네팅은 어렵지 않지만 위협적 일 수 있습니다. 가장 간단한 단계부터 시작하겠습니다. 이진수로 계산하는 법을 배웁니다.

이진

이진수는 기본 2 계산 시스템입니다. 두 숫자 (1과 0)로만 구성됩니다. 이러한 방식으로 카운팅이 진행됩니다.

1 = 001 ( 0 + 0 + 1 = 1)
2 = 010 ( 0 + 2 + 0 = 2)
3 = 011 ( 0 + 2 + 1 = 3)
4 = 100 ( 4 + 0 + 0 = 4)
5 = 101 ( 4 + 0 + 1 = 5)

따라서 각 1이 값의 자리 표시 자라고 생각하면 (모든 이진 값은 2의 거듭 제곱입니다)

1     1     1     1     1 = 31
16  + 8  +  4  +  2  +  1 = 31

그래서 ... 100000 = 32. 그리고 10000000 = 128. 그리고 11111111 = 255.

"255.255.255.0의 서브넷 마스크가 있습니다"라고 말하면, "11111111.11111111.11111111.00000000의 서브넷 마스크가 있습니다." 우리는 짧은 손으로 서브넷을 사용합니다.

주소의 마침표는 8 진 숫자 (8 진수)마다 구분됩니다. 이것이 IPv4가 32 비트 (8 * 4) 주소 공간으로 알려진 이유입니다.

왜 서브넷인가?

IPv4 주소 (192.168.1.1)가 부족합니다. 하위 네트워크는 사용 가능한 네트워크 (또는 호스트)의 양을 늘리는 방법을 제공합니다. 이것은 관리상의 이유와 기술적 이유 때문입니다.

각 IP 주소는 네트워크와 호스트의 두 부분으로 나뉩니다. 기본적으로 클래스 C 주소 (192.168.1.1)는 주소의 네트워크 부분에 처음 3 옥텟 (192.168.1)을 사용합니다. 호스트 부분으로서의 4 번째 옥텟 (.1).

기본적으로 클래스 C 주소의 IP 주소 및 서브넷 마스크는 다음과 같습니다.

IP     192.168.1.1 
Subnet 255.255.255.0

이진으로

IP     11000000.10101000.00000001.00000001
Subnet 11111111.11111111.11111111.00000000

이진 예제를 다시보십시오. 처음 세 옥텟이 네트워크에 사용되었다고 어떻게 말합니까? 네트워크 부분이 모두 어떻게되는지 확인하십시오. 그게 전부입니다. 확장하자.

호스트 부분에 단일 옥텟이 있다고 가정하면 (위의 예에서). 256 개의 호스트 만 가질 수 있습니다 (256은 0부터 계산되는 최대 옥텟 값). 그러나 또 다른 작은 트릭이 있습니다. 사용 가능한 호스트 주소에서 2 개의 호스트 주소를 빼야합니다 (현재 256). 범위의 첫 번째 주소는 네트워크 (192.168.1.0)이고 범위의 마지막 주소는 브로드 캐스트 (192.168.1.255)입니다. 따라서 실제로 하나의 네트워크에서 호스트에 대해 254 개의 사용 가능한 주소가 있습니다.

사례 연구

다음과 같은 종이를 주었다고 가정 해 봅시다.

Create 4 networks with 192.168.1.0/24.

이것 좀 봅시다. / 24를 CIDR 표기법이라고합니다. 255.255.255.0을 참조하는 대신 네트워크에 필요한 비트 만 참조합니다. 이 경우 32 비트 주소에서 24 비트 (3 * 8)가 필요합니다. 바이너리로 작성

11111111.11111111.11111111.00000000 = 255.255.255.0
8bits   + 8bits  + 8bits  + 0bits   = 24bits

다음으로 필요한 서브넷 수를 파악해야합니다. 4와 같습니다. 더 많은 네트워크를 만들어야하므로 (현재는 하나만 있음) 일부 비트를 뒤집을 수 있습니다.

11111111.11111111.11111111.00000000 = 255.255.255.0   = 1 Network OR /24
11111111.11111111.11111111.10000000 = 255.255.255.128 = 2 Networks OR /25
11111111.11111111.11111111.11000000 = 255.255.255.192 = 4 Networks (remember powers of 2!) OR /26

이제 / 26을 결정 했으므로 호스트 할당을 시작하겠습니다. 약간 간단한 수학 :

32(bits) - 26(bits) = 6(bits) for host addresses.

각 네트워크에 호스트에 할당 할 6 비트가 있습니다. 각 네트워크마다 2를 빼야한다는 것을 기억하십시오.

h = host bits    
2^h - 2 = hosts available

2^6 - 2 = 62 hosts 

Finally we have 62 hosts in 4 networks, 192.168.1.0/26

이제 호스트가 어디로 가야하는지 알아야합니다. 이진으로 돌아갑니다!

11111111.11111111.11111111.00,000000 [the comma is the new network/hosts division]

Begin to calculate:

11000000.10101000.00000001.00,000000 = 192.168.1.0 [First IP = Network Adress]
11000000.10101000.00000001.00,000001 = 192.168.1.1 [First Host IP]
11000000.10101000.00000001.00,000010 = 192.168.1.2 [Second Host IP]
11000000.10101000.00000001.00,000011 = 192.168.1.3 [Third Host IP]

And so on ... until ...

11000000.10101000.00000001.00,111110 = 192.168.1.62 [Sixty Second Host IP]
11000000.10101000.00000001.00,111111 = 192.168.1.63 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.01,000000 = 192.168.1.64 [First IP = Network Address]
11000000.10101000.00000001.01,000001 = 192.168.1.65 [First Host IP]
11000000.10101000.00000001.01,000010 = 192.168.1.66 [Second Host IP]

And so on ... until ...

11000000.10101000.00000001.01,111110 = 192.168.1.126 [Sixty Second Host IP]
11000000.10101000.00000001.01,111111 = 192.168.1.127 [Last IP = Broadcast Address]

So ... On to the NEXT network ....

11000000.10101000.00000001.10,000000 = 192.168.1.128 [First IP = Network Address]
11000000.10101000.00000001.10,000001 = 192.168.1.129 [First Host IP]

Etc ...

이런 식으로 전체 서브넷을 계산할 수 있습니다.

와일드 카드 와일드 카드 마스크는 역 서브넷 마스크입니다.

11111111.11111111.11111111.11000000 = 255.255.255.192 [Subnet]
00000000.00000000.00000000.00111111 = 0.0.0.63 [Wild Card]

더욱이

고급 주제에 대해서는 '수퍼 네팅'및 'VLSM (가변 길이 서브넷 마스크)'이라는 용어를 사용합니다.

응답하는데 너무 오래 걸린다는 것을 알 수 있습니다 ... 한숨


1
"위의 예에서 호스트 부분에 단일 옥텟을 부여했습니다. 호스트는 255 개만 가질 수 있습니다 (255는 옥텟의 최대 값임). 또 다른 작은 트릭이 있습니다. 2 개의 호스트 주소를 빼야합니다. 범위의 첫 번째 주소는 네트워크 (192.168.1.0)이고 범위의 마지막 주소는 브로드 캐스트 (192.168.1.255)입니다. 따라서 실제로 사용할 수있는 주소는 253 개입니다. 하나의 네트워크에있는 호스트. "... 잘못되었습니다.
joeqwerty

1
옥텟에 대해 256 개의 가능한 값이 있습니다 : 0에서 255까지 총 256 개입니다. 256 -2 (네트워크 및 브로드 캐스트 주소) = 254 개의 가능한 호스트 주소.
joeqwerty

죄송합니다. 감사! :-) 하나씩, 나는 그 특정 위업을 어떻게 관리했는지 전혀 모른다.
Joseph Kern

1
-1 죄송합니다. 1993 년 RFC 1519 년 이래로 "클래스"가 없었습니다. 그들은 혼란스럽고 많은 오해를 유발합니다.
Chris S

Chris는 옳을 지 모르지만 CCNA 및 대부분의 저학년 과정에서 수업은 여전히 ​​2000 년대 초반까지 진행되었습니다.
Joseph Kern

34

간단한 히스토리 레슨 : 원래 유니 캐스트 IPv4 주소는 각각 '기본'마스크 길이 (클래스 풀 서브넷 마스크라고 함)를 갖는 3 개의 클래스로 분류되었습니다.

  • A 급 : 1.0.0.0-> 127.255.255.255 범위의 모든 것. 255.0.0.0의 고급 서브넷 마스크 (CIDR 표기법에서 8)
  • 클래스 B : 128.0.0.0-> 191.255.255.255 범위의 모든 것. 255.255.0.0의 클래스 형 서브넷 마스크 (CIDR 표기법에서 / 16)
  • 클래스 C : 192.0.0.0-> 223.255.255.255 범위의 모든 것. 255.255.255.0의 클래스 형 서브넷 마스크 (CIDR 표기법에서 / 24)

IP 주소 공간을 효율적으로 사용하기 위해 서로 다른 규모의 조직에 다른 종류의 IP 주소를 할당 할 수 있다는 아이디어가있었습니다.

그러나 IP 네트워크가 성장함에 따라이 접근 방식에 문제가 있음이 분명해졌습니다. 세 명만 말하면 :

고급스러운 세계에서 모든 서브넷 에는 / 8, / 16 또는 / 24의 마스크가 있어야합니다. 이는 구성 할 수있는 가장 작은 서브넷이 / 24이므로 254 개의 호스트 주소가 허용되었습니다 (.0 및 .255는 각각 네트워크 및 브로드 캐스트 주소로 예약 됨). 두 개의 라우터 만 연결된 지점 간 링크에서 이는 매우 낭비였습니다.

이 제한이 완화 된 후에도 이전 라우팅 프로토콜 (예 : RIPv1 )은 IP 접두사와 관련된 마스크 길이를 알리지 않았습니다. 특정 마스크가 없으면 동일한 클래스 네트워크에서 직접 연결된 인터페이스의 마스크를 사용하거나 클래스 마스크를 사용합니다. 예를 들어, / 30 마스크가있는 라우터 간 링크에 네트워크 172.16.0.0을 사용하려면 172.16.0.0-172.16.255.255의 모든 서브넷에 / 30 마스크 (16384 개의 서브넷, 각각 2 개의 사용 가능한 IP가 있음)가 있어야합니다. ).

인터넷 라우터의 라우팅 테이블은 점점 더 많은 메모리를 차지하기 시작했습니다. 이것은 '라우팅 테이블 폭발'로 알려져 있습니다. 예를 들어 공급자가 16 개의 연속 된 / 24 네트워크를 보유한 경우 전체 범위를 포괄하는 단일 요약이 아닌 16 개의 접두사를 모두 광고해야합니다.

두 가지 관련 개선 을 통해 위의 한계를 넘어 설 수있었습니다.

  1. 가변 길이 서브넷 마스크 (VLSM)
  2. CIDR (클래스리스 도메인 간 라우팅)

VLSM은 동일한 고급 네트워크 내에서 다른 서브넷 마스크를 지원하는 라우팅 프로토콜의 기능을 나타냅니다. 예를 들면 다음과 같습니다.

192.168.1.0/24

다음과 같이 나눌 수 있습니다.

192.168.1.0/25
192.168.1.128/26
192.168.1.192/27
192.168.1.224/27

주소 공간을 훨씬 더 효율적으로 사용할 수있었습니다. 서브넷은 연결된 호스트 / 라우터 수에 맞게 올바르게 크기를 조정할 수 있습니다.

CIDR은 VLSM을 가져와 다른 방식으로 확장합니다. CIDR을 사용하면 단일 클래스 형 네트워크를 더 작은 서브넷으로 분할 할 수있을뿐만 아니라 여러 클래스 형 네트워크를 단일 요약으로 집계 할 수 있습니다. 예를 들어, 다음 클래스 B (/ 16) 네트워크 :

172.16.0.0/16
172.17.0.0/16
172.18.0.0/16
172.19.0.0/16

단일 접두사를 사용하여 집계 / 요약 할 수 있습니다.

172.16.0.0/14

서브넷 측면에서 : 서브넷 마스크의 길이는 32 비트입니다. 마스크 길이는 주소의 네트워크 부분을 식별하는 비트 수를 나타냅니다. 예를 들면 다음과 같습니다.

10.1.1.0/24
  • 고급 서브넷 마스크는 / 8입니다.
  • 실제 서브넷 마스크는 / 24입니다.
  • 서브넷 사용을 위해 16 비트 (24-8)가 '차용'되었습니다.

이는 전체 10.0.0.0/8 네트워크가 / 24s로 서브넷으로 가정되면이 범위 내에 65536 (2 ^ 16) 개의 서브넷이 있음을 의미합니다. (이는 사용중인 플랫폼이 서브넷 번호 0과 255를 지원한다고 가정합니다. Cisco의 ip subnet-zero를 참조하십시오).

주소의 '호스트 부분'에 8 비트가 남아 있습니다. 이는 256 개의 사용 가능한 IP 주소 (2 ^ 8)가 있고 그 중 2 개는 예약되어 있음을 의미합니다 (10.1.1.0은 네트워크 주소, 10.1.1.255는 서브넷 지정 브로드 캐스트 주소). 이 서브넷에 254 개의 사용 가능한 IP 주소가 남습니다. ((2 ^ 8)-2)


4
실제로 5 개의 수업이있었습니다.
dbasnett

5
사실, '서브 투입 소개'질문에 멀티 캐스트 및 예약 된 클래스 E 주소를 사용해야합니까? :)
Murali Suriar

2
당신은 인트로 질문에 역사를 가져 왔습니다 ... 그런 다음 불완전한 채로 두십시오. 어느 쪽이 더 나쁜지 확실하지 않습니다.
Chris S

7

네트워크 범위 : 네트워크는 항상 2 개의 숫자로 참조됩니다. 하나는 네트워크를 결정하고 다른 하나는 해당 네트워크에있는 컴퓨터 (또는 호스트)를 결정합니다. 각 Nertwork 주소의 길이는 32 비트이므로 두 숫자 모두이 32 비트에 맞아야합니다.

네트워크 번호 지정은 네트워크 IP 범위를 요청할 때 ICANN이 전달하는 것이므로 중요합니다. 우리가 가지고 있지 않다면 아무도 내 네트워크와 AT & T의 차이점을 알 수 없습니다. 따라서이 숫자는 고유해야하지만 아무도 내 네트워크에있는 호스트에 숫자를 할당하려고하지 않습니다. 따라서 분할-첫 번째 부분은 네트워크 사람들이 관리하고 두 번째 부분은 모두 내가 원하는 모든 기계에 제공하는 것입니다.

네트워크 번호는 특정 비트 수로 고정되어 있지 않습니다. 예를 들어, 내가 관리 할 머신이 200 대에 불과한 경우 24 비트를 사용하는 네트워크 번호에 만족할 것입니다. -최대 255 개의 호스트에 충분합니다. 네트워크 번호는 24 비트를 사용하므로 많은 비트를 가질 수 있으며 많은 사람들이 자신의 네트워크를 가질 수 있습니다.

과거에는 이것을 클래스 C 네트워크라고했습니다. 클래스 B는 네트워크 번호로 16 비트를 사용하고 클래스 A는 8 비트를 사용하므로 클래스 A 네트워크는 몇 개만 존재합니다.

오늘날이 명명 규칙은 유행에서 벗어났습니다. CIDR이라는 개념으로 대체되었습니다. CIDR은 슬래시 다음에 호스트의 비트 수를 명시 적으로 지정합니다. 따라서 위의 예제 (클래스 C)를 이제 CIDR / 24라고합니다.

이렇게하면 300 개의 호스트를 관리 할 경우 클래스 B 네트워크가 필요합니다. 이제 / 23 CIDR을 얻을 수 있으므로 9 비트, 네트워크 번호는 23 비트입니다. ICANN에는 이러한 종류의 네트워크가 없을 수도 있지만 내부 네트워크가 있거나 ISP에서 부분 네트워크를 임대하는 경우 특히 모든 고객에게 / 29를 제공 할 수 있으므로 관리하기가 더 쉽습니다 ( 더 많은 사람들이 사용 가능한 IP 주소의 작은 조각을 가질 수 있도록하는 3 비트 또는 최대 8 대의 컴퓨터). IPv6를 얻을 때까지 이것은 매우 중요합니다.


그러나 ... / 24 CIDR이 이전 클래스 C 네트워크와 동일하다는 것을 알고 있지만 / 16은 클래스 B이고 / 8은 클래스 A입니다 ... 나는 여전히 / 22를 계산하려고 시도했습니다. 내 머리. 다행히도 나를 위해 이것을하는 도구가 있습니다 :)

그러나 / 24가 호스트의 경우 8 비트 (네트워크의 경우 24 비트)임을 알고 있다면 / 23이 호스트 수를 두 배로 늘리는 여분의 비트를 제공한다는 것을 알고 있습니다.


-1 죄송합니다. "역사적"참조 이외의 클래스를 언급하는 것은 요즘 적합하지 않습니다. 그들은 1993 년에 RFC 1519에 의해 공식적으로 폐기 된 "패션에서 벗어나지"않았다. 그들은 모든 h * ll로 혼동되어 많은 오해를 일으킨다.
Chris S

동적 라우팅 프로토콜의 일부 구현은 클래스 별 경계에 따라 요약되므로이를 아는 것이 여전히 도움이됩니다.
Ben

5

그 과정에서 몇 가지 관련 질문을 제기하고 답변하겠습니다.

  • 255.255.255.0그렇게 자주 보입니까?
  • 192.168.0.1?
  • 127.0.0.1?

왜 그런 이상한 숫자가 255, 192, 168, 127입니까?


8 + 8 + 8 + 8 비트 점 분리 10 진수

같은 인터넷 주소 194.60.38.10 사용하는 점으로 구분 된 십진수 표기법은 8 + 8 + 8 + 8 비트에 최대 32 개 비트를 분할합니다. 점으로 구분 된 십진수는 각 숫자를 이진수 로 변환 한 다음로 왼쪽 패딩하는 것을 의미 0합니다.

예를 들어 .60.→ 60 = 32 + 16 + 8 + 4 → 111100.00111100..

따라서 194.60.38.10은 11000010.00111100.00100110.0000101038 → 100110, 10 → 1010등 으로 4x8 = 32 비트 주소에 대해 점 분리 십진수입니다 . 194는 8 비트를 모두 요구합니다. 나머지는 채워집니다.

패딩

8 비트 바이너리에서 255, 192 및 127에 대해 생각하면 특정 10 진수가 왜 흔한 지 더 쉽게 이해할 수 있습니다.

  • 255 = 11111111
  • 192 = 11000000
  • 127 = _1111111
  • 128 = 10000000

이 10 진수는 ■■■■■■■■, ■ □□□□□□□ 및 □ ■■■■■■■와 같은 시각적으로 편리한 8 비트 블록을 나타냅니다. 따라서 8 비트 제한 때문에 256 = 2⁹를 본 적이 없으며 127 = 128−1 = 2⁸−1은 2의 거듭 제곱입니다. 2의 거듭 제곱 10………00000은 이진.

  • 168 = 10101000

서브넷 마스크 : 내 것이 내 것 + 너의 것이 너의 것

그런 다음 서브넷 마스크 는 각 32 비트 인터넷 주소를 네트워크 ID와 호스트 ID로 나눕니다. 인터넷 주소는 1과 0을 혼합하여 사용할 수 있지만 서브넷 마스크는 1로 시작하고 0으로 만 끝납니다.

■■□□□□■□|□□■■■■□□|□□■□□■■□|□□□□■□■□ IP
■■■■■■■■|■■■■■■■■|■■■■■■■■|□□□□□□□□ subnet

첫 8 + 8 + 8 = 24 비트를 블랙 아웃하고 마지막 8 비트를 끄는 것은 IP를 분리하는 방법입니다. ■■ □□□□ ■ □ | □□ ■■■■ □□ | □□ ■ □□ ■ ■ □ | □□□□ ■ □ ■ □ 두 조각으로 :

■■□□□□■□|□□■■■■□□|□□■□□■■□          network
                             □□□□■□■□ host

하위 네트워크 소유자 (예 : OmniCorp )가 더 많은 내부 IP를 원하면 다음과 같이 네트워크 오른쪽에서 더 많은 (8 + 8 = 16 비트)을 구입할 수 있습니다.

■■□□□□■□|□□■■■■□□|□□■□□■■□|□□□□■□■□ IP
■■■■■■■■|■■■■■■■■|□□□□□□□□|□□□□□□□□ subnet
■■□□□□■□ □□■■■■□□                    network
                   □□■□□■■□ □□□□■□■□ host

32 비트 = 2³² = 4,294,967,296- 옵션 주소 공간에는 분명히 상충 관계가 있습니다. 더 많은 네트워크 ID (왼쪽)를 구입하면 내부 네트워크에 더 많은 호스트 ID (오른쪽)를 할당 할 수 있습니다.

저렴한 사람들은 따라서 서브넷 마스크를

255.255.255.0 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | □□□□□□□□.

더 싼 사람들도

255.255.255.128 = ■■■■■■■■ | ■■■■■■■■ | ■■■■■■■■ | ■ □□□□□□□□

또는 255.255.255.192 = ■■■■■■■■ | ■■■■■■■■ || ■■■■■■■ || ■■ □□□□□□.

민속학에 따르면 실제로 로저 밀러는 아니지만 원래 King of the Road를 쓴 255.255.255.254 마스크가있는 낮은 시스템 관리자였으며 “나는 큰 서브넷이 없습니다. ”.

나는 담배를 엉덩이까지 내린다

밀러의 내레이터와 같이 서브넷 마스크 는 가지고 있지 않은 모든 것을 계산하기 때문에 (낮은 숫자의 마스크가 왜 이렇게 높은 숫자로 채워 집니까? )


IP 뒤의 슬래시 란 무엇을 의미합니까? (예 : 194.60.38.10/24)

서브넷 마스크 (“그들의”를“우리”와 나누는)는 항상로 시작하기 1때문에, 우리는 처음부터 2의 거듭 제곱을 파악하는 것보다 2의 거듭 제곱을 더 싫어하기 때문에 누군가가 발명했습니다. CIDR (IP 후 슬래시).

194.60.38.10/24는 "서브 마스크에 24 개의 마스크가 있고 나머지는 0"을 의미하므로

■■■■■■■■ | ■■■■■■■ || ■■■■■■■■ | □□□□□□□□““그들”에 속하는 8 + 8 + 8 비트와 8 비트 “우리”에 속합니다.

위의 호보 애국가를 뒤집 으면

  • /31 작곡가입니다
  • /24중산층 ( 255.255.255.0= ■■■■■■■■ || ■■■■■■■■ | ■■■■■■■■■ □□□□□□□□
  • /16 풍부하다 ■■■■■■■■ || ■■■■■■■■ || □□□□□□□□ | □□□□□□□□
  • /8 ■■■■■■■■ | □□□□□□□□ | □□□□□□□□□ | □□□□□□□□□
  • /1또는 /0IANA 또는 무언가 일 것입니다.





bc -l; obase=10; 60예를 들어 사용하십시오 .


대답과 어떤 관계가 있습니까? 답에 집중하는 것입니까? :)
simhumileco

4

위의 내용은 정확하지만 (죄송합니다 .TL; DR) 서브넷을 계산하면 여전히 많은 네트워크 관리자에게 많은 슬픔이 발생합니다. 실제로 서브넷 계산을 수행하는 매우 쉬운 방법이 있으며, 대부분 머리에서 할 수 있으며 암기해야 할 것이 거의 없습니다. 대부분의 응용 프로그램에서는 이진 표현을 이해하지 않아도되지만 서브넷을 완전히 이해하는 데 도움이됩니다. 여기서는 IPv4에 대해서만 설명합니다. IPv6은이 논의의 범위를 벗어납니다.

이것을 기억:

기억해야 할 세 가지 중요한 사항이 있습니다. 모든 서브넷은 2의 거듭 제곱을 기반으로하며 두 개의 키 번호는 256과 32입니다. 나중에 자세히 설명합니다.

먼저 2의 거듭 제곱이 포함 된 테이블을 살펴 보겠습니다.

2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256

2의 거듭 제곱 계산은 쉽습니다. 거듭 제곱의 각 정수 증가는 결과의 두 배입니다. 1 + 1 = 2, 2 + 2 = 4, 4 + 4 = 8, 8 + 8 = 16 등입니다. 서브넷의 총 주소 수는 항상 2의 제곱이어야합니다 .

IPv4 서브넷의 각 8 진수는 256까지 올라가므로 256 은 매우 중요한 숫자 이며 나머지 수학의 기초를 형성합니다.

서브넷 크기

"마스크가 255.255.255.248 인 경우 서브넷에 몇 개의 주소가 있습니까?" 라는 간단한 질문으로 시작하겠습니다. 우리는 지금 처음 세 옥텟을 무시하고 마지막을 살펴볼 것입니다. 256에서 248을 뺍니다. 256에서 248은 8입니다. 사용 가능한 8 개의 주소 (네트워크 및 브로드 캐스트 주소 포함)가 있습니다. "16 개의 주소를 가진 서브넷을 원한다면 서브넷 마스크는 무엇입니까?" 256 빼기 16은 240과 같습니다. 서브넷 마스크는 255.255.255.248입니다.

이제 256 개의 주소 (역사적으로 "클래스 C") 이상으로 확장하려면 조금 더 복잡해집니다. 마지막 옥텟이 0이고 세 번째 옥텟이 240이면 (255.255.240.0) 우리는 세 번째 옥텟에서 수학을 수행하고 16 개의 주소가 있음을 발견합니다. 따라서 16에 256 (마지막 옥텟의 주소 수)을 곱하면 4,096이됩니다. 마지막 두 옥텟이 모두 0 인 경우 (예 : 255.240.0.0) 두 번째 옥텟에서 빼기 결과 (다시 16이라고 함)를 곱하고 256 (세 번째 옥텟의 주소)을 곱한 다음 다시 곱합니다. 1,048,576 개의 주소를 얻으려면 256 (마지막 옥텟의 주소). 그렇게 쉬워요! (반복하기가 좀 더 어렵습니다. 1,048,576 개의 주소를 가진 서브넷을 원한다면 256에서 빼는 숫자를 얻기 위해 그 숫자를 256으로 나누어야합니다.)

네트워크 주소

서브넷 마스크를 계산하는 방법을 알았으므로 네트워크 주소가 무엇인지 어떻게 알 수 있습니까? 쉽습니다. 항상 서브넷에있는 주소의 배수입니다. 따라서 서브넷에 16 개의 주소가있는 경우 가능한 네트워크 주소는 0, 16, 32, 48, 64 등 최대 240입니다. (0은 숫자에 곱한 숫자의 유효 배수입니다. 0은 0과 같습니다.)

물론 브로드 캐스트 주소는 범위의 마지막 주소가됩니다. 따라서 서브넷에 16 개의 주소가 있고 10.3.54.64의 네트워크 주소를 선택한 경우 브로드 캐스트 주소는 (64 + 16-1 = 79) 10.3.54.79가됩니다.

CIDR 표기법

CIDR 표기법은 어떻습니까? 이를 IPv4 스타일 서브넷 마스크와 어떻게 변환합니까?

우리의 두 가지 힘을 기억하십니까? 자, 이제 256 이외의 다른 키 번호가 있습니다. 32. CIDR 표기법은 IPv4 주소의 유효 비트 수를 설명하며 IPv4 주소에는 32 비트가 있으며 각 옥텟 당 8 개입니다. 따라서 서브넷 마스크가 255.255.255.240이면 16 개의 주소입니다. 위의 "2의 거듭 제곱"표를 보면 16이 2의 4 승 (2 ^ 4)임을 알 수 있습니다. 따라서 32에서 전력 번호 4를 빼고 28을 얻습니다. 서브넷 마스크 255.255.255.240에 대한 CIDR 표기법으로 CIDR 표기법은 / 28입니다.

CIDR이 / 28 인 경우 32에서 32를 빼서 4를 얻습니다. 16을 얻기 위해 2를 제 4의 제곱 (2 ^ 4)으로 올리십시오. 그런 다음 256에서 16을 빼서 240을 얻습니다. 또는 255.255.255.240.


그래도 PC가 서브넷 마스크를 사용하는 방법에 대해서는 여전히 모호합니다. PC의 응용 프로그램은 데이터를 보내려고 할 때 패킷으로 캡슐화합니다. 서브넷 마스크가 패킷 캡슐화 방법을 결정합니까? 예를 들어, PC가 로컬 네트워크에서 패킷을 보내려면 이더넷 프레임 en.wikipedia.org/wiki/Ethernet_frame 을 사용하고 네트워크 외부에서 원하는 경우 tcp 패킷 en.wikipedia.org/wiki를 사용합니다. /… ?
aquagremlin

기본적으로 PC가 데이터를 보낼 위치를 결정하는 방법을 모르겠습니다. 이더넷 네트워크는 버스가 어디든가는 것과 같습니다. PC의 이더넷 잭을 통해 패킷을 내보내는 것은 일반적인 이벤트이므로 패킷 자체가 누가 응답하는지 결정해야합니다. 로컬 장치 (스위치의 LAN 또는 다른 PC)에 의해 픽업 될 예정인 패킷은 라우터에 의해 픽업 될 패킷과 다르게 보일 수 있습니다.
aquagremlin

이것은 TCP 아래의 계층에서 발생합니다. 각 장치에는 각 장치의 ARP 테이블에있는 IP 주소와 연결된 하드웨어 주소 (MAC)가 있습니다. 이것은 발견을 통해 구축됩니다. 패킷이 로컬 네트워크의 호스트를 대상으로하는 경우 대상 장치의 MAC 태그가 지정됩니다. 패킷이 원격 호스트를 대상으로하는 경우 로컬 네트워크의 라우터에 대한 MAC 태그가 지정됩니다. 라우터를 통과 할 때 MAC은 제거되고 다음 홉 라우터의 MAC으로 태그가 지정됩니다. 서브넷은 단지 로컬 네트워크의 범위를 정의합니다. (간단한 <500 자 버전입니다.)
Jonathan J

2

또한 NAT에 대한 언급이 적어도 있어야한다고 생각합니다. NAT는 IPv4 주소 소진으로 인해 서브넷 대신 현대 네트워크에서 일반적으로 사용되기 때문입니다. (또한 서브넷에 대해 처음 배울 때 WiFi 라우터가 만든 네트워크와 서브넷이 어떻게 관련되는지에 대해서는 매우 혼란 스러웠습니다).

NAT (Network Address Translation)는 하나의 주소 공간 (IP : Port)을 다른 주소 공간에 매핑하여 개인 네트워크를 만드는 데 사용되는 기술입니다 (일반적으로). 주로 Wi-Fi 라우터, 조직 (예 : 대학 또는 회사) 또는 ISP에 의해 하나의 공개 주소 뒤에 여러 개인 IP의 개인 네트워크를 만드는 데 사용됩니다.

실제 주소 변환은 일반적으로 라우터 인 NAT 가능 노드에서 투명하게 수행 됩니다. Full Cone, Address Restricted, Port limited 등의 여러 가지 형태 또는 이들을 혼합하여 노드 전체의 연결을 시작하는 방법을 나타냅니다.

자세한 내용은 Wikipedia 에서 찾을 수 있지만 예를 들어 2 개의 장치가 연결된 Wifi 라우터를 고려하십시오. 라우터의 공용 IP는 10.9.20.21/24이고 장치의 IP (개인 IP)는 A: 192.168.0.2이고 B: 192.168.0.3라우터의 IP 는 R: 192.168.0.1입니다. 따라서 Aserver에 연결하려면 S: 10.9.24.5/24(실제로 라우터와 다른 서브넷에 있음) 다음을 수행하십시오.

  1. A는 R소스 IP 192.168.0.2, src 포트 (예 :) 14567및 대상 IP :( 10.9.24.5실제로는 TCP 헤더의 일부 임 )를 사용하여 (기본 게이트웨이가 될) IP 패킷을 보냅니다 .
  2. 라우터 (NAT 가능)는 포트 14567를 장치에 매핑 A하고 IP 패킷의 소스를 10.9.20.21(라우터의 공용 IP)로 변경합니다. 이것은 IP 패킷이 실제로 변경되지 않는 위에서 설명한 서브넷과는 대조적 입니다.
  3. S일련의 TCP 패킷을 수신하고 (src IP : 10.9.20.21, src Port : 사용 14567) 대상 필드에 해당 값으로 응답 패킷을 보냅니다.
  4. R대상 포트를 확인하고 14567패킷을로 전달합니다 A.
  5. A 응답 패킷을 수신합니다.

위와 같은 상황 B에서 동일한 소스 포트 ( 14567)에서 연결을 열려고하면로 R보내기 전에 다른 포트에 매핑됩니다 (및 나가는 패킷의 포트가 변경됨) S. 즉, IP 대신 포트 변환도 있습니다.

여기에 유의해야 할 두 가지 :

  1. 이 주소 변환으로 인해 특별한 기술을 사용하지 않고 개인 네트워크의 장치에 연결을 시작하지 못하는 경우가 종종 있습니다.
  2. 동일한 장치에서 서버로의 총 TCP 연결 제한 (65536 = 2 ^ 16)은 이제 NAT 뒤에있는 모든 장치에 위에서 사용 된 NAT 형식으로 전체적으로 적용됩니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.