Ký hiệu thập phân không dấu chấm kỳ lạ của địa chỉ IP Cách thức hoạt động?


89

Đầu ngày hôm nay tôi nghĩ rằng tôi đã có một URL trong bảng tạm của mình, nhưng tôi thực sự có bốn số nguyên 9 chữ số được sao chép từ một bảng tính, đó là các số nhận dạng từ một hệ thống độc quyền. Hoàn toàn không liên quan đến nhiệm vụ trong tầm tay. Tôi đã dán nó vào Firefox và ngạc nhiên khi thấy rằng nó thực sự đã tải một trang. Trước đây tôi đã thấy các ký hiệu thập phân không dấu chấm của các địa chỉ IPv4 , nhưng con số dài này là một cái gì đó lớn hơn nhiều.

714687644714805209715128610715964400 (dán HTTP: // ở phía trước)

Cái này hoạt động ra sao? Tất cả các bộ chuyển đổi thập phân -> IPv4 mà tôi đã tìm thấy trên Internet đều coi đó là một đầu vào không hợp lệ. Nếu tôi lấy địa chỉ IPv4 mà nó thực sự tải và thực hiện các phép tính tương tự để chuyển đổi nó thành số thập phân không có dấu chấm, tôi nhận được một số lượng nhỏ hơn rất nhiều.

Tôi đã đọc rằng ping có thể chấp nhận từ khóa và thực hiện một số chuyển đổi, nhưng nó không thể chuyển đổi số này thành địa chỉ IP. IPv6 không còn là vấn đề vì máy chủ này không có kết nối IPv6.

Đây là loại điên rồ nào? Nó làm tôi bối rối và đồng nghiệp của tôi.

Chỉnh sửa: Bây giờ nó đã trở lại trực tuyến.



2
Bạn có thực sự chắc chắn đó không phải là địa chỉ IPv6? Bởi vì số này phá vỡ thành 8 chữ số trong cơ sở 65536; Địa chỉ IPv6 có 8 chữ số trong cơ sở 65536. Được biểu thị bằng hex như thường thấy đối với IPv6, đó là 89: a4d2: 471b: 45ef: 77ed: c70f: da35: 93f0.
Christian

2
@Christian Giải thích của anh ấy về nguồn của số jives với số thực được hiển thị, có 36 chữ số (mỗi ID là 9 chữ số 714xxxxxx hoặc 715xxxxxx). Máy tính thậm chí không có IPv6 và số được lấy làm địa chỉ IPv4 thực sự trả về một trang web. Các số từ ~ 5E33 đến ~ 3E38 có 8 chữ số trong cơ sở 65536, tôi nghĩ rằng đó chỉ là trùng hợp khi anh ta rơi vào phạm vi đó (cộng với, bất kỳ số nào nhỏ hơn cũng sẽ là địa chỉ IPv6 hợp lệ)
Tim S.

1
@beeks Ok, nó đã không hoạt động khi tôi dùng thử ngày hôm qua nhưng cho rằng đó là một bộ định tuyến không bảo mật có lẽ điều đó không quá ngạc nhiên. Vì vậy, bạn đang nói rằng về cơ bản bạn đặt một số ngẫu nhiên vào thanh địa chỉ của bạn? Hoặc loại bảng tính nào bạn có ở đó có chứa địa chỉ IP được mã hóa kỳ lạ của các bộ định tuyến không bảo mật? ;)
Christian

1
@Christian, LOL. Chúng là một số định danh tin nhắn duy nhất trong một hệ thống tuân thủ. Hoàn toàn có cơ hội kỳ lạ rằng tôi dán chúng vào thanh địa chỉ, và nó đã hoạt động. Tôi cá rằng điều đó sẽ không bao giờ xảy ra nữa với tôi trong đời :)
ong vào

Câu trả lời:


93

Đây là một câu hỏi khá thú vị và tôi phải mất một chút thời gian để tìm hiểu. Câu trả lời ngắn gọn là 32 bit cuối cùng của số là 3660944368 (theo số thập phân, có thể được tìm thấy bởi 714687644714805209715128610715964400 mod 2^32)

Đây là giá trị thập phân của địa chỉ IPv4 218.53.147.240 , có thể được tìm thấy bằng cách chuyển đổi nó thành cơ sở 3660944368 = 218*(256^3)+53*(256^2)+147*(256)+240tương tự 256 để viết ra một số ở dạng thập phân (cơ số 10). Ví dụ 234 = 2*10^2+ 3*10 + 4.

Như @chritohnide chỉ ra, mỗi phần của các địa chỉ IPv4 rải rác được gọi là một octet vì nó đại diện cho 8 chữ số nhị phân. Cũng cần lưu ý rằng các định dạng khác nhau của địa chỉ IPv4 (chẳng hạn như thập phân rải rác hoặc thập phân thuần túy) chỉ là các cách khác nhau để biểu thị số nhị phân 32 bit cho lợi ích ngoài.

Do địa chỉ IPv4 là số 32 bit, nên chỉ có 32 bit cuối cùng của số được sử dụng để phân giải địa chỉ. Tại sao điều này là đúng là không rõ ràng. Như những người khác đã chỉ ra, số đầy đủ trông rất giống một địa chỉ IPv6 ở dạng thập phân, nhưng không phải là một địa chỉ hợp lệ.

Nhìn vào đặc tả Teredo (xem 4. Địa chỉ Teredo ), IPv4 của Máy khách chiếm 32 bit cuối cùng của địa chỉ IPv6, nhưng tiền tố của số không khớp với thông số Teredo (Cũng xem wikipedia ).


12
Câu trả lời tốt đẹp. Cũng có thể hữu ích khi đề cập rằng mỗi phần của địa chỉ IPv4 được chấm chấm được gọi là octet vì nó là biểu diễn thập phân của số nhị phân 8 bit (4 octet = 4 x 8 bit = 32 bit của địa chỉ IPv4) và là số thập phân phiên bản thực sự chỉ vì lợi ích của chúng tôi.
chritohnide

4
Bạn có chắc chắn đó không phải là ký hiệu thập phân IPv6? Nó chuyển đổi thành công0089:a4d2:471b:45ef:77ed:c70f:da35:93f0
Izkata

5
@Izkata: Không có khả năng vì địa chỉ đó sẽ nằm trong một phần chưa được phân bổ và dành riêng của không gian địa chỉ IPv6.
Henning Makholm

3
Số (trong ASCII) có thể sẽ được chạy qua một trong các chuỗi C stdlib thành các hàm int để chuyển đổi thành địa chỉ ipv4 32 bit. Trong hầu hết các triển khai của C stdlib, các chuyển đổi sẽ tự động thực hiện modulo 2 ^ <kích thước số nguyên mong muốn>. Kết quả trong trường hợp đó là chính xác để quan sát hành vi.
Tonny

3
Điều đáng chú ý là đây có lẽ là một trò chơi phân tích cú pháp URL của Firefox. Dường như nhận ra rằng đó là một số chứ không phải là URL và cố gắng phân tích nó dưới dạng địa chỉ IP không dấu 32 bit (số nguyên được phân tích cú pháp kết thúc bằng modulo 32 bit và thực sự không có bất kỳ lỗi nào khi kiểm tra đầu vào ). Chrome, ví dụ, không hiển thị hành vi này. Nó thực sự có thể đáng báo cáo nó như là một lỗi nhỏ trong Firefox.
Jason C
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.