네트워크 주소가 유효한 호스트 주소가 아닌 이유는 무엇입니까?


18

그래서 ... 저는 CCNA와 그와 관련하여 공부했으며 적어도 지난 8 년 정도 동안 IP 네트워킹과 협력하고 있습니다. 나는 항상 서브넷의 네트워크 주소가 유효한 호스트 주소가 아니라고 들었습니다. 이제 먼저 이것이 사실임을 알면서 시작하겠습니다. 내 질문은 더 ... 사양을 설계 할 때 사용할 수 없거나 임의로 동의 한 기술적 이유가 있습니까? 브로드 캐스트 주소를 사용할 수없는 이유를 알고 있습니다 (실제로 사용되기 때문에). 문제는 사용 된 네트워크 주소가 일반적으로 네트워크 주소를 사용하는 라우팅에만 있다는 것입니다. 이 경우 (네트워크 주소를 예상 할 때만 사용되는 네트워크 주소) 네트워크 주소를 실제 유효한 호스트 주소로 가질 수없는 기술적 이유가 있습니까?

답변:


16

내가 아는 한, 특별한 주소 인 "네트워크 주소"는 과거의 고급 IP 네트워크에서 나온 결과물입니다. 오늘날 우리 는 네트워크에서 CIDR (Classless Inter-Domain Routing )을 사용합니다. "C"블록, 예를 들어 네트워크 또는 브로드 캐스트 주소를위한 예약 된 주소가 없습니다 (브로드 캐스트는 다른 RFC에서 필수로 정의되지만).

이 말은 여전히 ​​네트워크의 특정 호스트에 네트워크 주소를 할당해서는 안됩니다. 네트워크 주소는 라우팅에 필수적입니다. 이 개념은 RFC에 광범위하게 사용됩니다 ( RFC 1812 ). 라우팅 테이블 ( route명령)을 살펴보면 로컬 네트워크 주소를 사용하여 로컬 네트워크 트래픽을 라우터를 통과해야하는 것과 분리하는 방법을 알 수 있습니다. 해당 로컬 네트워크 주소가 일부 호스트에 할당 된 경우 어떻게됩니까?

더 나쁜 : 그것은이 주소 인 경우에도 0으로 끝나게 할당 IP 주소로 좋은 것은 아닙니다 되지 네트워크 주소. 예를 들어, 네트워크가 10.10.0.0/255.255.0.0 인 경우 IP 주소 10.10.5.0은 네트워크 주소가 아니지만 고급 IP 네트워크에서도 완전히 유효하더라도 IP를 할당하지 않는 것이 좋습니다. 일부 레거시 소프트웨어 / IP 스택에 문제가있을 수 있습니다.

업데이트 : goblinlord

RFC 1812 (섹션 5.3.5.2) 에 따르면 , 네트워크 주소라고 부르는 것은 원래 원하는 네트워크로 브로드 캐스트 패킷을 보내는 "지정된 브로드 캐스트"에 사용되었습니다. 이 기능은 SMURF 공격으로 인해 더 이상 사용되지 않습니다. 이 기능은 공식적으로 RFC 2644 에서 변경되었습니다 . 결과적으로, 추가 구현 들은 기술 된 바와 같이 소스 주소 (네트워크 주소)를 갖는 패킷들을 자동으로 삭제 해야한다 . 이것이 일어날 일이지만 실제로 얼마나 많은 구현이 필요한지 궁금합니다.

이는 / 31 서브넷이 해결 될 때 RFC 3021에 추가됩니다 .


5
@grawity : 항상 그런 것은 아닙니다. / 31보다 큰 네트워크에서만. 예를 들어 P2P는 두 개의 주소를 가질 수 있으며 브로드 캐스트 주소는 없습니다.
haimg

3
흠 ... 나는 대답의 첫 번째 부분을 좋아합니다 ... 그것은 고급 IP 네트워크의 인공물이라는 것입니다. 두 번째 부분의 문제는 라우팅 테이블이 특히 네트워크로 라우팅하는 데 사용된다는 것입니다. 내가 이해하는 것처럼 라우팅 테이블은 수신기가없는 네트워크 (라우터 / 넷의 일부가 아닌 대상 IP)로 라우팅하는 것만 봅니다. 이것은 라우팅 테이블을 볼 때 호스트 주소가 아닌 네트워크 주소이며 호스트 패킷 대상 IP에서 분리하는 것이 분명합니다. 실제 트래픽에서는 네트워크 주소의 대상 IP가 사용되지 않습니다.
Goblinlord

1
따라서 ...이 두 인스턴스가 이미 분리 된 경우 (라우팅 테이블을 볼지 여부를 결정할 때 라우팅 테이블의 네트워크 주소와 대상 IP) 특정 인스턴스를 예약 할 이유가 있습니까?
Goblinlord

1
@ 고블린로드 : 내가 찾을 수있는 공식적인 이유가 없습니다 (최근 RFC 등). 그러나 네트워크 주소가 "특별"하다는 가정하에 많은 소프트웨어가 구축되어 있으므로 실제로는이를 IP 주소로 사용하지 않는 것이 좋습니다.
haimg

1
cisco config 항목이있어 네트워크 주소도 호스트가 될 수 있습니다.이 호스트는 10 년 이상 사용되어 왔으며 사용하지 않았거나 테스트하지 않았으며 언급 된 스택 문제로 인해 구체적으로 설명하지 않았습니다. @Home에서 / 24s 미만의 다른 네트워크 나 브로드 캐스트 주소를 사용하지 않았지만 CoreOS가 원했던 동안 호스트가 .0 또는 .255로 끝나는 네트워크를 허용하지 않습니다. sanbrunocable의 / 23 및 / 21에서 호스트로 중간 .0 및 .255를 발행하면 수동으로 예약합니다.
Nevin Williams

5

실질적인 대답은 다음과 같습니다. 그것은에 달려 있습니다 :

  • 정확한 주소 및 많은 RFC의 의미
  • 운영 체제의 버전 및 개정
  • ... 라우터 및 다른 모든 업스트림 라우터
  • ... 그리고 라우터의 모든 네트워크 관리자의 지능과 정교함 ...

나는 이것을 테스트 할 때 어떤 사이트에 액세스하는 데 아무런 문제가 없었습니다. 궁극적으로 모든 것이 네트워크 관리자의 책임에 달려있는 것 같습니다. 일반적으로 업스트림 장치가 주소가 네트워크 또는 브로드 캐스트 주소의 일부인지 여부를 알 수있는 방법은 없습니다. 주소가 단순히 더 큰 블록의 주소이기 때문입니다. 따라서 ISP가 사용자를 할당하거나 네트워크 주소가 사용자에게 할당되어 있지 않고 네트워크 관리자가 명시 적으로 차단하지 않는 한

나는 거기에 얼마나 많은 TCP-IP 스택 구현 변형이 있는지, 그리고 무엇을 수용하고 허용하지 않는지, 정확히 어떻게 그리고 어디에서 그들의 마크를 놓쳤는 지에 대한 통계를 미묘하게 자세한 보안 분석가와 해커가 있다고 확신합니다. .

사실, 내 네트워크 주소에서 찾아보고 게시하고 있습니다.

이 카드 하우스를 고치는 더 나은 해결책이 없다면 나쁘게 네티즌이라고 부르지 마십시오. 현실은 가능하다면 일어날 수 있다는 것입니다. 현실은 사람들이 실제로 사용하기 전에 완전히 바보 같은 디자인을 내놓기 위해 가능한 모든 똑똑한 사람이 앉아서 가능한 모든 반복을 통해이 모든 것을 생각하지 않았다는 것입니다. 결과? 번역 할 때 많은 것들이 추가되지 않거나 손실되는 표준.

현실 세계에 오신 것을 환영합니다. 당신이 항상 알기 어려운 최적의 이상을 쫓지 않도록 설득하지 마십시오 ... 손을 더럽 히고 시간과 인생을 헌신적으로 바치지 않는다면 "공식적인"채널이나 포럼의 지원을 기대하지 마십시오. 필요한 합의와 그 주변의 정치 탐색.

그래서 다른 포스터들이 말하려고했던 것 같아요 : 만약 당신이이 공식적인 정책을 만들고 그것을 생산에 사용하고 싶다면, 당신은 스스로해야합니다. (그러나 당신은 어쨌든 그렇지 않습니까?) 어쩌면 우리는 운이 좋을 것이고 컴퓨터 인텔리전스가 IPv4 및 IPv6과 역 호환되는 IPv8 및 모든 깨진 구현을 우리에게 IPv8로 설계하도록 할 것입니다.


물론-네트워크 주소를 사용하는 경우 일부 네트워크 스택이 브로드 캐스트로 처리하므로 할당 된 장치가 모든 종류의 브로드 캐스트 트래픽을 수신 할 수 있습니다. 그러나 이들은 조용히 떨어질 때 일반적으로 많은 간섭을 일으키지 않습니다. 그러나 이것을 둘러싼 특성에 의존하는 네트워크 익스플로잇이 몇 개인 지 궁금합니다.
Dagelf

2

나는 네트워크를 처음 사용하지만 2 센트도 줄 것이다.

xxx0-xxx15의 / 28 하위 네트워크가있는 경우 사전 정의 된 규칙에 따라 사용 가능한 호스트 14 개와 나머지 2 개가 남습니다. 나머지는 네트워크 및 방송용입니다.

위의 규칙을 따르는 대신 실제로 16 개의 호스트를 모두 사용할 수 있습니다. 그런 경우에는 문제가 없습니다. 그러나 네트워크 외부에서 통신이 필요한 경우 정보를 보내거나받을 자원이 없기 때문에 불가능할 것입니다.

나는 설명하는 것이 좋지 않지만 다른 방법으로 설명하는 것이 좋습니다.

내가 거리의 집에 살았고 그 거리에는 14 채의 집이있었습니다. 주요 도로로 진입하기위한 출입구.

내 우편 주소 범위는 1-14 Personal Street, Off Network Road입니다.

그것은 메일 맨에게는 문제가되지 않습니다. 이제 개발자들이 탐욕스럽고 2 개의 집을 더 추가하고 골목길을 없 assume다고 가정하자.

그런 다음 새 우편 주소의 범위는 1-16 Personal Street입니다.

이 경우 메일 맨에 문제가있을 수 있습니다.

이것은 내가 추측하는 것입니다, 내가 황소를 말하고 있는지 알려주세요.


0

네트워크 주소를 사용하면 고정 크기 (4 바이트 IPv4) 대상 열과 고정 크기 이진 연산을 사용하여 호스트 라우팅과 네트워크 라우팅이 실제로 동일한 라우팅 테이블을 작성할 수 있습니다.

다음과 같은 라우팅 테이블을 상상해보십시오 (이 PC는 다른 PC 및 네트워크 카드와 병렬 연결되어 있음).

Dest           Mask    Dev
192.168.0.123  /32     plip0   # This is a single host
192.168.0.0    /24     eth0    # This is a network

IP 주소와 넷 마스크 사이의 AND는 필요한 것을 정확하게 제공하며, 추가 계산없이 각 라인과 비교할 수있는 4 바이트 숫자입니다.

따라서 호스트 번호 0은 AND 연산 후 주소가 자연스럽게 전체 네트워크를 나타내는 점에서 특별합니다.

네트워크 번호를 호스트 번호로 사용하기로 결정한 경우 다음과 같은 테이블이 나타납니다.

Dest           Mask    Dev
192.168.0.0    /32     eth0    # This is the host (it's a redundant line)
192.168.0.0    /24     eth0    # This is the network

이것은 합법적 인 것처럼 보이므로 네트워크 주소 개념이 라우팅 이유로 사용되므로 임의로 특수 주소로 표시하고 호스트 주소로 사용하는 것을 금지하기로 결정했습니다.

글쎄 ... 실제로 그렇게 간단하지 않습니다. 나는 그것을 시도하기로 결정했습니다 (!!!) :

# route add -net 192.168.0.0/32 eth0
# ping 192.168.0.0
Do you want to ping broadcast? Then -b
# telnet 192.168.0.0
Trying 192.168.0.0...
telnet: connect to address 192.168.0.0: Network is unreachable

현재 네트워크 프로그램은 네트워크 주소를 일반 주소로 사용할 수 없습니다.


첫 번째 라우팅 테이블 예제를 고려할 때 이것이 실제로 나쁜 방법이라고 생각합니다. 0.0 서브넷에 다른 호스트가있는 경우 경로를 정적으로 설정하지 않고 .0.123 호스트뿐만 아니라 서로 올바르게 통신하는 방법 모든 단일 호스트? 그것은 실제로 일을하는 적절한 방법처럼 보이지 않습니다.
Goblinlord

그것은 가상의 예일뿐입니다. 나는 다음과 같은 테이블을 설정하지 않을 것입니다 :-) .123 호스트는 점대 점 연결로 연결되고 나머지는 일반적인 이더넷 네트워크입니다. 다른 시스템이 .123 호스트에 액세스하도록하려면 추가 작업을 수행해야하지만 불가능하지는 않습니다.
David Costa

0

이 질문에 대한 답변을 검색하는 동안 Cisco 에서이 기사 를 보았습니다. 그 기사의 다음 인용문은 그것을 훌륭하게 요약합니다.

[...] IP 주소 172.16.1.10을 고려하십시오. 이 IP 주소에 해당하는 서브넷 주소를 계산하면 서브넷 172.16.0.0 (서브넷 0)이 표시됩니다. 이 서브넷 주소는 처음에 서브넷으로 지정된 네트워크 주소 172.16.0.0과 동일하므로 서브넷을 수행 할 때마다 구별 할 수없는 주소를 가진 네트워크와 서브넷 (서브넷 0)을 얻게됩니다. 이것은 이전에 큰 혼란의 원인이되었습니다 .

혼란을 피하는 것이 좋은 이유입니다.


나는이 질문이 오래 전에 제기되었다는 것을 알고 있지만 단지이 물건을 검토하고있었습니다. 인용 한 기사에서 "서브넷 제로"또는 네트워크 주소의 첫 번째 서브넷에 대해 이야기하고 있습니다. 이것은 완전히 다른 것이며 모든 스위치에서 작업 한 모든 최신 네트워크에서 "ip subnet-zero"기능을 사용할 수 있습니다. 또한 요즘에는 모든 스위치 (2003 년경에 릴리스 된 버전 12 현재)에서 기본적으로 활성화되어 있다고 언급합니다.
고블린로드

0

RFC 1122 ( "인터넷 호스트 요구 사항-통신 계층")는 다음을 금지합니다.

IP 주소는 <Host-number>, <Network-number> 또는 <Subnet-number> 필드에 대해 0 또는 -1 값을 가질 수 없습니다.


0

네트워크 주소는 호스트 주소로 간주되지 않지만 숫자 일뿐입니다. 지점 간 네트워크와 같은 주소 제한 영역에서는 / 30 마스크가 자주 사용되지만 여전히 호스트 주소를 사용합니다. 덜 관행이지만 동일한 원칙을 달성하는 것은 / 31 마스크를 사용하고 한쪽 끝을 네트워크 주소로 사용하고 다른 쪽 끝을 브로드 캐스트로 사용하는 것입니다.

전의.

Router(config)#int gi0/0
Router(config-if)#ip add 10.0.0.0 255.255.255.254
Router(config-if)#no shut


Router2(config)#int gi0/0
Router2(config-if)#ip add 10.0.0.1 255.255.255.254
Router2(config-if)#no shut


        .0        .1
[Router]-----------[Router2]
   network      broadcast
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.