แนวคิดทั่วไป
TTL (Time To Live) เป็นฟิลด์ในส่วนหัว IP (Internet Protocol) ที่ใช้เพื่อจำกัดอายุการใช้งานของแพ็กเก็ตข้อมูลบนเครือข่าย TTL ถูกกำหนดให้เป็นจำนวนฮอปสูงสุดที่แพ็กเก็ตสามารถทำได้ก่อนที่จะถูกทิ้ง
แต่ละครั้งที่มีการส่งแพ็กเก็ตผ่านเราเตอร์ เราเตอร์จะลดค่า TTL ในส่วนหัว IP ลงหนึ่งค่า หากค่า TTL ถึงศูนย์ แพ็กเก็ตจะถูกยกเลิกและข้อความแสดงข้อผิดพลาด "Time Exceeded" ของ ICMP (Internet Control Message Protocol) จะถูกส่งไปยังผู้ส่ง ข้อความแสดงข้อผิดพลาด ICMP จะมีข้อมูลเกี่ยวกับเราเตอร์ที่แพ็กเก็ตถูกละทิ้งและเวลาไปกลับของแพ็กเก็ต
หน้าที่หลักของ TTL คือการป้องกันไม่ให้แพ็กเก็ตหมุนเวียนบนเครือข่ายอย่างไม่มีกำหนด หากแพ็กเก็ตมี TTL ที่สูงมาก แพ็กเก็ตอาจยังคงหมุนเวียนบนเครือข่ายต่อไปเป็นระยะเวลาไม่จำกัด ซึ่งอาจทำให้เกิดความแออัดของเครือข่ายและปัญหาด้านประสิทธิภาพได้
ตัวอย่างการใช้งานจริงของการดำเนินการ TTL
สมมติว่าโฮสต์ A ต้องการส่งแพ็กเก็ตข้อมูลไปยังโฮสต์ B และมีเราเตอร์ระดับกลางหลายตัวบนเส้นทางระหว่าง A และ B โฮสต์ A ตั้งค่า TTL เริ่มต้นในส่วนหัว IP ของแพ็กเก็ต ซึ่งเท่ากับ จำนวนฮ็อพที่กำหนด แพ็กเก็ตคาดว่าจะเคลื่อนที่ก่อนถึงโฮสต์ B
เมื่อแพ็กเก็ตมาถึงเราเตอร์ตัวแรกบนเส้นทาง เราเตอร์จะอ่านค่า TTL ในส่วนหัว IP ของแพ็กเก็ตและลดค่าลงทีละค่า หากค่า TTL ถึงศูนย์ เราเตอร์จะทิ้งแพ็กเก็ตและส่งข้อความแสดงข้อผิดพลาด “Time Exceeded” ของ ICMP ไปยังโฮสต์ A หากค่า TTL มากกว่าศูนย์ เราเตอร์จะส่งต่อแพ็กเก็ตไปยังเราเตอร์ถัดไปในเครือข่าย เส้นทาง
กระบวนการนี้จะดำเนินต่อไปจนกว่าแพ็กเก็ตจะไปถึงโฮสต์ B หรือจนกว่าค่า TTL จะเป็นศูนย์ หากแพ็กเก็ตมาถึงโฮสต์ B โฮสต์ B จะส่งคืนการตอบรับไปยังโฮสต์ A หากค่า TTL ถึงศูนย์ แพ็กเก็ตจะถูกละทิ้งและข้อความแสดงข้อผิดพลาด "Time Exceeded" ของ ICMP จะถูกส่งไปยังโฮสต์ A
ตัวอย่างคำสั่งใน Linux
บนระบบ Linux คำสั่งในการปรับค่า TTL คือ ttl
. ตัวอย่างเช่น หากต้องการส่งแพ็กเก็ตที่มีค่า TTL 64 จากโฮสต์บน Linux ไปยังโฮสต์ที่มีที่อยู่ IP 192.168.1.2
คุณสามารถใช้คำสั่งต่อไปนี้:
ping -c 1 -t 64 192.168.1.2
ในคำสั่งนี้ -c 1
ระบุว่าจะส่งแพ็กเก็ตเดียวและ -t 64
ระบุว่าค่า TTL จะเป็น 64 คำสั่ง ping
ส่งแพ็กเก็ต ICMP (Internet Control Message Protocol) ไปยังที่อยู่ IP ที่ระบุและรอการตอบกลับจากโฮสต์ระยะไกล
หากโฮสต์ระยะไกลตอบสนอง ข้อความที่คล้ายกันนี้จะปรากฏขึ้น:
64 bytes from 192.168.1.2: icmp_seq=1 ttl=63 time=1.23 ms
ในข้อความนี้ ttl=63
บ่งชี้ว่าค่า TTL ลดลงหนึ่งค่าที่เราเตอร์ตัวแรกบนเส้นทางก่อนถึงโฮสต์ระยะไกล
หากค่า TTL ต่ำเกินไป เช่น หากตั้งค่าเป็น 1 แพ็กเก็ตอาจไม่สามารถเข้าถึงโฮสต์ระยะไกล แต่ข้อความ "เกินเวลา" จะถูกส่งไปยังโฮสต์ต้นทางแทน
เรียกสั้นๆว่า คำสั่ง ping
บน Linux สามารถใช้เพื่อส่งแพ็กเก็ตที่มีค่า TTL ที่ระบุและติดตามจำนวนฮ็อพในเส้นทางของแพ็กเก็ตบนเครือข่าย สิ่งนี้มีประโยชน์สำหรับการแก้ไขปัญหาเครือข่ายและการเพิ่มประสิทธิภาพ
TTL สามารถใช้กับ Windows ได้หรือไม่?
ได้ คุณยังสามารถปรับค่า TTL บนระบบ Windows ได้อีกด้วย คำสั่งที่ใช้ใน Windows เพื่อปรับค่า TTL คือ ping
. เช่นเดียวกับใน Linux คำสั่ง ping
ใช้เพื่อส่งแพ็กเก็ตไปยังโฮสต์ระยะไกล และคุณสามารถปรับค่า TTL ได้โดยใช้ตัวเลือก -i
.
ตัวอย่างเช่น หากต้องการส่งแพ็กเก็ตที่มีค่า TTL 64 จากโฮสต์บน Windows ไปยังโฮสต์ที่มีที่อยู่ IP 192.168.1.2
คุณสามารถใช้คำสั่งต่อไปนี้:
ping 192.168.1.2 -i 64
ในคำสั่งนี้ -i 64
ระบุว่าค่า TTL จะเป็น 64 หากโฮสต์ระยะไกลตอบสนอง ข้อความที่คล้ายกับข้อความนี้จะปรากฏขึ้น:
Reply from 192.168.1.2: bytes=32 time=1ms TTL=63
ในข้อความนี้ TTL=63
บ่งชี้ว่าค่า TTL ลดลงหนึ่งค่าที่เราเตอร์ตัวแรกบนเส้นทางก่อนถึงโฮสต์ระยะไกล
เรียกสั้นๆว่า คำสั่ง ping
บน Windows ยังสามารถใช้เพื่อส่งแพ็กเก็ตที่มีค่า TTL ที่ระบุและติดตามจำนวนฮ็อพในเส้นทางของแพ็กเก็ตบนเครือข่าย สิ่งนี้มีประโยชน์สำหรับการแก้ไขปัญหาเครือข่ายและการเพิ่มประสิทธิภาพ