เหตุใดการติดตั้ง traceroute ทั่วไปจึงเริ่มต้นที่จะใช้โพรบ UDP


18

เมื่อเร็ว ๆ นี้ฉันกำลังแก้ไขปัญหาเมตาดาต้าการเชื่อมต่อเครือข่ายซึ่งฉันรู้ว่าปลายทางที่กำหนดนั้นสามารถเข้าถึงได้ แต่ฉันไม่สามารถแสดงให้เห็นได้ด้วยtracerouteเพราะเส้นทางนั้นเย็นเกินไปหลังจากมีฮ็อปจำนวนหนึ่ง ระบุว่าการกระโดดครั้งสุดท้ายที่สังเกตนั้นอยู่เหนือน้ำขึ้นมาจากโหนดที่น่าสนใจฉันสูดดมการจราจรโดยคาดว่าจะยืนยันว่าโพรบนั้นมาถึงแล้วและเพื่อเรียนรู้ว่ากฎตัวกรองใดปิดกั้นพวกเขา แน่นอนฉันรู้ว่าโพรบคือดาตาแกรม UDP ที่กำหนดไว้สำหรับพอร์ตสูง (และแตกต่างกัน) ที่ฉันมีแน่นอนปิดกั้นการรับส่งข้อมูลขาเข้า

สิ่งนี้ทำให้ฉันประหลาดใจเพราะฉันคิดว่าtracerouteโพรบทั้งหมดจะใช้ค่าเริ่มต้นเป็น ICMP เนื่องจากคำตอบคือ ICMP ฉันทำแบบสำรวจเอกสารและพบว่าการใช้งานที่แตกต่างกันมีตัวเลือกต่างกันและบางคนไม่อนุญาตให้ผู้ใช้ทำการเลือกที่ไม่ใช่ค่าเริ่มต้น

นามธรรมของวิธีการสอบสวน Traceroute และการอนุมานพา ธ IP ไปข้างหน้าสนับสนุนการหยั่งรู้ของฉันว่าโพรบ ICMP จะประสบความสำเร็จในการเข้าถึงปลายทางได้บ่อยขึ้น

การอนุญาตให้วิธีการโพรบที่แตกต่างกันดูเหมือนเป็นแนวคิดที่ยอดเยี่ยม แต่การเริ่มต้นกับสิ่งอื่นที่ไม่ใช่ ICMP นั้นเป็นความคิดที่ไม่ดี มีใครบางคนสามารถอธิบายเหตุผลเบื้องหลังว่าทำไมจึงควรใช้ UDP เป็นค่าเริ่มต้นดีกว่า

คำตอบ:


20

เวอร์ชันแรกtracerouteเขียนโดย Van Jacobson และใช้ ICMP แต่ก็ใช้งานไม่ได้ การตีความผู้ขายของ ICMP ใน RFC792 คือเราเตอร์ไม่ควรส่งข้อความแสดงข้อผิดพลาด ICMP เพื่อตอบสนองต่อแพ็คเก็ต ICMP (ดูหมายเหตุการแก้ไขด้านล่าง) ดังนั้นเราเตอร์ส่วนใหญ่จะไม่ส่งข้อความ "เกินเวลา" เพื่อตอบสนองต่อคำขอ echo ด้วย TTL ของ 1 หรือ 0 ดังนั้นเขาจึงเปลี่ยนให้ใช้ UDP และแท้จริงและเห็นว่ามันใช้งานได้ดีมากและมีความสุขมาก (และยอมรับ) tracerouteเครื่องมือบน Linux และ FreeBSD (และผมถือว่าซิสโก้) จะขึ้นอยู่กับการทำงานของรถตู้ Jacobson

ข้อมูลจำเพาะถูกเปลี่ยนเป็น "ตอบกลับแพ็คเก็ตข้อผิดพลาด ICMP " ในภายหลัง โลกดำเนินไปอย่างต่อเนื่องผู้ค้าทำการเปลี่ยนแปลงสแต็คของพวกเขาเพื่อให้ข้อความแสดงข้อผิดพลาด ICMP ตอบกลับคำขอ echo และด้วยการเพิ่มขึ้นของไฟร์วอลล์และ ACLs แพ็คเก็ต UDP ที่หลงทางบางครั้งก็ถูกบล็อก แต่คำขอ ICMP echo แน่นอนความสำเร็จของคุณในวันนี้นั้นแตกต่างกันไป ฉันคาดหวังว่าtracertและเครื่องมืออื่น ๆ จะถูกเขียนขึ้นในแต่ละครั้งเมื่อใช้การตอบสนองต่อเสียงสะท้อน ICMP นั้นไม่เป็นปัญหา

วันนี้คุณไม่สามารถพูดได้ว่า UDP ดีกว่า ICMP หรือว่าอย่างใดอย่างหนึ่งเหล่านั้นจะดีกว่า TCP ขึ้นอยู่กับเส้นทางที่คุณกำลังสำรวจเส้นทางและนโยบายความปลอดภัยในสถานที่ คุณอาจต้องลองใช้หนึ่งหรือทั้งสองอย่าง

แหล่งที่มา:

http://ftp.arl.army.mil/~mike/ping.html http://www.inetdaemon.com/tutorials/troubleshooting/tools/traceroute/definition.shtml

แก้ไข :

เปลี่ยน RFC จาก IP (RFC791) เป็น ICMP (RFC792) ที่ระบุไว้ในบทนำ:

เพื่อหลีกเลี่ยงการถดถอยที่ไม่สิ้นสุดของข้อความเกี่ยวกับข้อความ ฯลฯ ไม่มีข้อความ ICMP ที่ส่งเกี่ยวกับข้อความ ICMP

นั่นเป็นบิตที่ทำให้ผู้ขายไม่ส่งข้อผิดพลาด "เกินเวลา" สำหรับคำขอ echo

RFC1122 ข้อกำหนดสำหรับโฮสต์อินเทอร์เน็ตในส่วน 3.2.2 คือการปรับปรุงที่กล่าวว่าเจ้าภาพไม่ควรตอบสนองต่อการ ICMP ข้อผิดพลาดข้อความ


FYI ตอนนี้คุณมีชื่อเสียงมากพอที่จะแสดงความคิดเห็นกับคำถามที่คุณส่งอีเมลถึงฉัน
ไมค์เพนนิงตัน

ทำได้ดี. ฉันชอบเรื่องราวในลิงค์แรกเกี่ยวกับคอมพิวเตอร์ตะโกน "Ping! Ping! Ping!" ที่ด้านบนของปอด
neirbowj

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