네트워크가 있으면 83.23.159.0/24
다음과 같은 이유로 254 개의 사용 가능한 호스트 IP 주소 가 있음을 알고 있습니다 .
83.23.159.0 (in binary: host portion all zeros) is the subnet address
83.23.159.1-254 are host addresses
83.23.159.255 (in binary: host portion all ones) is the broadcast address
브로드 캐스트 주소 사용을 이해하지만 서브넷 주소가 무엇인지 이해하지 못합니다. IP 패킷의 대상 주소가 서브넷 주소로 설정되는 이유를 알 수 없으므로 서브넷이 IP 흐름의 끝 점이되지 않을 경우 왜 서브넷 자체에 주소가 필요한가? 나 에게이 주소를 호스트 주소로 사용하지 못하게하는 것은 낭비처럼 보입니다.
요약하면, 나의 질문은 :
- IP 패킷의 대상이 서브넷 IP 주소로 설정되어 있습니까?
- 그렇다면 어떤 경우와 왜?
- 그렇지 않다면, 호스트가 사용할 수 있도록 해당 주소를 비워 두지 않겠습니까?
답변
IP 패킷의 대상이 서브넷 IP 주소로 설정되어 있습니까?
예. 유효한 IP이므로 사용할 수 있습니다.
그렇다면 어떤 경우와 왜?
/ 24에서 사용 가능한 255 개의 IP 중 하나입니다.
그렇지 않다면, 호스트가 사용할 수 있도록 해당 주소를 비워 두지 않겠습니까?
당신이있는 경우 고대 다음 하드웨어를 당신은 첫 번째 또는 네트워크 주소와 마지막 주소를 사용하는 경우 확인해야합니다. (마스크가 FF.FF.FF.00 인 네트워크의 경우 .0 또는 .255)
따라서 IP를 건너 뛰는 것이 좋습니다. 그리고 오래 전에 배운 습관은 무시하기가 어렵습니다.
그리고 배경을 모르는 사람들은 ‘다른 사람들도 그것을 사용하지 않기 때문에 그것을 사용하는 것이 잘못 되었기 때문에’또는 ‘0’이 첫 번째 숫자 가 될 수 있다는 것을 모르기 때문에 그것을 사용하지 않습니다 .
[편집] Grezzo는 Windows 네트워크 GUI가이 설정을 ‘유용하게’방지 한 Windows XP에서 테스트했습니다. Windows 7의 동작은 동일합니다. 그런 다음 Windows가 아닌 호스트에서 작동했습니다. Windows를 사용하는 경우 IPconfig를 통해 네트워크를 수동으로 구성하여 모든 0으로 설정해야 할 수 있습니다.
[편집 2]
이 작업을 오래할수록 혼란스러워집니다.
Rfc4632-클래스리스 도메인 간 라우팅
은이를 금지하지는 않지만 명시 적으로 허용하지는 않습니다.
이 ServerFault 게시물은 다음과 같이 언급합니다. “역사적인 이유로 많은 OS가 첫 번째 주소를 브로드 캐스트로 취급합니다. 예를 들어, 로컬 (/ 24) 네트워크의 OS X, Linux 및 Solaris에서 xxx0을 ping하면 응답을 얻습니다. Windows에서는 ping 할 수 없습니다. 기본적으로 첫 번째 주소이지만 SetIPUseZeroBroadcast WMI 방법을 사용하여 활성화 할 수 있습니다. 모든 Windows 네트워크에서 .0을 호스트 주소로 사용하여 벗어날 수 있는지 궁금합니다. ” .
같은 질문이지만 대답은 아닙니다.
네트워크 주소는 라우팅 테이블에도 사용됩니다. 그러나 왜 그로 인해 작동하지 않는지 알 수 없습니다. 라우팅 테이블의 동일한 표기법이 올바른 네트워크로 라우팅됩니다. 올바른 네트워크에 연결되면 IP 0의 PC에 도착합니다.
(이 모든 것은 192.168.1 / 24의
경우 입니다. 192.168.0 / 23을 사용한 경우 192.168.1.0은 범위의 중간에 유효하고 안전한 값입니다)
[편집 3]
같은 질문에 대한 링크가 하나 더 있습니다. 스택 교환에서 다소 인기가있는 것 같습니다.
/superuser/379451/why-can-a-network-address-not-be-a-valid-host-address
그리고 한 생각 :
Destination_IP은 아마도 및 라우팅 테이블의 항목과 비교되기 전에 네트워크 마스트 (하드웨어에서 빠른 동작)와 에드. 그러나:
192.168.0.42 AND 255.255.255.0은 192.168.0.0을 생성
하지만 192.168.0.0과 255.255.255.0은 192.168.0.0을 생성합니다.
[편집 4-이 답변이 작성된 후- 이 새로운 정보 로 인해 전체 게시물을 다시 작성해야 할 수도 있습니다 ]
RFC923 은 3 페이지에 다음과 같이 명시되어 있습니다.
In certain contexts, it is useful to have fixed addresses with
functional significance rather than as identifiers of specific
hosts. When such usage is called for, the address zero is to be
interpreted as meaning "this", as in "this network". The address
of all ones are to be interpreted as meaning "all", as in "all
hosts". For example, the address 128.9.255.255 could be
interpreted as meaning all hosts on the network 128.9. Or, the
address 0.0.0.37 could be interpreted as meaning host 37 on this
network.
나는 그것의 첫 번째 문서가 RFC943 ( 위의 RFC923 을 폐기 했지만 특수 주소에 동일한 언어를 사용함) 을 참조하는 RFC950 에서 온 것이라고 생각합니다 .
It is useful to preserve and extend the interpretation of these
special addresses in subnetted networks. This means the values
of all zeros and all ones in the subnet field should not be
assigned to actual (physical) subnets.
답변
호스트 부분이 모두 0 인 주소는 특정 호스트가 아닌 네트워크 자체를 나타냅니다.
역사적으로이 제로 호스트 주소는 대체 브로드 캐스트 주소로 사용되었으며 장치는 여전히 그런 식으로 응답합니다.
따라서 다른 답변에 동의하지 않아야합니다. 아니요, 0은 완벽하게 사용 가능한 호스트 주소가 아닙니다. 254 개가 넘는 주소가 필요한 경우 더 큰 서브넷을 만들어야합니다.
주소가 .1
핑에 응답 하는 내 Linksys 라우터를보십시오 .0
. 넷 마스크는 255.255.255.0
이므로 마지막 옥텟은 호스트 번호에 해당합니다.
webserver:~# ping 192.168.1.0
Do you want to ping broadcast? Then -b
webserver:~# ping -b 192.168.1.0
WARNING: pinging broadcast address
PING 192.168.1.0 (192.168.1.0) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.46 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.812 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.819 ms
.0
주소를 일부 호스트에 할당하면 라우터가 응답을하지 않고 핑을 할 수 없습니다. 보시다시피, 해당 라우터 버전의 일부 도구 는 브로드 캐스트 로 ping
취급 0
됩니다.
이러한 굽힘으로 인해 영향을받는 모든 프로토콜 스택 및 기타 소프트웨어를 패치하려는 경우 규칙을 구부릴 수 있습니다. 그렇지 않으면 규칙을 준수하십시오.
지목 사항.
14 슬롯 섀시에 내장 된 네트워크 노드를 설계 한 회사에서 일하면서 여러 유형의 카드에서 수많은 독립적 인 OS 이미지를 실행하고 모두 백플레인을 통해 통신했습니다. 127.X.0.Y
슬롯 X에있는 노드 Y의 내부 IP 주소 인 규칙에 따라 백플레인을 통한 네트워킹 설정이 있었으며 모두 1부터 번호가 매겨졌습니다.
우리는 기본적으로 루프백 주소를 우리 자신의 목적으로 서브넷으로 만들었습니다. 제대로 작동하려면 약간의 사용자 공간 인 Linux 커널과 IIRC를 패치해야했습니다.
해당 네트워크는 상자 내에서만 사용되었으며 루프백이 필요한 대부분의 프로그램은 정상적으로 작동 하는 127.0.*
네트워크 (및 특정 주소 127.0.0.1
)를 사용하므로 모든 것이 멋졌습니다.
답변
예를 들어 네트워크 83.23.159.0/23, 83.23.159.0은 완벽하게 사용 가능한 IP 주소입니다.
답변
기본 네트워킹과 약간의 혼동이있는 것 같습니다.
응답 중 하나에서 언급 된 ‘고대 하드웨어’는 IP 서브넷 0을 사용하지 않습니다. / 24 CIDR 또는 255.255.255.0 서브넷 마스크에 대해 네트워크가 설정된 상태에서 ip 주소 xxx0을 사용하는 것은 완전히 다른 문제입니다.
IP 서브넷 제로
- 오래된 하드웨어는 IP 서브넷 0을 사용하지 않습니다. 즉, 다중 서브넷 네트워크 시스템에서 첫 번째 서브넷을 사용하지 않습니다. 따라서 / 23 또는 255.255.254.0 네트워크에서 서브넷 XXX0 및 모든 주소가 사용되지 않습니다. 최신 라우터에는이 제한이 없지만 원하는 경우 서브넷 0을 사용하지 않는이 이전 모델 IE를 사용하도록 구성 할 수 있습니다.
서브넷에서 사용 가능한 호스트 IP 주소
- 기본 네트워킹 :
- / 24, 즉 255.255.255.0의 서브넷 마스크 사용
- xxx0은 네트워크 주소로 예약되어 있습니다. 라우터 및 라우팅 프로토콜 (EIGRP, RIP2 등)은 네트워크 주소를 사용하여 네트워크 네트워크 경계 내에서 또는 네트워크 네트워크 경계를 통해 패킷을 이동하기위한 네트워크 세그먼트를 정의합니다.
- xxx255는 브로드 캐스트 주소를 위해 예약되어 있습니다
- 라우터에서 주소 .1 또는 .254를 사용하여 253 개의 사용 가능한 IP 번호를 남기는 것이 일반적입니다.
네트워크 주소와 브로드 캐스트 주소는 모두 예약되어 있으며 현재 및 이전 네트워크 표준에 따라 장치에 할당 할 수 없습니다. / 24 시스템에서 호스트 주소로 xxx0을 사용하는 것은 잘못되었습니다. 리눅스가 당신을 사용한다고해도 그것이 옳다는 것을 의미하는 것은 아니며, 단지 리눅스가 당신이하고있는 일을 알고 있다고 생각한다는 것을 의미합니다.
시스템에서 xxx0을 호스트에 IP4 주소로 할당 할 수 있고 작동하는 것 같습니다. 특정 호스트가 해당 네트워크의 모든 장치를 대상으로하는 모든 트래픽을 수신하여 네트워킹이 최적으로 작동하지 않을 수 있습니다.
답변
RFC 1122 ( “인터넷 호스트 요구 사항-통신 계층”)는 다음을 금지합니다.
IP 주소는 <Host-number>, <Network-number> 또는 <Subnet-number> 필드에 대해 0 또는 -1 값을 가질 수 없습니다.
답변
실제로 정답은 서브넷의 기본입니다. 네트워크 ID와 결합 된 서브넷의 “모두 0″IP는 패킷이 전송되는 위치를 계산하는 데 사용됩니다.
귀하의 예에서 서브넷은 255.255.255.0입니다. TCP / IP 프로토콜을 알고있는 모든 장치는 IP 주소와 결합 된 넷 마스크를 사용하여 패킷이 로컬 네트워크로 향하는 지 (논리적 AND 연산을 수행하여) 패킷이 게이트웨이 / 라우터를 통해 전송되어야하는지 계산합니다.
따라서 IP를 사용할 수없는 이유는 IP가 이미 의도적으로 네트워크 마스크와 함께 네트워크 경계를 “정의”하는 데 사용 되었기 때문입니다.
답변
NetworkEngineering 에서 답변을 다시 게시하라는 요청을 받았습니다. 해야 사이트를 약간 수정하면됩니다.
RFC919 에서는 네트워크 주소의 일반적인 승인을 참조합니다.
However, as a notational convention, we refer to
networks (as opposed to hosts) by using addresses with zero fields.
For example, 36.0.0.0 means "network number 36"
이것은 누군가가 “10.1.2.0”을 네트워크의 호스트가 아닌 네트워크로 언급 한 경우 이해를 명확히하는 규칙을 제공합니다.
여기에서 IP 주소에 “0”을 사용하는 것은 RFC923 에서 정의 되었으며 연속 RFC에서 이어졌습니다.
Special Addresses:
In certain contexts, it is useful to have fixed addresses with
functional significance rather than as identifiers of specific
hosts. When such usage is called for, the address zero is to be
interpreted as meaning "this", as in "this network". The address
of all ones are to be interpreted as meaning "all", as in "all
hosts". For example, the address 128.9.255.255 could be
interpreted as meaning all hosts on the network 128.9. Or, the
address 0.0.0.37 could be interpreted as meaning host 37 on this
network.
이 예에서는 주소의 네트워크 부분에서 0을 사용하여 현재 네트워크 (0.0.0.37)의 특정 호스트를 제공하지만 실제로 반대의 경우를 명확하게 설명하지는 않습니다 (주소의 호스트 부분에 0). 그러나 “0”을 “this”로 정의한 것처럼.
에서 RFC1060 주소는 “0.0.0.0”은 분명히 “이 네트워크에이 호스트”라고 설명했다 :
(a) {0, 0}
This host on this network. Can only be used as a source
address (see note later).
주소의 호스트 부분에 대한 모든 0은 “이 호스트”를 의미하므로 논리적으로 호스트 주소로 사용할 수 없습니다.
질문에 직접 답변하기 :
- IP 패킷의 대상이 서브넷 IP 주소로 설정되어 있습니까?
- 그렇다면 어떤 경우와 왜?
- 그렇지 않다면, 호스트가 사용할 수 있도록 해당 주소를 비워 두지 않겠습니까?
RFC에서 찾은 내용에 따르면 이것을 사용해서는 안됩니다. 나는 그것이 원하는만큼 명확하게 지정되지 않았 음을 인정할 것이지만, 그것은 많은 표준에서 공통적입니다. 표준이 어느 정도 견고하지 않으면, 업계는 일반적으로 받아 들여지는 해석에 “고정”하는 것처럼 보입니다.
또한, RFC 소프트웨어의 내용에 기초하여,이 주소는 특정 호스트가 아닌 네트워크를 어드레싱하는데 사용된다고 가정하도록 작성 될 수있다. 또는 문자 그대로 일종의 “루프백”(즉, 지정된 네트워크의이 호스트)으로 표시됩니다.
그렇다면 왜 일부 OS는 분명히 사용을 허용합니까? 개발자 시간 / 리소스에 달려 있거나 유효성 검사를 추가하려고 생각한 사람이 많지 않다고 생각합니다. 더 큰 서브넷 (/ 23 이상)에는 유효한 IP 주소 .255 및 .0 (예 : 10.1.2.0/23에는 유효한 IP가 모두 포함됨)이 있으므로 논리는 “0으로 끝나는 경우”보다 조금 더 복잡해야합니다. 주소는 10.1.2.255 및 10.1.3.0). 일부 조직에서는 최신 서브넷을 올바르게 지원하지 않는 소프트웨어의 이상한 문제를 피하기 위해 더 큰 서브넷에서 유효한 주소를 사용하지 않는 경우도 있습니다.
하나의 IP 주소를 비우지 않는 이유는 간단히 비용 / 혜택입니다. 서브넷 당 하나의 IP 주소를 다시 가져 오려면이 변경을 수행하는 데 많은 시간과 노력이 필요하며 추가 IP 주소가 필요한 경우에는 하나의 주소만으로 충분합니까? 두 번째 서브넷을 추가하거나 현재 서브넷을 확대하는 것이 훨씬 쉬워 잠재적으로 소프트웨어 / 하드웨어에 큰 변화를주지 않으면 서 하나 대신 사용할 주소를 많이 제공 할 수 있습니다.