IPv4 주소의 폭은 32 비트이므로 주소 공간의 크기는 2 32 또는 4,294,967,296입니다. 그러나 이것은 이론적 인 상한 일뿐입니다. 공용 인터넷에서 실제로 사용될 수있는 모든 주소를 정확하게 나타내는 것은 아닙니다.
이 과제의 목적을 위해 모든 주소 지정이 분류 된 것으로 가정합니다 . 실제로, 주소 공간의 분류 된 세분화는 CIDR (Classless Inter-Domain Routing 및 VLSM (Variable Length Subnet Masking)) 로 대체 되었지만,이 도전에서는 무시됩니다.
classful address scheme에 따르면 3 가지 클래스가 있습니다.
- 클래스 A -
0.0.0.0
에127.255.255.255
와/8
넷 마스크 길이 - 클래스 B -
128.0.0.0
에191.255.255.255
와/16
넷 마스크 길이 - 클래스 C -
192.0.0.0
에223.255.255.255
와/24
넷 마스크 길이
클래스 D (멀티 캐스트) 및 E (예약 됨)도 정의되지만 공용 유니 캐스트 주소에는 사용되지 않습니다.
각 클래스는 해당 클래스의 넷 마스크에 따라 네트워크로 세분됩니다.
따라서 3.0.0.0
클래스 A 네트워크의 예입니다. 이 네트워크의 전체 주소 공간이 그래서 클래스 A에 대한 넷 마스크 길이는 8 3.0.0.0
에 3.255.255.255
. 그러나 첫 번째 주소 ( 3.0.0.0
)는 네트워크 주소로 예약되고 마지막 주소 ( 3.255.255.255
)는 해당 네트워크의 브로드 캐스트 주소로 예약됩니다. 따라서, 가능한 주소가 실제의 범위는 다음 3.0.0.1
에 3.255.255.254
2 인 24 - 2 (= 16,777,214) 전체 주소.
마찬가지로, 200.20.30.0
클래스 C 네트워크의 예입니다. 이 네트워크의 전체 주소 공간이 그래서 클래스 C에 대한 넷 마스크 길이는 24이다 200.20.30.0
에 200.20.30.255
. 네트워크 및 방송 주소 잎을 가능한 주소의 실제 범위를 분리하는 것은 200.20.30.1
에 200.20.30.254
있는 2 8 2 (= 254) 전체 주소 -.
공용 유니 캐스트에 사용될 수있는 주소 범위에 대한 추가 제한이 있습니다. RFC 6890 에 따르면 허용되지 않는 범위는 다음과 같습니다.
0.0.0.0/8
-로컬 네트워킹10.0.0.0/8
-개인 사용100.64.0.0/10
-공유 주소 공간127.0.0.0/8
-루프백169.254.0.0/16
-로컬 링크172.16.0.0/12
-개인 사용192.0.0.0/24
-IETF 프로토콜 할당192.0.2.0/24
-문서에 사용하기 위해 예약 됨192.88.99.0/24
-6to4 릴레이 애니 캐스트192.168.0.0/16
-개인 사용198.18.0.0/15
-벤치마킹198.51.100.0/24
-문서에 사용하기 위해 예약 됨203.0.113.0/24
-문서에 사용하기 위해 예약 됨
위의 목록은 VLSR 넷 마스크를 사용하여 범위를 효율적으로 지정합니다. 하나의 경우를 제외한 모든 경우에, 주어진 마스크 길이는 특이성이 범위의 시작에 대한 정상 분류 마스크 길이보다 작거나 같다. 따라서 이러한 VLSR 범위 각각은 하나 이상의 클래스 네트워크에 해당합니다. 예를 들면 172.16.0.0/12
클래스 B 망에 해당 172.16.0.0
하는 172.31.0.0
또는 주소 범위 172.16.0.0
로 172.31.255.255
.
이 규칙의 예외는 100.64.0.0/10
VLSR 범위이며, 이는 포함 100.0.0.0
클래스 A 범위 보다 더 구체적 입니다. 따라서 100.0.0.0
중간에 4,194,304 개의 주소 구멍이 있다는 점을 제외하고 다른 클래스 A 범위와 같이 처리됩니다. 이 클래스 A 범위에서 유효 주소는 것 100.0.0.0
까지 100.63.255.255
와 100.128.0.0
로 100.255.255.254
(2)의 총 24 2 - 22 - 2 (= 12,582,910) 전체 주소.
이 문제의 목표는 퍼블릭 인터넷 호스트에 유효하게 할당 될 수있는 모든 클래스 A, B 및 C 유니 캐스트 IPv4 주소를 출력하는 것입니다 (즉, 위에서 자세히 설명한 것 제외).
입력이 제공되지 않으며 예상해서는 안됩니다.
출력은 배열, 목록, 구분 문자열과 같이 사용자 언어에 편리한 형태 일 수 있습니다. 주소는 표준 점으로 구분 된 10 진수 형식으로 출력되어야합니다.
출력 순서는 중요하지 않습니다.
필요한 주소 범위를 구체적으로 제공하는 기본 제공은 허용되지 않습니다. 마찬가지로 공용 인터넷에 대한 BGP (또는 다른 프로토콜) 라우팅 테이블 을 동적으로 검사하는 방법 도 허용되지 않습니다.
숫자가 가장 낮은 주소는 1.0.0.1
이고 숫자가 가장 높은 주소는 223.255.255.254
입니다.
이 과제는 모든 IPv6 주소 인쇄 와 유사 하지만 제한 사항 때문에 사소한 다른 구현이 필요합니다.
@echo off
뿐만 아니라.