서브넷은 항상 연속적인 1입니까? [복제]


25

서브넷 마스크 뒤에있는 기본 전제를 ​​이해합니다 (예 :) 255.255.255.0. 그러나 내가 본 모든 서브넷 예제는 (왼쪽에서 오른쪽으로) 인접한 1 (HI 비트)입니다. 예를 들어 255.255.0.0( /16)는 다음 8 진수로 변환됩니다.

11111111 . 11111111 . 00000000 . 00000000

나는 생각 이 비트가 있어야 서브넷의 요점은 파생 호스트 ID로하고 가능한 장치 ID의 범위 때문에, 인접. 그러나 서브넷 마스크가 다음과 같이 말 255.17.255.0하거나 궁금한 점이 있습니까 ?

11111111 . 00010001 . 11111111 . 00000000
  • 이런 일이 일어 날까? 아니면 인접 1없이 서브넷이 존재하는 것이 불가능합니까? 그렇다면 왜 그렇습니까?
  • 그렇지 않다면, 그렇게 할 수 있다면 왜 당신에게 (일부 구체적인 예) 있습니까?

@MSalters 아시다시피, 자동 주석이 "가능한 복제 가능 ..."으로 변경되어 더 이상 수동으로 주석을 입력 할 필요가 없습니다. ;-)
Chris Jester-Young

짧은 대답 : 그렇습니다.
Octopus

답변:


18

RFC의 3.1 섹션 은 클래스리스 도메인 간 라우팅에서 허용되는 마스크를 보여줍니다. 라우팅이 제대로 작동하려면 비트가 연속적이어야합니다.

또한 논리적으로 생각할 때 이상한 임의의 네트워크 마스크를 갖는 것은 실제로 의미가 없습니다.


28

예, 서브넷 마스크는 시작시 항상 1입니다. 이진 표현을 시작할 때 서브넷 크기 표시기에 1이 없으면 서브넷 크기 표시기가 최신 표준을 사용하는 적절한 "서브넷 마스크"가 아니라고 말할 수 있습니다.

RFC 1219 는 이전 RFC 950이 비 연속 비트를 허용한다고 명시하고 있습니다. 실제로 RFC 950 15 페이지 (섹션 3)에는 "비 연속 서브넷 비트 표시"예제가 있지만 이러한 서브넷을 CIDR 표기법으로 변환 할 수있는 방법은 없습니다 .CIDR 스타일 표기법은 IPv6에서 사용한 것입니다 ( RFC 1884 페이지 7 이후 2.4 절의 첫 번째 문장 부터 IPv6 네트워크에 대해 비 연속적인 비트는 널리 지원되지 않았습니다 RFC 1219 의 방법은“가장 중요한 비트 작업에서 서브넷 비트 (마스크 = 1)가 할당됩니다. "최소를 향해." ( Sami의 답변에서 언급 한 RFC 4632 섹션 3.1 은 CIDR 표기법에 대한 공식 표준을 가리 킵니다.)

RFC 1878 2 페이지 에는를 제외한 모든 IPv4 서브넷에 대한 표준 "서브넷 마스크"표기법이 나와 /0있습니다.

그러나 나는 사미의 대답에 대해 조금 자세히 설명하고,“왜”(질문이 요구 한 구체적인 예를 통해)를 조사 할 것입니다 ...

일부 전문가 급 Cisco 장비는 비트를 반전시키는 "와일드 카드 마스크"를 지원합니다. 따라서 일반 서브넷은이라는 것으로 나타낼 수 있습니다 00000000.00000000.00000000.11111111.

Cisco의 와일드 카드 마스크를 사용하면 모든 0을 먼저 설정해야한다는 규칙이 없었습니다. 그래서 당신은 사용할 수 있습니다 00000000.00000000.00000000.11111110.

그러면 모든 짝수 번호의 IP 주소가 포함 된 그룹이 만들어집니다.

시스코의 교육에서 다루었으므로 시스코의 전문 인증을위한 시험 과정에서 그러한 문제가 발생할 수 있기 때문에이 점을 알아야합니다.

그러나 나는 그것이 쓸모가 없다고 생각합니다. 짝수 번호 또는 홀수 번호를 사용하여 네트워크를 반으로 나누는 대신, 절반 이하의 일반 서브넷을 만들어서 낮은 번호의 주소와 높은 번호의 주소를 사용하여 네트워크를 반으로 나눌 수 있습니다.

연속되지 않은 비트를 가진 와일드 카드 마스크는 그다지 유용하지 않았으며 작업하기가 더 어려울 수 있습니다. 서브넷 마스크 비트가 1로 설정된 지점은 비트가 장치의 서브넷을 식별하는 데 도움이된다는 것입니다. 이러한 비트를 주소 시작 부분에 멋지게 그룹화하는 대신 주소 전체에 퍼뜨려 야 할 이유는 없습니다. . 결과적으로 이러한 유형의 마스크를 지원하는 것은 큰 이점없이 복잡성을 더했습니다.

시스코는 결국 "와일드 카드 마스크"에 대한 지원을 중단했기 때문에 이러한 비 전통적인 서브넷 마스크에 대한 언급이 없다는 데 동의 한 것으로 생각합니다. .

많은 소프트웨어가 새로운 트렌드 / 표준을 따르고 그러한 네트워크 디자인을 거부하기 때문에 마스크에 인접하지 않은 "서브넷 비트"를 가진 네트워크를 만들려고 시도조차하지 않을 것입니다. 구형 소프트웨어를 사용하더라도 네트워크를 다시 디자인하지 않고도 최신 소프트웨어를 사용할 수 있도록 네트워크를 쉽게 수정할 수 있기를 원할 것입니다. 따라서 인접한 "서브넷 비트"가 유일한 방법입니다.

시험에 대한 질문을 받으면 모든 1이 주소의 시작 부분에 있어야한다고 확신합니다. 이것이 제정신의 테스터가 대부분의 학생들이이 시대에 배우기를 원하는 것입니다.


+1-마지막에 1을 ​​모두 사용하지 않고 와일드 카드 마스크를 사용한 것을 본 유일한 시간은 잘못 입력 된 마스크입니다.
Mark Henderson

2

RFC 950 은 2.2 장에서 말합니다.

 To support subnets, it is necessary to store one more 32-bit
  quantity, called my_ip_mask.  This is a bit-mask with bits set in
  the fields corresponding to the IP network number, and additional
  bits set corresponding to the subnet number field.

 The code then becomes:

   IF bitwise_and(dg.ip_dest, my_ip_mask)
                               = bitwise_and(my_ip_addr, my_ip_mask)
         THEN
             send_dg_locally(dg, dg.ip_dest)
         ELSE
             send_dg_locally(dg,
                    gateway_to(bitwise_and(dg.ip_dest, my_ip_mask)))

따라서 제안은 연속 비트에 신경 쓰지 않는 간단한 비트 연산에 관한 것입니다.

1985 년에 CPU와 메모리는 훨씬 제한적이어서 더 복잡한 작업은 시간에 맞지 않을 것입니다.

3 장에서 더욱 명백해진다.

네트워크에서 3 비트 서브넷 필드가 사용 중이며 (01011000), 즉 주소 마스크는 255.255.255.88입니다.

그러나 이러한 RFC는 오래된 것 같습니다. 예를 들어 Windows 7 SP1에서는 이러한 서브넷 마스크를 설정할 수 없습니다.

Windows 7에 필요한 연속 서브넷 마스크

Windows XP SP2에서도 더 이상 불가능했습니다.

서브넷 마스크 Windows XP SP2

그러나 Windows 98 클론 ReactOS에서는 "이상한"넷 마스크를 설정할 수 있습니다.

ReactOS 서브넷 마스크


1

@Sami Kuhmonen의 답변에 동의합니다.

RFC의 3.1 섹션은 클래스리스 도메인 간 라우팅에서 허용되는 마스크를 보여줍니다. 라우팅이 제대로 작동하려면 비트가 연속적이어야합니다. 또한 논리적으로 생각할 때 이상한 임의의 네트워크 마스크를 갖는 것은 실제로 의미가 없습니다.

그러나 원하지 않거나 허용되지 않더라도 비 연속 1의 서브넷 마스크를 정의 할 수 있습니다. 그 이유 :
네트워크 ID 및 호스트 ID는 이진 연산 AND 및 XOR을 사용하여 IP 주소 및 서브넷 마스크에서 계산됩니다. 다른 모든 것은 관련이 없습니다.

그 년 전에 Win 2000에서 테스트했지만 작동합니다. 두 컴퓨터에는 모두 255.160.0.0 마스크가있었습니다. 라우터가없는 LAN에 있었기 때문에 라우터의 동작에 대해 알 수 없습니다 (일반적으로 라우터의 마스크는 웹 인터페이스에서만 설정할 수 있으므로 거부합니다).
네트워크 설정의 해당 필드에 '잘못된'서브넷 마스크를 입력 할 수도 없습니다. GUI는 그것을 거부합니다. 그러나 레지스트리에서 직접 변경하여 속임수를 쓸 수 있습니다. 그런 다음 NIC를 재부팅하거나 비활성화 + 활성화하여 변경 사항을 적용하십시오.
이 모든 것의 목적 : 음, 아마도 없음.


공유해 주셔서 감사합니다. 그러나 이것은 독립형 답변으로 적합하지 않습니다. Sami Kuhmonen의 답변에 대한 의견이어야합니다.
agtoever

2
댓글이 너무 길다. 또한 답변으로 표시 될 것으로 기대하지 않는다.
Tobias Knauss

@agtoever : 세부 정보를 편집하고 추가 한 후에는 다른 답변의 일부가 아닌 많은 정보가 있기 때문에 지금은 독립형 답변으로 자격이 있다고 생각합니다.
Tobias Knauss

"하나의 구현에서 작동"은 좋은 대답 이 아닙니다 . 그리고 그것은 단지 "하나의 OS에서 작동"하는 것이 아닙니다. 아닙니다. (중요하게) 하나의 네트워크로 하나의 특정 PC를 테스트 한 것 같습니다. 즉, Windows 2000의 서브넷 라우팅 코드가 실제로 작동하는지 확인하지 않았으며 네트워크 ID가 필요한 곳입니다. 인접하지 않은 두 255.160.0.0네트워크 간에 라우팅 할 수 있습니까?
MSalters

@MSalters 하나의 구현에서 작동하면 여전히 작동한다는 의미입니다. 가능한 모든 OS 구성에 대해 이야기한다고 주장하지 않았습니다. 또한 패킷이 한 PC에서 다른 PC로 어떻게 전달되는지 어떻게 생각하십니까? 컴퓨터는 경로를 알아야합니다. 따라서 대상 컴퓨터가 동일한 서브넷에 있는지 (패킷을 직접 전송) 또는 멀리 있는지 (구성된 게이트웨이에 경로를 쿼리) 계산해야합니다. // 아니요, 이러한 서브넷 마스크를 사용하지 않았기 때문에 이러한 라우팅을 수행 할 수 있다고 생각하지 않습니다. 나는 그것이 효과가 있었지만 다른 서브넷이없는 경우를 보여주었습니다. 작품은 역시 누가 알 겠어 어쩌면 ...
토비아스 Knauss
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.