ความแตกต่างระหว่างการ Ping กับและไม่มี http: //


46

ฉันกำลังพยายาม ping เว็บไซต์ของฉันhttp://www.example.com/และแก้ไขเป็นที่อยู่ IP ที่ไม่รู้จักและหมดเวลา

PING http://www.example.com/ (198.105.254.228): 56 data bytes 
Request timeout for icmp_seq 0 
Request timeout for icmp_seq 1 
Request timeout for icmp_seq 2

แต่เมื่อฉัน ping example.comมันใช้งานได้

อะไรที่ฉันพลาดที่นี่?


32
สิ่งที่ทำให้สับสนคือ ping ไม่สามารถแก้ไขได้ว่าเป็นชื่อโฮสต์แพ็คเก็ต ICMP ที่ล้มเหลวก็น้อยลง คุณใช้ OS / เวอร์ชั่นใดอยู่?
ปุย

11
ฉันขอโทษ แต่ฉันโหวตสิ่งนี้เนื่องจากเหตุผลหลายประการ - ผู้ใช้ใหม่ที่มีหนึ่งคำถามที่มี URL ไปยังเว็บไซต์ของพวกเขาด้วยผลลัพธ์ที่ผิดพลาดจาก PING ตามสิทธิ์ทั้งหมดนั่นคือความพยายามในการเพิ่มการเข้าชมไปยัง URL นอกจากว่าเราสามารถค้นหาระบบปฏิบัติการที่มีรุ่น PING ที่ 1) รู้ว่า URL คืออะไรและ 2) ระบุหมายเลข icmp_seq สำหรับการหมดเวลาแต่ละครั้ง
รุ่งอรุณ Benton


25
เพื่อคนที่ downvoted เพราะพวกเขาไม่ได้รู้ว่ามีบริการ DNS ที่จี้ lookups ล้มเหลวไม่ทราบpingและgetaddrinfo()และเพื่อนผ่านทับ, ไม่ทราบว่า56 data bytesเป็นค่าเริ่มต้นทั่วไป ฯลฯ .: กรุณาใช้เวลานี้เป็นสัญญาณ ความพยายามของคุณในการเรียนรู้เกี่ยวกับสิ่งต่าง ๆ เพิ่มเติมก่อนที่จะพยายามช่วยเหลือจะได้รับการชื่นชม
rakslice

5
@ Ƭᴇcʜιᴇ007ผลลัพธ์การ ping เป็นจริงฉันเห็นเหมือนกันทุกประการเมื่อฉัน ping ชื่อโฮสต์ที่ไม่ถูกต้องด้วย TimeWarner Cable DNS บน OS X.
Hunter Dolan

คำตอบ:


108

ฉันกำลังพยายาม ping เว็บไซต์ของฉันhttp://www.example.com/และแก้ไขเป็นที่อยู่ IP ที่ไม่รู้จักและหมดเวลา

PING http://www.example.com/ (198.105.254.228): 56 data bytes
Request timeout for icmp_seq 0

อาร์กิวเมนต์สำหรับ ping คือชื่อโฮสต์ (หรือที่อยู่ IP)

ดังนั้นต่อไปนี้จะทำงานทั้งหมด:

ping example.com
ping www.example.com
ping 127.0.0.1

ในทางกลับกัน,

ping http://www.example.com/

จะไม่ทำงานเนื่องจากhttp://www.example.com/เป็น HTTP Uniform Resource Locator (URL)ไม่ใช่ชื่อโฮสต์ที่ถูกต้อง (แม้ว่าส่วนหนึ่งจะเป็นชื่อโฮสต์)

HTTP URL ประกอบด้วย 4 ส่วนดังนี้

  • Scheme - ปรากฎอยู่เสมอ
  • ชื่อโฮสต์ - แสดงเสมอ
  • เส้นทางหรือต้นกำเนิด - แสดงเสมอ แต่บางครั้งก็เป็นโมฆะ
  • พารามิเตอร์ - ตัวเลือก

โดยปกติแล้ว Ping จะไม่รู้จัก URL เป็นชื่อโฮสต์ปลายทางที่ถูกต้อง

หมายเหตุ :

  • ไม่ใช่ทุกรูปแบบที่กล่าวถึงข้างต้น

  • URL ที่สมบูรณ์ประกอบด้วยตัวระบุโครงร่างการตั้งชื่อแล้วตามด้วยสตริงที่มีรูปแบบเป็นฟังก์ชันของโครงร่างการตั้งชื่อ

  • รูปแบบของ URL ถูกกำหนดไว้ในข้อกำหนดคุณสมบัติ IETF Uniform Resource Locators (URL)


การหักหลัง DNS

ข้อยกเว้นข้างต้นอาจเกิดขึ้นได้หากเซิร์ฟเวอร์ DNS (ซึ่งแก้ไขชื่อโฮสต์เป็นที่อยู่ IP) ได้รับการกำหนดค่าให้ส่งคืนที่อยู่ IP ที่ถูกต้องแม้ว่าจะมีการระบุชื่อโฮสต์ที่ไม่ถูกต้องก็ตาม

เหตุการณ์นี้อาจเกิดขึ้นได้หาก ISP ทำการไฮแจ็ก DNS ของคุณ

จากคำตอบเหตุใด ping จึงเปลี่ยนเป็น IP 198.105.254.228 สำหรับชื่อโฮสต์แบบสุ่มใด ๆ ที่ฉันพิมพ์ โดยMichael Hampton :

พวกเขากำลังพยายามที่จะ "เป็นประโยชน์" โดยการเปลี่ยนเส้นทางคำขอสำหรับโดเมนที่ไม่มีอยู่ไปยังบริการป้ายกำกับสีขาวที่ให้ผลลัพธ์การค้นหาและการโฆษณาซึ่งทุกคนจะได้รับ แต่คุณจะได้รับรายได้ลดลง

โชคดีที่พวกเขามีหน้าตั้งค่าที่คุณสามารถปิดได้


33

เมื่อคุณรันคำสั่ง ping ด้วยสตริงที่ไม่ใช่ที่อยู่ IP ก่อนอื่นคุณต้องแก้ไขที่อยู่ IP ของโฮสต์ที่คุณพยายามจะ ping

เมื่อคุณทำงาน:

$ ping example.com

เซิร์ฟเวอร์ DNS ส่งคืนที่อยู่ IP ของเซิร์ฟเวอร์ที่โฮสต์เว็บไซต์

อย่างไรก็ตามเมื่อคุณนำหน้าโปรโตคอลและพา ธ เพื่อสร้าง http URL มาตรฐานที่ถูกส่งไปยังเซิร์ฟเวอร์ DNS ที่จะแก้ไข

ดังนั้นแทนที่จะเซิร์ฟเวอร์ DNS ค้นหาระเบียนexample.comมันค้นหาระเบียนhttp://example.com/ซึ่งไม่ใช่ชื่อโฮสต์ที่ถูกต้อง

เซิร์ฟเวอร์ DNS จำนวนมากจะกลับมาโดยไม่มีอะไร ในกรณีนั้นคำสั่ง ping จะผิดพลาดด้วยข้อผิดพลาดในการแก้ไข DNS

อย่างไรก็ตามเซิร์ฟเวอร์ DNS 123.456.789.000ของคุณส่งกลับที่อยู่ ที่อยู่ดูเหมือนจะเป็นบริการแนะนำโดย Time Warner Cable เพื่อช่วยผู้ใช้ที่พิมพ์ URL ในเบราว์เซอร์ของพวกเขาผิด

แต่คำสั่ง ping จะใช้เวลานี้อย่างแท้จริงและเชื่อว่าชื่อโฮสต์http://example.com/(ซึ่งไม่ได้เป็นชื่อโฮสต์ที่ถูกต้อง) 123.456.789.000มีมติให้ที่อยู่

เหตุผลที่คำสั่ง ping หมดเวลาหลังจากนั้นเนื่องจาก123.456.789.000ไม่ตอบสนองต่อคำขอ ICMP


5
เป็นค่าที่ชี้ให้เห็นว่าโดเมน / IP จริงถูกแก้ไขโดยบอทชุมชน "123.456.789.000" เดิมคือที่อยู่ IP ที่ TWC ของ DNS โยนออกมาเมื่อคุณพยายามแก้ไขชื่อโฮสต์ที่ไม่มีอยู่จริง
Hunter Dolan

1
บอทไม่รู้วิธีทำการแก้ไขอัตโนมัติ ฉันจะบอกว่าเป็นการแก้ไขที่ผู้ใช้นิรนามแนะนำ
Léo Lam

การแก้ไขถูกเสนอโดยผู้ใช้ที่ไม่ระบุชื่อและได้รับการอนุมัติด้วยตัวเองและผู้ใช้รายอื่น
DavidPostill

21

http: // หมายถึงโปรโตคอลการถ่ายโอนข้อความจำนวนมากซึ่งเป็นโปรโตคอลที่ใช้ในการเข้าถึงเว็บเพจ การ Ping เซิร์ฟเวอร์ไม่ได้ใช้ HTTP แต่ประกอบด้วยข้อความ ICMP (โพรโทคอลข้อความการควบคุมอินเทอร์เน็ต) ดังนั้น http: // ไม่สมเหตุสมผลในบริบทนี้


ฉันจะบอกว่ามันไม่ชัดเจนสำหรับคนที่ไม่รู้จัก แต่ตอนนี้คุณรู้ข้อมูลจากคำตอบของ KJ4TIP แล้วดูผลลัพธ์: Request timeout for icmp_seq 0คุณสามารถเห็น ICMP ที่นั่นนั่นหมายถึงลำดับ ICMP 0, 1, 2 ...
Tyler Collier

0

ทำไมคุณถึงใช้ 'ping' อยู่ดี มันจะไม่ทำงานหากมีไฟร์วอลล์ในวิธีที่บล็อกการรับส่งข้อมูล 'ping'

ในความคิดของฉันถ้าคุณจะทดสอบเว็บเซิร์ฟเวอร์แล้วควรใช้ 'telnet' ดีกว่าคุณสามารถทดสอบโฮสต์และพอร์ตที่ควรฟัง

เช่น: เพื่อทดสอบเว็บเซิร์ฟเวอร์ของคุณ telnet www.mywebserver.com 80 ที่หน้าจอว่างให้พิมพ์ 'รับ' แล้ว 'ป้อน' และคุณควรได้รับการตอบสนอง http กลับมาจากเว็บเซิร์ฟเวอร์ ( เช่น: HTTP / 1.1 400 คำขอไม่ถูกต้อง ... )

สิ่งนี้บอกฉันว่าไม่เพียง แต่เป็นเซิร์ฟเวอร์ 'up' แต่ยังรับฟังและตอบกลับบนพอร์ต 80 ด้วย (ฉันยังคาดหวังว่าไฟร์วอลล์จะให้พอร์ต 80 ผ่านไปยังเว็บเซิร์ฟเวอร์ของฉัน)

ในทำนองเดียวกัน 'telnet' ยังใช้สำหรับทดสอบเมลเซิร์ฟเวอร์, ftp และอื่น ๆ อีกมากมาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.