Mọi người đều quá phức tạp với RFC, các lớp IP, v.v. Chỉ cần chạy một vài thử nghiệm để xem cách người dùng ping
phân tích cú pháp đầu vào IP của người dùng (loại bỏ phần bên ngoài):
> ping 1
Pinging 0.0.0.1 with 32 bytes of data:
> ping 1.2
Pinging 1.0.0.2 with 32 bytes of data:
> ping 1.2.3
Pinging 1.2.0.3 with 32 bytes of data:
> ping 1.2.3.4
Pinging 1.2.3.4 with 32 bytes of data:
> ping 1.2.3.4.5
Ping request could not find host 1.2.3.4.5. Please check the name and try again.
> ping 255
Pinging 0.0.0.255 with 32 bytes of data:
> ping 256
Pinging 0.0.1.0 with 32 bytes of data:
Như bạn có thể thấy, ping
lệnh (trong Windows) cho phép bạn sử dụng các định dạng địa chỉ IP khác nhau. Một địa chỉ IPv4 có thể được chia thành bốn phần (kiểu rải rác bốn góc) như vậy: A.B.C.D
và ping
lệnh cho phép bạn bỏ một số ra, điền vào một mặc định 0
như sau:
1 part (ping A) : 0.0.0.A
2 parts (ping A.B) : A.0.0.B
3 parts (ping A.B.C) : A.B.0.C
4 parts (ping A.B.C.D) : A.B.C.D
Nếu bạn chỉ cung cấp một phần duy nhất, thì nếu nó dưới 255 (mức tối đa cho một octet), thì nó được xử lý như một octet như trên, nhưng nếu nó lớn hơn 255, thì nó được chuyển đổi và chuyển sang trường tiếp theo (tức là mod 256
).
Có một vài trường hợp cạnh như cung cấp hơn bốn phần dường như không hoạt động (ví dụ: google.com
IP của ping không hoạt động cho một trong hai 0.74.125.226.4
hoặc 74.125.226.4.0
).
Bạn cũng có thể sử dụng ký hiệu thập lục phân ở cả dạng chấm và tứ giác, nhưng phải định dạng nó bằng cách chờ xử lý trước 0x
cho mỗi octet.
Vì vậy, có rất nhiều cách để thể hiện một địa chỉ IP (IPv4). Bạn có thể sử dụng định dạng phẳng hoặc chấm bốn (hoặc chấm ba, chấm đôi hoặc thậm chí chấm đơn) và đối với mỗi định dạng, bạn có thể sử dụng (hoặc thậm chí trộn và khớp) thập phân, bát phân và thập lục phân. Ví dụ: bạn có thể ping google.com
theo các cách sau:
google.com
(tên miền)
74.125.226.4
(chấm thập phân)
1249763844
(thập phân phẳng)
0112.0175.0342.0004
(bát phân chấm)
011237361004
(bát phân phẳng)
0x4A.0x7D.0xE2.0x04
(chấm hex)
0x4A7DE204
(lục giác phẳng)
74.0175.0xe2.4
(_ಠ)
(Cảm ơn chúa vì đã không hỗ trợ ký hiệu nhị phân!)
Ứng dụng :
Trong trường hợp của bạn, ping 192.168.072
sử dụng định dạng thứ ba trong bảng trên ( A.B.0.C
), vì vậy bạn thực sự đang ping 192.168.0.072
. Hơn nữa, vì bạn có số 0 đứng đầu ở phần cuối, nên nó được coi là số bát phân, trong số thập phân là 58.
Bí ẩn đã được giải đáp.
Lưu ý rằng, mặc dù ping
lệnh Windows cho phép nhiều định dạng khác nhau cho đầu vào và diễn giải các định dạng không chuẩn theo cách nhìn thấy, điều đó không nhất thiết có nghĩa là bạn có thể sử dụng các định dạng như vậy ở mọi nơi. Một số chương trình có thể buộc bạn phải cung cấp tất cả bốn phần của một hình tứ giác, những phần khác có thể không cho phép trộn và khớp số thập phân và số bát phân, v.v.
Ngoài ra, địa chỉ IPv6 làm phức tạp thêm logic phân tích cú pháp và chấp nhận định dạng đầu vào.
Phụ lục :
syss chỉ ra rằng nếu bạn sử dụng một ký tự không hợp lệ trong một trong các số (ví dụ: một 8
hoặc 9
khi sử dụng bát phân, g
ở chế độ hex, v.v.) thì ping
có đủ thông minh để nhận ra điều đó và diễn giải nó dưới dạng một chuỗi (-al? -ic?) URL thay vì như một địa chỉ IP số.
(Là một người đã bị vô số chứng phình động mạch và đau tim khi cố gắng viết mã được cho là mã đơn giản, phù hợp với số lượng hoán vị theo cấp số nhân của các giá trị dữ liệu, tôi đánh giá cao rằng nó dường như xử lý chính xác tất cả các biến thể đầu vào; trường hợp, ít nhất 3 1 +3 2 +3 3 +3 4 = 120 biến thể.)
Vì vậy, trong khi chỉ định 010.020.030.040
sẽ ping 8.16.24.32
như mong đợi, việc chuyển 010.020.030.080
đến ping
sẽ được xử lý như một URL thay vì địa chỉ IP như thế foo.bar.baz.com
có thể (nhưng thật đáng buồn là không tồn tại). Nói cách khác, nó cố gắng ping tên miền phụ 010
trên tên miền phụ 020
trên tên miền 030
ở tên miền cấp cao nhất 080
. Tuy nhiên, vì 080
không phải là một TLD hợp lệ (như .com
, .net
và bạn bè của họ), kết nối thất bại ngay ở bước đầu tiên.
Điều tương tự cũng xảy ra với 090.010.010.010
việc ký tự không hợp lệ nằm trong một octet khác. Tương tự như vậy, 0xf.0xf.0xf.0xf
ping 15.15.15.15
, nhưng 0xh1.0x1.0xg0.0f
thất bại.
Ồ, tôi đoán đó là những gì bạn nhận được vì không thông thạo nhiều cơ sở số.
Có lẽ dễ dàng và an toàn hơn khi chỉ cần đảm bảo luôn luôn sử dụng các địa chỉ 4 doped-quad (phiên bản 40q, một phần tư?
Vì vậy, đi ra ngoài và tìm hiểu một số cơ sở số . Bạn sẽ có thể thể hiện tại và là cuộc sống của các bữa tiệc, và như họ nói, có 10 loại người: những người biết nhị phân và những người không biết.
Chúng ta thậm chí không nghĩ về các địa chỉ IPv6; Tôi nghĩ rằng họ là một trong số 111 con dấu !!!