คำสั่ง traceroute ในแต่ล่ะอุปกรณ์จะใช้ protocol ไม่เหมือนกันน่ะครับ บางครั้งเราอาจจะใช้ router trace ได้แต่ใช้ windows trace ไม่ได้อาจจะเป็นเพราะปลายทางมีการ block protocol บางประเภทเท่านั้น
Cisco ใช้ UDP ในคำสั่ง traceroute (udp port number 33434)
Windows ใช้ ICMP ในคำสั่ง tracert
Linux สามารถใช้ ICMP หรือ UDP ในคำสั่ง traceroute
การทำงาน(อ้างอิง Cisco ใช้ UDP port 33434)
1. ตัวอุปกรณ์ source จะทำการส่ง packet ออกไป 3 packet โดยชุดแรกก็จะ set TTL เป็น 1 เมื่อ router hop แรกโดยปกติเมื่อรับ packet ก็จะทำการลดค่า TTL ลง 1 ฉะนั้นเมื่อจะทำให้ TTL มีค่าเท่ากับ 0 ตัว router ก็จะส่ง ICMP message กลับไปบอก source ด้วย ICMP type time-exceed ทำให้ source รู้ว่า next hop แรกเป็น ip อะไร
2. Source จะทำการส่ง packet ออกครั้งที่ 2 แต่จะ set TTL เป็น 2 ซึ่งเมื่อ packet ผ่านแต่ละ router ก็จะมีการลดค่า TTL ทีล่ะ 1 ซึ่งเมื่อ router hop ที่ 2 ทำการลดค่า TTL ลงทำให้ TTL=0 router ก็จะส่ง ICMP type time-exceed กลับไปบอก source ก็เลยทำให้ source รู้ว่า hop ที่ 2 เป้น ip อะไร
3. Source จะทำการส่ง packet ออกไปแต่ล่ะครั้งก็จะเพิ่ม TTL ครั้งล่ะ 1 ทำให้ในแต่ล่ะ hop ตัว source รู้ว่าเป็น ip อะไรเพราะดูจาก ICMP time-exceed ที่ส่งกลับมา
4. เมื่อ packet ไปถึง destination ปรากฏว่า เมื่อ destination รับ packet เข้ามาเป็น udp port 33434 ซึ่ง destination ไม่ได้เปิด udp port 33434 นี้ ก็จะส่ง ICMP type port-unreachable กลับไปหา source ซึ่งจะทำให้ source รู้ว่า packet นี้กลับมาจาก destination จริงๆ
No comments:
Post a Comment