Tại sao tôi có thể ping 127.1?


11

Tôi biết IPv6 cho phép các số 0 liên tiếp bị bỏ qua. Nhưng làm thế nào về IPv4? Tôi không tìm thấy bất kỳ tài liệu tham khảo nào về điều này trên Internet, bao gồm Wikipedia và RFC 791 - Giao thức Internet. Tài liệu này gợi ý rằng "Số 0 đứng đầu có thể được bỏ qua" trong địa chỉ IPv4 (tìm kiếm cụm từ 'bỏ qua'). Không đủ cụ thể.

Kiểm tra phiên shell này:

[~]$ ping -c 1 127.1
PING 127.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.040 ms

--- 127.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.040/0.040/0.040/0.000 ms
[~]$ ping -c 1 127.0.1
PING 127.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.044 ms

--- 127.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.044/0.044/0.044/0.000 ms
[~]$ ssh 127.1 :
The authenticity of host '127.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is 04:48:fa:f2:ef:95:7c:35:46:39:2e:d3:89:dd:cd:87.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.1' (ECDSA) to the list of known hosts.
alex@127.1's password: 

Rõ ràng, cả ping và ssh đều hiểu 127.1 và 127.0.1 giống với 127.0.0.1. Điều này được chỉ định ở đâu?


7
Trang người đàn ông này được liên kết trong bài viết Stack Overflow này có thể nằm ngay trên con hẻm của bạn.
nerdwaller

1
Đó là một kiểu ký hiệu cổ xưa, nhưng đúng vậy: nó hoạt động :-)
Sander Steffann

1
@nerdwaller: Xin vui lòng gửi đó như là một câu trả lời. (Điểm thưởng nếu bạn tìm ra lý do ping 0.0.0.0hoặc ping 0hoạt động theo cùng một cách ...)
user1686

Câu trả lời:


14

Có một bài viết Stack Overflow từ khoảng một năm trước hỏi một cái gì đó tương tự ( bài này ).

Lý do chính là làm thế nào inet_aton()( trang man ) chuyển đổi các octet thành địa chỉ nhị phân.

A B C D

Mỗi trong bốn phần số chỉ định một byte của địa chỉ; các byte được gán theo thứ tự từ trái sang phải để tạo địa chỉ nhị phân.

abc

Phần a và b chỉ định hai byte đầu tiên của địa chỉ nhị phân. Phần c được hiểu là giá trị 16 bit xác định hai byte ngoài cùng bên phải của địa chỉ nhị phân. Ký hiệu này phù hợp để chỉ định địa chỉ mạng loại B (đã lỗi thời).

ab

Phần a chỉ định byte đầu tiên của địa chỉ nhị phân. Phần b được hiểu là một giá trị 24 bit xác định ba byte ngoài cùng bên phải của địa chỉ nhị phân. Ký hiệu này phù hợp để chỉ định địa chỉ mạng Lớp C (đã lỗi thời).

một

Giá trị a được hiểu là giá trị 32 bit được lưu trực tiếp vào địa chỉ nhị phân mà không cần sắp xếp lại byte.

Điều này không được xác định bởi POSIX.anything - nhưng nó có sẵn khá rộng rãi.


1
Tuyệt vời, và tôi cũng đã kiểm tra bài đăng bạn liên kết trên Stack Overflow. Nó có những hiểu biết tuyệt vời về cách sử dụng các hệ thống số khác nhau. @grawity Wikipedia cho biết 0.0.0.0/8 là mạng hiện tại. Tôi giả sử 0,0.0.0 / 32 phải là máy chủ hiện tại và ping đó chỉ mong đợi / 32 "mạng". Tôi đã không tìm thấy một tài liệu tham khảo rõ ràng mặc dù.
Alexandre de Verteuil

2
@AlexandredeVerteuil: ping mong đợi máy chủ , không phải mạng ... vì vậy, / 32 cho IPv4.
dùng1686

3

Đó là một di tích từ những ngày xưa của địa chỉ lớp học. 127.1nghĩa là mạng 127, máy chủ 1. (Và, vâng, 127.257là hợp pháp vì mạng 127có thể có hơn 256 máy chủ.


127.257 có nghĩa cụ thể là 127.0.1.1, một địa chỉ tôi thực sự thấy trên trình kích hoạt máy chủ KMS cũ hoạt động trên Windows 8.0
Paul Stelian
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.