Địa chỉ IPv4 rộng 32 bit và do đó kích thước của không gian địa chỉ là 2 32 , hoặc 4.294.967.296. Tuy nhiên, đây chỉ là một lý thuyết trên giới hạn. Nó không phải là một đại diện chính xác của tất cả các địa chỉ thực sự có thể được sử dụng trên internet công cộng.
Đối với các mục đích của thách thức này, nó được giả định rằng tất cả các địa chỉ là đầy đủ . Trong thực tế, việc phân chia không gian địa chỉ đầy đủ đã được thay thế bởi CIDR (Định tuyến giữa các miền không phân loại và VLSM (Mặt nạ mạng con biến đổi độ dài) , nhưng điều này bị bỏ qua cho thách thức này.
Theo sơ đồ địa chỉ lớp, có 3 lớp:
- Class A -
0.0.0.0
đến127.255.255.255
với/8
chiều dài netmask - Class B -
128.0.0.0
đến191.255.255.255
với/16
chiều dài netmask - Lớp C -
192.0.0.0
để223.255.255.255
với/24
chiều dài netmask
Các lớp D (multicast) và E (dành riêng) cũng được định nghĩa, nhưng chúng không được sử dụng cho các địa chỉ unicast công khai.
Mỗi lớp được chia thành các mạng theo netmask cho lớp đó.
Vì vậy, đây 3.0.0.0
là một ví dụ về mạng lớp A. Chiều dài mặt nạ mạng cho lớp A là 8, vì vậy không gian địa chỉ đầy đủ cho mạng này là 3.0.0.0
để 3.255.255.255
. Tuy nhiên, địa chỉ đầu tiên ( 3.0.0.0
) được dành riêng làm địa chỉ mạng và địa chỉ cuối cùng ( 3.255.255.255
) được dành riêng làm địa chỉ quảng bá cho mạng đó. Do đó, phạm vi thực tế của các địa chỉ có thể sử dụng là 3.0.0.1
để 3.255.255.254
đó là 2 24 - 2 (= 16.777.214) tổng số địa chỉ.
Tương tự, 200.20.30.0
là một ví dụ về mạng Lớp C. Chiều dài mặt nạ mạng cho lớp C là 24, vì vậy không gian địa chỉ đầy đủ cho mạng này là 200.20.30.0
để 200.20.30.255
. Loại bỏ các địa chỉ mạng và phát sóng lá phạm vi thực tế của các địa chỉ có thể sử dụng là 200.20.30.1
để 200.20.30.254
đó là 2 8 - 2 (= 254) tổng số địa chỉ.
Có nhiều hạn chế hơn về phạm vi địa chỉ có thể được sử dụng cho unicast công khai. Theo RFC 6890 , các phạm vi không được phép là:
0.0.0.0/8
- Mạng cục bộ10.0.0.0/8
- Sử dụng cá nhân100.64.0.0/10
- Không gian địa chỉ dùng chung127.0.0.0/8
- Vòng lặp169.254.0.0/16
- Liên kết cục bộ172.16.0.0/12
- Sử dụng cá nhân192.0.0.0/24
- Bài tập về Giao thức IETF192.0.2.0/24
- Dành để sử dụng trong tài liệu192.88.99.0/24
- Anycast Rơle 6to4192.168.0.0/16
- Sử dụng cá nhân198.18.0.0/15
- Điểm chuẩn198.51.100.0/24
- Dành để sử dụng trong tài liệu203.0.113.0/24
- Dành để sử dụng trong tài liệu
Lưu ý rằng danh sách trên sử dụng mạng lưới VLSR để chỉ định hiệu quả một phạm vi. Trong tất cả trừ một trường hợp, độ dài mặt nạ đã cho có độ đặc hiệu nhỏ hơn hoặc bằng độ dài mặt nạ lớp thông thường để bắt đầu phạm vi. Do đó, mỗi phạm vi VLSR này tương đương với một hoặc nhiều mạng lớp. Ví dụ như 172.16.0.0/12
là tương đương với mạng lớp B 172.16.0.0
để 172.31.0.0
hoặc dải địa chỉ 172.16.0.0
để 172.31.255.255
.
Ngoại lệ cho quy tắc này là 100.64.0.0/10
phạm vi VLSR, cụ thể hơn 100.0.0.0
phạm vi chứa Lớp A. Do đó, 100.0.0.0
sẽ được xử lý như các phạm vi Hạng A khác với ngoại lệ là nó có một lỗ địa chỉ 4.194.304 ở giữa. Các địa chỉ hợp lệ trong phạm vi lớp A này sẽ 100.0.0.0
đến 100.63.255.255
và 100.128.0.0
đến 100.255.255.254
, tổng cộng 2 24 - 2 22 - 2 (= 12.582.910) tổng số địa chỉ.
Mục tiêu của thách thức này là xuất ra tất cả các địa chỉ IPv4 loại A, B và C có thể được gán hợp lệ cho một máy chủ internet công cộng (nghĩa là không bao gồm các địa chỉ chi tiết ở trên).
Không có đầu vào sẽ được đưa ra và không nên được mong đợi.
Đầu ra có thể ở bất kỳ dạng nào thuận tiện cho ngôn ngữ của bạn, ví dụ như mảng, danh sách, chuỗi phân tách. Địa chỉ phải được xuất ở định dạng thập phân rải rác tiêu chuẩn.
Thứ tự đầu ra không quan trọng.
Các nội dung cụ thể cung cấp phạm vi địa chỉ yêu cầu không được phép. Tương tự, bất kỳ phương pháp nào để tự động kiểm tra bảng định tuyến BGP (hoặc giao thức khác) cho internet công cộng đều không được phép.
Địa chỉ thấp nhất về số sẽ là 1.0.0.1
và cao nhất về số 223.255.255.254
.
Thách thức này tương tự như In ra tất cả các địa chỉ IPv6 , nhưng do các hạn chế nên yêu cầu triển khai không tầm thường.
@echo off
.