ส่ง Ping ไปยังที่อยู่ IP ตอบกลับด้วย IP ที่แตกต่างกัน


21

เมื่อฉันพยายาม ping ที่อยู่ IP 10.10.208.57ฉันไม่ตอบสนองเนื่องจากไม่มีสิ่งใดในเครือข่ายที่มีที่อยู่ IP นั้น

อย่างไรก็ตามหากฉันพยายาม ping 10.10.208.057แทนที่อยู่ IP อื่นจะตอบสนอง:

root@everest:/root# ping 10.10.208.057
PING 10.10.208.057 (10.10.208.47) 56(84) bytes of data.
64 bytes from 10.10.208.47: icmp_seq=1 ttl=253 time=0.732 ms
64 bytes from 10.10.208.47: icmp_seq=2 ttl=253 time=0.695 ms
64 bytes from 10.10.208.47: icmp_seq=3 ttl=253 time=0.659 ms
64 bytes from 10.10.208.47: icmp_seq=4 ttl=253 time=0.705 ms

เมื่อพิจารณาว่า10.10.208.47เป็นเครื่องพิมพ์ Lexmark E120n สิ่งที่อาจเป็นต้นกำเนิดของปัญหาที่แปลกประหลาดนี้?


3
Bump, ดูคำตอบในหัวข้อนี้: superuser.com/questions/486788/…
Michal Sokolowski

คำตอบ:


43

พฤติกรรมนั้นเกิดขึ้นเนื่องจากคุณสมบัติการ Ping โดยปกติและไม่มีความเกี่ยวข้องกับฮาร์ดแวร์จริงของคุณ

แท้จริง prefixing ที่อยู่ IP (หรือส่วนหนึ่งของมัน) กับศูนย์นำจะทำให้จำนวนที่จะตีความว่าเป็นฐานแปด

ดังนั้น057หมายถึง57ในฐาน 8 ซึ่งเป็น 47 ดังนั้น ping จะส่งแบบสอบถามICMPไปยังเครื่องที่อยู่ตามที่อยู่10.10.208.47และจึงได้รับคำตอบจากมัน

โปรดทราบว่าคุณยังสามารถ ping adresses เป็นเลขฐานสิบหกโดยใช้คำนำหน้า 0x แทนที่จะเป็น 0

แก้ไข: ตามความเห็นที่แนะนำจำนวนมากคุณสมบัตินี้ไม่ได้เฉพาะเจาะจงpingและสามารถพบได้ในซอฟต์แวร์ CLI จำนวนมากที่จัดการที่อยู่ IP


โว้ว! ขอขอบคุณ! หัวใจของฉันหยุดทำงานหลายนาที :-)
PsyStyle

4
ไม่เพียงปิง มีหลายสิ่งที่ทำ
Jenny D พูดว่า Reinstate Monica

1
Bash ปฏิบัติต่อ "จำนวนเต็ม" เช่นเดียวกับaskubuntu.com/questions/621500/…
ทิม

15

Ping เช่นเดียวกับโปรแกรม unix อื่น ๆ ใช้ไลบรารี C บนระบบ unix ของคุณเพื่อการจำแนกชื่อ inet_atonหนึ่งในฟังก์ชั่นที่ใช้คือ

หน้าคนสำหรับinet_atonพูดว่า:

ตัวเลขทั้งหมดให้เป็น `` ส่วน '' ในรูปแบบ '' สัญกรณ์อาจเป็นทศนิยมฐานแปดหรือฐานสิบหกตามที่ระบุไว้ในภาษา C (เช่นนำหน้า 0x หรือ 0X หมายถึงเลขฐานสิบหกมิฉะนั้นนำหน้า 0 หมายถึงฐานแปดมิฉะนั้นตัวเลขจะถูกตีความว่าเป็นทศนิยม)

ดังนั้นเมื่อคุณใช้ศูนย์นำหน้าตัวเลขจะถูกตีความว่าเป็นฐานแปด ดังนั้น 57 = 047 = 0x39


ฉันสังเกตว่าแม้แต่ Windows ก็ยังทำงานเหมือนเดิม ขอบคุณสำหรับคำตอบโดยละเอียดของคุณ!
PsyStyle

@PsyStyle ยินดีต้อนรับ! มันเป็นสัญกรณ์มาตรฐานสำหรับตัวเลขในช่วงกว้างของระบบปฏิบัติการและภาษาการเขียนโปรแกรม
เจนนี่ดีพูดว่า Reinstate Monica

"ดังนั้นเมื่อคุณใช้ศูนย์นำหน้าตัวเลขจะถูกตีความเป็นทศนิยม" ฉันคิดว่านี่เป็นตัวพิมพ์ผิดคุณหมายถึงตีความว่าเป็นเลขฐานแปดใช่ไหม
Cruncher

1
ขอบคุณ @Cruncher ฉันโทษเลือดเข้มข้นในกระแสคาเฟอีนของฉันสูงเกินไป
Jenny D พูดว่า Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.