วันพฤหัสบดีที่ 24 กันยายน พ.ศ. 2558

ค่า TTL เมื่อคุณใช้คำสั่ง ping คืออะไร

มารู้จักกับค่า TTL (Time-to-Live)

ค่า TTL (Time To Live) นั้น เป็นค่าที่ใช้แสดงจำนวนฮ๊อป(Hop) ที่แพ็กเก็ตนั้นวิ่งผ่านในระบบ ว่าจะสามารถวิ่งผ่านได้ไม่เกินกี่ฮ๊อป ซึ่งถ้าจะพูดง่ายๆ ก็คือ มันจะวิ่งผ่านเร้าเตอร์ได้สูงสุดจำนวนกี่ตัว มันจะมีประโยชน์มากในการป้องกันลูปไม่ให้เกิดขึ้น หรือเกิดขึ้ีนเพียงชั่วขณะเท่านั้น
โดยที่ ในการส่งแต่ละครั้ง ถ้าหากผ่านเร้าเตอร์จำนวน 1 ตัว ค่า TTL จะลดลงครั้งละ 1 ซึ่งจะเป็นเช่นนี้ไปเรื่อยๆ เมื่อมีการผ่านอุปกรณ์ใน Layer3 จนกระทั่งถ้าหากค่า TTL นี้เป็น 0 Router ก็จะดรอปแพ็กเก็ตนั้นทิ้ง จากนั้นจะส่งข้อความ ICMP บอก Error ไปยังต้นทางที่ทำการส่งว่า Time-to-Live exceed (type 8 code 0) ซึ่งหมายความว่า ค่า TTL ได้เป็น 0 แล้ว
ซึ่งค่า TTL นี้ในการการเซ็ตเริ่มต้นก่อนทำการส่งจะแตกต่างกันแล้วแต่ระบบปฎิบัติการ (OS) ได้แก่
ค่า TTL เริ่มต้นจะเท่ากับ 128 สำหรับ OS ของ Microsoft Window
ค่า TTL เ้ริ่มต้นจะเท่ากับ 64 สำหรับ OS ของ Unix
ค่า TTL เริ่่มต้นจะเท่ากับ 255 สำหรับ อุปกรณ์เร้าเตอร์ *แต่ทั้งนี้ขึ้นอยู่กับการเซ็ตค่าของแต่ละอุปกรณ์ด้วย
เช่นถ้าหากเราทำการเล่น web ผ่าน http ไปยังเว็บ google ซึ่งเครื่องเราใช้ MS XP ทาง TCP/IP Stack จะทำการตั้งค่า TTL เป็น 128 โดยอัตโนมัติไปหาปลายทาง ซึ่งเมื่อไปยัง web server ของ google ก็จะตอบกลับเริ่มต้นที่ TTL มีค่าเป็น 64 จนมาถึงต้นทางที่ทำการร้องขอ
ทั้งนี้ทั้งนั้นอาจจะผ่าน proxy หรือ server คนละตัวกันได้ อาจทำให้ค่า TTL ที่ได้ต่างกัน
เช่น ถ้าเรา ping google.com >> TTL เริ่มต้นจะเท่ากับ 64
ถ้าเรา ping www.google.com >> TTL เริ่มต้นจะเท่ากับ 255
จากการที่ค่า TTL ทำการลดค่าลงทีละ 1 จะสามารถป้องกันแพ็กเก็ตอยู่ในระบบเป็นเวลานานได้ (loop)
นอกจากนี้ค่า TTL ยังมีส่วนเกี่ยวข้องกับโปรแกรมอื่นๆ ด้วย อาทิเช่น ping , trace route เป็นต้น
การ ping (Packet INternet Group) ค่า TTL จะลดลงครั้งละ 1 จากเริ่มต้น
การ trace route ค่า TTL จะเริ่มต้นที่ 0 แล้วเพิ่มครั้งละ 1 เพื่อหาจำนวน Hop จากต้นทางไปยังปลายทาง

เวลาใช้คำสั่งปิง นอกจากค่า time แล้ว จะมีค่า ttl ที่จะมีค่าแตกต่างกัน ในแต่ละ IP ที่เราปิงไป

เช่น  ping 192.168.200.1

Pinging 192.168.200.1 with 32 bytes of data:

Reply from 192.168.200.1: bytes=32 time<1ms TTL=64
Reply from 192.168.200.1: bytes=32 time<1ms TTL=64
Reply from 192.168.200.1: bytes=32 time<1ms TTL=64
Reply from 192.168.200.1: bytes=32 time<1ms TTL=64

Ping statistics for 192.168.200.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
-----------------------------------------------------------------------------------------------------------

ค่า TTL หรือ Time To Live จะมีค่าลดลงทีละ 1 เมื่อผ่าน Gateway หรือ Router ในแต่ละ Network

โดยค่า TTL จะมีค่าเริ่มต้นที่  64 , 128  หรือ 256 ขึ้นอยู่กับอุปกรณ์ปลายทาง โดยที่

TTL 64 จะเป็น ระบบ Linux หรือ Router ขนาดเล็กๆ
TTL 128 เป็น OS พวก X86 เช่น Windows ต่างๆ
TTL 256 เป็น Router ขนาดกลาง และ ใหญ่ 

เช่นถ้าเราปิง 203.144.244.1

Pinging 203.144.244.1 with 32 bytes of data:

Reply from 203.144.244.1: bytes=32 time=57ms TTL=245
Reply from 203.144.244.1: bytes=32 time=54ms TTL=245
Reply from 203.144.244.1: bytes=32 time=54ms TTL=245
Reply from 203.144.244.1: bytes=32 time=53ms TTL=245

Ping statistics for 203.144.244.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 53ms, Maximum = 57ms, Average = 54ms

TTL=245 แสดงว่า มีการผ่าน เครือข่ายทั้งหมด 256-245 = 11 ช่วงเครือข่าย  เป็นต้น

เช่นตัวอย่าง กรณีโดนยิง MAC หรือโดนปลอม MAC เกิดอาการไ่ม่สามารถ Remote เข้า Server ได้

ทำการทดสอบปิง IP ของ Server จากปกติ ได้ TTL=64   แต่กลับกลายเป็น TTL=128

แสดงว่า โดนปลอม MAC แล้วครับ ถ้าใครมีอาการแปลกๆ ลองตรวจเช็คดูนะครับ

ที่มา
SONYBOND Blog's http://sonybond4u.blogspot.com/
http://www.hadyaiinternet.com/